26#ifdef ARDUINO_ARCH_ESP32
29#include <driver/spi_master.h>
31#if defined(SUPPORT_OutputProtocol_GRINCH)
40 virtual ~c_OutputSpi ();
44#if defined(SUPPORT_OutputProtocol_GRINCH)
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;
62#define SPI_SPI_MASTER_FREQ_1M (APB_CLK_FREQ/80)
63#define SPI_NUM_TRANSACTIONS 2
64#define SPI_NUM_INTENSITY_PER_TRANSACTION 128
65#define SPI_BITS_PER_INTENSITY 8
66#define SPI_SPI_HOST DEFAULT_SPI_DEVICE
67#define SPI_SPI_DMA_CHANNEL 2
69 bool ISR_MoreDataToSend();
70 bool ISR_GetNextIntensityToSend(uint32_t& Data);
73 uint8_t NumIntensityValuesPerInterrupt = 0;
74 uint8_t NumIntensityBitsPerInterrupt = 0;
75 spi_device_handle_t spi_device_handle = 0;
78 uint32_t SendIntensityDataCounter = 0;
82 byte * TransactionBuffers[SPI_NUM_TRANSACTIONS];
83 spi_transaction_t Transactions[SPI_NUM_TRANSACTIONS];
84 uint8_t NextTransactionToFill = 0;
85 TaskHandle_t SendIntensityDataTaskHandle = NULL;
87#ifndef DEFAULT_SPI_CS_GPIO
88# define DEFAULT_SPI_CS_GPIO gpio_num_t(-1)
92#if defined(SUPPORT_OutputProtocol_GRINCH)
93 c_OutputGrinch * OutputGrinch =
nullptr;
96#ifndef HasBeenInitialized
97 bool HasBeenInitialized =
false;
const CN_PROGMEM char CN_OutputSpi[]
Definition ConstNames.cpp:165
Definition OutputPixel.hpp:28
void GetDriverName(String &Name)
Definition main.cpp:121
void GetConfig(JsonObject &json)
Definition main.cpp:499
void SetConfig(const char *DataString)
Definition main.cpp:321
Definition OutputMgrPortDefs.hpp:90