10 #pragma message ("Commanders : No DCC commander !") 13 DCC_Decoder DCC_Decoder::DCCInstance;
16 DccAccDecoderPacket DccCommanderClass::func_AccPacket;
25 int realAddress = address;
27 #ifdef COMMANDERS_DEBUG_MODE 28 #ifdef COMMANDERS_DEBUG_VERBOSE_MODE 29 Serial.print(F(
"Dcc packet found : real data : "));
30 Serial.print(realAddress);
31 Serial.print(F(
" / "));
32 Serial.print(data, DEC);
33 Serial.print(F(
" / "));
34 Serial.print(activate, DEC);
38 if (!DccCommander.UseRawDccAddresses)
43 realAddress += (data & 0x06) >> 1;
47 #ifdef COMMANDERS_DEBUG_MODE 48 #ifdef COMMANDERS_DEBUG_VERBOSE_MODE 49 Serial.print(F(
" converted : "));
50 Serial.print(realAddress);
51 Serial.print(F(
" / "));
52 Serial.print(data, DEC);
53 Serial.print(F(
" / "));
54 Serial.println(activate, DEC);
65 if (activate ==
false)
67 #ifdef COMMANDERS_DEBUG_MODE 68 Serial.print(F(
"DccCommander packet received :"));
69 Serial.print(realAddress);
70 Serial.print(F(
" / "));
71 Serial.println(data, DEC);
73 if (DccCommanderClass::func_AccPacket)
74 (DccCommanderClass::func_AccPacket)(realAddress, activate, data);
79 DccCommander.LastDccId = DCCINT(realAddress, data);
84 #ifdef COMMANDERS_DEBUG_MODE 85 #define CHECK(val, text) CheckIndex(val, F(text)) 87 #define CHECK(val, text) 91 void StatusBlink_handler()
99 DCC.beginDecoder(i, j, k);
100 this->UseRawDccAddresses = inUseRawDccAddresses;
104 pinMode(k, OUTPUT_INTERRUPT);
110 if (inInterruptMonitor)
111 DCC.SetInterruptMonitor(StatusBlink_handler);
113 #ifdef COMMANDERS_PRINT_COMMANDERS 124 #ifdef COMMANDERS_DEBUG_MODE 125 #ifdef COMMANDERS_DEBUG_VERBOSE_MODE 126 static int countLoop = 0;
130 static unsigned long start = 0;
132 #define ELAPSEDTIME ((unsigned long) -2) 140 #ifdef COMMANDERS_DEBUG_MODE 141 #ifdef COMMANDERS_DEBUG_VERBOSE_MODE 160 unsigned long last = this->LastDccId;
175 DccCommanderClass::func_AccPacket = func;
178 #ifdef COMMANDERS_DEBUG_MODE 181 Serial.print(F(
"DCC Commander event : Address : "));
182 Serial.print(DCCID(inId), DEC);
183 Serial.print(F(
" / "));
184 Serial.print(DCCACTIVATION(inId), DEC);
185 Serial.print(F(
" / "));
191 Serial.print(F(
"MOVE "));
209 Serial.print(F(
"MOVEPOSITION : "));
210 Serial.println(inEventData, DEC);
213 Serial.println(F(
"MOVEPOSITIONID"));
216 Serial.print(F(
"MOVEPOSITIONINDEX : "));
217 Serial.println(inEventData, DEC);
220 Serial.print(F(
"CONFIG : "));
221 Serial.print(COMMANDERSCONFIGADDRESS(inEventData), DEC);
222 Serial.print(F(
" / "));
223 Serial.println(COMMANDERSCONFIGVALUE(inEventData), DEC);
229 #ifdef COMMANDERS_PRINT_COMMANDERS 232 Serial.print(F(
"Commander: DccCommander - Interrupt: "));
233 Serial.println(this->Interrupt);
static void printEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEventType, int inEventData)
static void SetLastEventData(int inData)
static void SetLastEventType(COMMANDERS_EVENT_TYPE inEvent)
static void SetAccessoryDecoderPacketHandler(DccAccDecoderPacket func)
void begin(int i, int j, int k, boolean inInterruptMonitor = false, boolean inUseRawDccAddresses = false)
static GPIO_pin_t StatusLedPin
static unsigned long RaiseEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEvent = COMMANDERS_EVENT_MOVEPOSITIONID, int inData = 0)
static void DccAccessoryDecoderPacket(int address, boolean activate, uint8_t data)