26#ifdef SUPPORT_SPI_OUTPUT
29#include <driver/spi_master.h>
31#if defined(SUPPORT_OutputType_GRINCH)
40 virtual ~c_OutputSpi ();
44#if defined(SUPPORT_OutputType_GRINCH)
45 void Begin (c_OutputGrinch* _OutputSerial);
48 TaskHandle_t GetTaskHandle () {
return SendIntensityDataTaskHandle; }
50 void DataOutputTask (
void* pvParameters);
51 void SendIntensityData ();
52 bool SetConfig (ArduinoJson::JsonObject & jsonConfig);
53 void GetConfig (ArduinoJson::JsonObject & jsonConfig);
55 uint32_t DataTaskcounter = 0;
56 uint32_t DataCbCounter = 0;
60#define SPI_SPI_MASTER_FREQ_1M (APB_CLK_FREQ/80)
61#define SPI_NUM_TRANSACTIONS 2
62#define SPI_NUM_INTENSITY_PER_TRANSACTION 128
63#define SPI_BITS_PER_INTENSITY 8
64#define SPI_SPI_HOST DEFAULT_SPI_DEVICE
65#define SPI_SPI_DMA_CHANNEL 2
67 bool ISR_MoreDataToSend();
68 bool ISR_GetNextIntensityToSend(uint32_t& Data);
71 uint8_t NumIntensityValuesPerInterrupt = 0;
72 uint8_t NumIntensityBitsPerInterrupt = 0;
73 spi_device_handle_t spi_device_handle = 0;
76 uint32_t SendIntensityDataCounter = 0;
80 byte * TransactionBuffers[SPI_NUM_TRANSACTIONS];
81 spi_transaction_t Transactions[SPI_NUM_TRANSACTIONS];
82 uint8_t NextTransactionToFill = 0;
83 TaskHandle_t SendIntensityDataTaskHandle = NULL;
85#ifndef DEFAULT_SPI_CS_GPIO
86# define DEFAULT_SPI_CS_GPIO gpio_num_t(-1)
94#if defined(SUPPORT_OutputType_GRINCH)
95 c_OutputGrinch * OutputGrinch =
nullptr;
98#ifndef HasBeenInitialized
99 bool HasBeenInitialized =
false;
const CN_PROGMEM char CN_OutputSpi[]
Definition ConstNames.cpp:153
#define DEFAULT_SPI_CLOCK_GPIO
Definition GPIO_Defs_ESP32_BreakDanceV2.hpp:30
#define DEFAULT_SPI_CS_GPIO
Definition GPIO_Defs_ESP32_BreakDanceV2.hpp:31
#define DEFAULT_SPI_DATA_GPIO
Definition GPIO_Defs_ESP32_BreakDanceV2.hpp:29
Definition OutputPixel.hpp:28
void GetDriverName(String &Name)
Definition main.cpp:115
void GetConfig(JsonObject &json)
Definition main.cpp:440
void SetConfig(const char *DataString)
Definition main.cpp:286