26#if defined(SUPPORT_OutputProtocol_FireGod) || defined(SUPPORT_OutputProtocol_DMX) || defined(SUPPORT_OutputProtocol_Serial) || defined(SUPPORT_OutputProtocol_Renard)
34 virtual ~c_OutputSerial ();
37 virtual void Begin ();
38 virtual bool SetConfig (ArduinoJson::JsonObject & jsonConfig);
39 virtual void GetConfig (ArduinoJson::JsonObject & jsonConfig);
41 virtual void GetStatus (ArduinoJson::JsonObject & jsonStatus);
48 bool IRAM_ATTR ISR_GetNextIntensityToSend(uint32_t &DataToSend);
49 bool IRAM_ATTR ISR_MoreDataToSend() {
return (SerialFrameState_t::SerialIdle != SerialFrameState); }
52 void SetFrameDurration();
54#define GS_CHANNEL_LIMIT 2048
65 uint32_t CurrentBaudrate = uint32_t(BaudRate::BR_DEF);
68 const uint32_t DMX_BREAK_US = uint32_t(((1.0 /
float(BaudRate::BR_DMX)) * 23.0) *
float(
MicroSecondsInASecond));
69 const uint32_t DMX_MAB_US = uint32_t(((1.0 /
float(BaudRate::BR_DMX)) * 3.0) *
float(
MicroSecondsInASecond));
70 uint32_t InterFrameGapInMicroSec = DMX_BREAK_US + DMX_MAB_US;
74 const uint32_t MAX_HDR_SIZE = 10;
75 const uint32_t MAX_FOOTER_SIZE = 10;
76 const uint32_t MAX_CHANNELS = 1024;
77 const uint16_t DEFAULT_NUM_CHANNELS = 64;
78 const uint32_t BUF_SIZE = (MAX_CHANNELS + MAX_HDR_SIZE + MAX_FOOTER_SIZE);
79 const uint32_t DMX_BITS_PER_BYTE = (1.0 + 8.0 + 2.0);
80 const uint32_t DMX_MaxFrameSize = 512;
82 uint32_t Num_Channels = DEFAULT_NUM_CHANNELS;
84 uint8_t* NextIntensityToSend =
nullptr;
85 uint32_t intensity_count = 0;
86 uint32_t SentIntensityCount = 0;
88 float IntensityBitTimeInUs = 0.0;
89 uint32_t NumBitsPerIntensity = 1 + 8 + 2;
91 char GenericSerialHeader[65];
92 uint32_t SerialHeaderSize = 0;
93 uint32_t SerialHeaderIndex = 0;
95 char GenericSerialFooter[65];
96 uint32_t SerialFooterSize = 0;
97 uint32_t SerialFooterIndex = 0;
99 uint16_t FireGodCurrentController = 0;
100 uint8_t FireGodBytesInFrameCount = 0;
101 const uint8_t FireGodNumMaxControllers = 4;
102 const uint8_t FireGodNumChanPerController = 32;
104#ifdef USE_SERIAL_DEBUG_COUNTERS
105 uint32_t IntensityBytesSent = 0;
106 uint32_t IntensityBytesSentLastFrame = 0;
107 uint32_t FrameStartCounter = 0;
108 uint32_t FrameEndCounter = 0;
109 uint32_t AbortFrameCounter = 0;
110 uint32_t LastDataSent = 0;
111 uint32_t DmxFrameStart = 0;
112 uint32_t DmxSendData = 0;
113 uint32_t Serialidle = 0;
114#define SERIAL_DEBUG_COUNTER(p) p
118#define SERIAL_DEBUG_COUNTER(p)
124 enum RenardFrameDefinitions_t
126 CMD_DATA_START = 0x80,
128 FRAME_START_CHAR = 0x7E,
129 FRAME_PAD_CHAR = 0x7D,
130 ESCAPED_OFFSET = 0x4E,
131 MIN_VAL_TO_ESC = FRAME_PAD_CHAR,
132 MAX_VAL_TO_ESC = ESC_CHAR
135 enum FireGodFrameDefinitions_t
142 enum SerialFrameState_t
147 RenardSendEscapedData,
154 FireGodSendControllerId,
159 SerialFrameState_t SerialFrameState = SerialIdle;
#define MicroSecondsInASecond
Definition ESPixelStick.h:57
Definition OutputCommon.hpp:32
virtual void GetDriverName(String &sDriverName)=0
get the name for the instantiated driver
virtual void Begin()
set up the operating environment based on the current config (or defaults)
Definition OutputCommon.hpp:41
virtual uint32_t GetNumOutputBufferChannelsServiced()=0
uint32_t OutputBufferSize
Definition OutputCommon.hpp:77
virtual void GetStatus(ArduinoJson::JsonObject &jsonStatus)=0
virtual uint32_t GetNumOutputBufferBytesNeeded()=0
virtual bool SetConfig(ArduinoJson::JsonObject &jsonConfig)
Set a new config in the driver.
Definition OutputCommon.cpp:78
virtual void GetConfig(ArduinoJson::JsonObject &jsonConfig)
Get the current config used by the driver.
Definition OutputCommon.cpp:95
virtual void SetOutputBufferSize(uint32_t NewOutputBufferSize)
Definition OutputCommon.hpp:57
e_OutputProtocolType
Definition OutputMgr.hpp:78
Definition OutputMgrPortDefs.hpp:90