Files
MarklinController/signal.cpp
uvos ab2767af18 add support for signals
split main into more files
2022-02-12 00:39:26 +01:00

51 lines
762 B
C++

#include "signal.h"
Signal::Signal(uint8_t address, uint8_t subaddress, uint8_t type): Item(address), _subaddress(subaddress), _type(type)
{
}
void Signal::setState(uint8_t state)
{
_state = state;
sendData();
}
uint8_t Signal::getState()
{
return _state;
}
uint8_t Signal::getSubaddress()
{
return _subaddress;
}
uint16_t Signal::getPacket()
{
uint16_t data;
if(!(_type & 1))
{
data = _state | _subaddress << 6;
}
else
{
data = 0;
data |= ((_state == GO) << 9) | ((_state == GO) << 8);
for (uint8_t i = 0; i < 2; ++i)
{
uint8_t bit = (_subaddress & (1 << i)) >> i;
data |= (bit << (7-i*2)) | (bit << (6-i*2));
}
}
return data;
}
void Signal::sendData()
{
sendRaw(getPacket());
}
uint8_t Signal::getType()
{
return _type;
}