23 byte activeFlagsSent[4];
25 inline byte byteNumber(byte inFunctionNumber) {
return inFunctionNumber / 8; }
26 inline byte bitNumber(byte inFunctionNumber) {
return inFunctionNumber % 8; }
39 void activate(byte inFunctionNumber);
58 #ifdef DCCPP_DEBUG_MODE 62 void printActivated();
73 static bool programMode;
74 static bool panicStopped;
76 static bool setThrottle(
volatile RegisterList *inReg,
int nReg,
int inLocoId,
int inStepsNumber,
int inNewSpeed,
bool inForward);
78 static void writeCv(
volatile RegisterList *inReg,
int inCvId, byte inCvValue,
int callBack = 100,
int callBackSub = 200);
83 static byte ackThreshold;
93 #ifndef USE_ONLY1_INTERRUPT 100 static void beginMain(uint8_t inOptionalDirectionMotor, uint8_t inSignalPin, uint8_t inSignalEnablePin, uint8_t inCurrentMonitor);
107 static void beginProg(uint8_t inOptionalDirectionMotor, uint8_t inSignalPin, uint8_t inSignalEnablePin, uint8_t inCurrentMonitor);
109 #ifdef ARDUINO_ARCH_AVR 112 static inline void beginMainMotorShield() {
beginMain(MOTOR_SHIELD_DIRECTION_MOTOR_CHANNEL_PIN_A, DCC_SIGNAL_PIN_MAIN, MOTOR_SHIELD_SIGNAL_ENABLE_PIN_MAIN, MOTOR_SHIELD_CURRENT_MONITOR_PIN_MAIN); }
115 static inline void beginProgMotorShield() {
beginProg(MOTOR_SHIELD_DIRECTION_MOTOR_CHANNEL_PIN_B, DCC_SIGNAL_PIN_PROG, MOTOR_SHIELD_SIGNAL_ENABLE_PIN_PROG, MOTOR_SHIELD_CURRENT_MONITOR_PIN_PROG); }
119 static inline void beginMainPololu() {
beginMain(POLOLU_DIRECTION_MOTOR_CHANNEL_PIN_A, DCC_SIGNAL_PIN_MAIN, POLOLU_SIGNAL_ENABLE_PIN_MAIN, POLOLU_CURRENT_MONITOR_PIN_MAIN); }
122 static inline void beginProgPololu() {
beginProg(POLOLU_DIRECTION_MOTOR_CHANNEL_PIN_B, DCC_SIGNAL_PIN_PROG, POLOLU_SIGNAL_ENABLE_PIN_PROG, POLOLU_CURRENT_MONITOR_PIN_PROG); }
131 static void beginMain(uint8_t inSignalPin, uint8_t inSignalEnablePin, uint8_t inCurrentMonitor);
138 static void beginProg(uint8_t inSignalPin, uint8_t inSignalEnablePin, uint8_t inCurrentMonitor);
140 #ifdef ARDUINO_ARCH_AVR 143 static inline void beginMainMotorShield() {
beginMain(DCC_SIGNAL_PIN_MAIN, MOTOR_SHIELD_SIGNAL_ENABLE_PIN_MAIN, MOTOR_SHIELD_CURRENT_MONITOR_PIN_MAIN); }
146 static inline void beginProgMotorShield() {
beginProg(DCC_SIGNAL_PIN_PROG, MOTOR_SHIELD_SIGNAL_ENABLE_PIN_PROG, MOTOR_SHIELD_CURRENT_MONITOR_PIN_PROG); }
150 static inline void beginMainPololu() {
beginMain(DCC_SIGNAL_PIN_MAIN, POLOLU_SIGNAL_ENABLE_PIN_MAIN, POLOLU_CURRENT_MONITOR_PIN_MAIN); }
153 static inline void beginProgPololu() {
beginProg(DCC_SIGNAL_PIN_PROG, POLOLU_SIGNAL_ENABLE_PIN_PROG, POLOLU_CURRENT_MONITOR_PIN_PROG); }
177 static void beginEthernet(uint8_t *inMac, uint8_t *inIp, EthernetProtocol inProtocol = EthernetProtocol::TCP);
201 static void powerOn(
bool inMain =
true,
bool inProg =
true);
207 static void powerOff(
bool inMain =
true,
bool inProg =
true);
244 static inline bool setSpeedMain(
int nReg,
int inLocoId,
int inStepsNumber,
int inNewSpeed,
bool inForward) {
return setThrottle(&(mainRegs), nReg, inLocoId, inStepsNumber, inNewSpeed, inForward); }
258 static inline int readCvMain(
int inCvId,
int callBack = 100,
int callBackSub = 200) {
return mainRegs.readCVmain(inCvId, callBack, callBackSub); }
267 static inline void writeCvMain(
int inCvId, byte inValue,
int callBack = 100,
int callBackSub = 200) { writeCv(&(mainRegs), inCvId, inValue, callBack, callBackSub); }
285 static inline bool setSpeedProg(
int nReg,
int inLocoId,
int inStepsNumber,
int inNewSpeed,
bool inForward) {
return setThrottle(&(progRegs), nReg, inLocoId, inStepsNumber, inNewSpeed, inForward); }
299 static inline int readCvProg(
int inCvId,
int callBack = 100,
int callBackSub = 200) {
return progRegs.readCV(inCvId, callBack, callBackSub); }
307 static inline void writeCvProg(
int inCvId, byte inValue,
int callBack = 100,
int callBackSub = 200) { writeCv(&(progRegs), inCvId, inValue, callBack, callBackSub); }
323 static void setAccessory(
int inAddress, byte inSubAddress, byte inActivate);
327 #ifdef DCCPP_DEBUG_MODE 333 static void CheckPowerConnectionsWithLeds(uint8_t aDirPin,
unsigned int inDelay);
336 #ifdef DCCPP_PRINT_DCCPP 338 #define PRINT_DCCPP DCCpp::showConfiguration(); 342 static void showConfiguration();
static void setAccessory(int inAddress, byte inSubAddress, byte inActivate)
static void setFunctionsProg(int nReg, int inLocoId, FunctionsState &inStates)
static void writeCvProg(int inCvId, byte inValue, int callBack=100, int callBackSub=200)
static int identifyLocoIdProg()
static bool setSpeedProg(int nReg, int inLocoId, int inStepsNumber, int inNewSpeed, bool inForward)
static bool setSpeedMain(int nReg, int inLocoId, int inStepsNumber, int inNewSpeed, bool inForward)
void inactivate(byte inFunctionNumber)
static float getCurrentProg()
bool isActivated(byte inFunctionNumber)
static void beginMain(uint8_t inOptionalDirectionMotor, uint8_t inSignalPin, uint8_t inSignalEnablePin, uint8_t inCurrentMonitor)
static void setCurrentSampleMaxProg(float inMax)
bool isActivationChanged(byte inFunctionNumber)
static void powerOn(bool inMain=true, bool inProg=true)
static int readCvMain(int inCvId, int callBack=100, int callBackSub=200)
static int readCvProg(int inCvId, int callBack=100, int callBackSub=200)
static void beginProg(uint8_t inOptionalDirectionMotor, uint8_t inSignalPin, uint8_t inSignalEnablePin, uint8_t inCurrentMonitor)
static void beginMainDccSignal(uint8_t inSignalPin)
static void setDebugDccMode()
static bool IsMainTrack(volatile RegisterList *apRegs)
static byte setAckThreshold(byte inNewValue)
static void powerOff(bool inMain=true, bool inProg=true)
static void panicStop(bool inStop)
static void setCurrentSampleMaxMain(float inMax)
void activate(byte inFunctionNumber)
static float getCurrentMain()
static int identifyLocoIdMain()
static void writeCvMain(int inCvId, byte inValue, int callBack=100, int callBackSub=200)
static void beginProgDccSignal(uint8_t inSignalPin)
static void setFunctionsMain(int nReg, int inLocoId, FunctionsState &inStates)