Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FastLED/FastLED.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'fastspi_nop.h')
-rw-r--r--fastspi_nop.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/fastspi_nop.h b/fastspi_nop.h
new file mode 100644
index 00000000..64cd5128
--- /dev/null
+++ b/fastspi_nop.h
@@ -0,0 +1,63 @@
+#ifndef __INC_FASTSPI_NOP_H
+#define __INC_FASTSPI_NOP_H
+
+// A nop/stub class, mostly to show the SPI methods that are needed/used by the various SPI chipset implementations. Should
+// be used as a definition for the set of methods that the spi implementation classes should use (since C++ doesn't support the
+// idea of interfaces - it's possible this could be done with virtual classes, need to decide if i want that overhead)
+template <uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint8_t _SPI_CLOCK_DIVIDER>
+class NOPSPIOutput {
+
+public:
+ NOPSPIOutput() { /* TODO */ }
+ NOPSPIOutput(Selectable *pSelect) { /* TODO */ }
+
+ // set the object representing the selectable
+ void setSelect(Selectable *pSelect) { /* TODO */ }
+
+ // initialize the SPI subssytem
+ void init() { /* TODO */ }
+
+ // latch the CS select
+ void select() { /* TODO */ }
+
+ // release the CS select
+ void release() { /* TODO */ }
+
+ // wait until all queued up data has been written
+ void waitFully();
+
+ // write a byte out via SPI (returns immediately on writing register)
+ void writeByte(uint8_t b) { /* TODO */ }
+ // write a word out via SPI (returns immediately on writing register)
+ void writeWord(uint16_t w) { /* TODO */ }
+
+ // A raw set of writing byte values, assumes setup/init/waiting done elsewhere (static for use by adjustment classes)
+ static void writeBytesValueRaw(uint8_t value, int len) { /* TODO */ }
+
+ // A full cycle of writing a value for len bytes, including select, release, and waiting
+ void writeBytesValue(uint8_t value, int len) { /* TODO */ }
+
+ // A full cycle of writing a raw block of data out, including select, release, and waiting
+ void writeBytes(uint8_t *data, int len) { /* TODO */ }
+
+ // write a single bit out, which bit from the passed in byte is determined by template parameter
+ template <uint8_t BIT> inline static void writeBit(uint8_t b) { /* TODO */ }
+
+ template <uint8_t SKIP, class D, EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register uint8_t scale) { /* TODO*/ }
+
+ // template instantiations for writeBytes 3
+ template <uint8_t SKIP, EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register uint8_t scale) {
+ writeBytes3<SKIP, DATA_NOP, RGB_ORDER>(data, len, scale);
+ }
+ template <class D, EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register uint8_t scale) {
+ writeBytes3<0, D, RGB_ORDER>(data, len, scale);
+ }
+ template <EOrder RGB_ORDER> void writeBytes3(register uint8_t *data, int len, register uint8_t scale) {
+ writeBytes3<0, DATA_NOP, RGB_ORDER>(data, len, scale);
+ }
+ void writeBytes3(register uint8_t *data, int len, register uint8_t scale) {
+ writeBytes3<0, DATA_NOP, RGB>(data, len, scale);
+
+};
+
+#endif \ No newline at end of file