2 #ifndef __dccCommander_H__ 3 #define __dccCommander_H__ 8 #ifndef NO_DCCCOMMANDER 10 #include <DCC_Decoder.hpp> 13 #define DccCommander DccCommanderClass::GetCurrent() 17 typedef void(*DccAccDecoderPacket)(
int address,
boolean activate, uint8_t data);
20 #define DCCID(id) ((id) % 10000) 21 #define DCCACTIVATION(id) ((uint8_t)((id) / 10000)) 22 #define DCCINT(id, acc) ((acc) * 10000UL + (id)) 76 unsigned long LastDccId;
77 boolean UseRawDccAddresses;
78 static DccAccDecoderPacket func_AccPacket;
79 static DccCommanderClass *pDccCommander;
83 inline DccCommanderClass() :
Commander() {}
93 void begin(
int i,
int j,
int k,
boolean inInterruptMonitor =
false,
boolean inUseRawDccAddresses =
false);
101 static void SetAccessoryDecoderPacketHandler(DccAccDecoderPacket func);
107 static void DccAccessoryDecoderPacket(
int address,
boolean activate, uint8_t data);
109 inline unsigned long GetLastDccId() {
return this->LastDccId; }
115 static inline DccCommanderClass &GetCurrent()
117 if (pDccCommander == NULL)
118 pDccCommander =
new DccCommanderClass();
120 return *(DccCommanderClass::pDccCommander);
123 #ifdef COMMANDERS_DEBUG_MODE 129 #define PRINT_EVENT_DCC(id, type, data) DccCommander::printEvent(id, type, data); 131 #define PRINT_EVENT_DCC(id, type, data) 133 #ifdef COMMANDERS_PRINT_COMMANDERS 140 void printCommander();
virtual unsigned long loop()
virtual void PriorityLoop()