-
Notifications
You must be signed in to change notification settings - Fork 0
/
TPLDCC2.hxxx
40 lines (35 loc) · 844 Bytes
/
TPLDCC2.hxxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
struct DCCPacket {
int loco;
byte bits;
byte repeats;
byte data[10];
};
enum class POWERMODE { OFF, ON, OVERLOAD };
class TPLDCC2 {
public:
TPLDCC2(byte powerPin, byte signalPin,byte sensePin, bool isMainTrack);
void begin();
void setPowerMode(POWERMODE);
POWERMODE getPowerMode();
void checkPowerOverload();
bool interrupt1();
void interrupt2();
void schedulePacket(DCCPacket& packet);
volatile bool packetPending;
void mirror(TPLDCC2 otherTrack);
bool startAckProcess();
bool getAck();
private:
POWERMODE powerMode;
DCCPacket transmitPacket;
DCCPacket pendingPacket;
byte bits_sent;
byte state;
bool currentBit;
GPIO_pin_t directionPin;
GPIO_pin_t powerPin;
// current sampling
bool isMainTrack;
byte sensePin;
unsigned long nextSampleDue;
};