40 lines
670 B
C++
40 lines
670 B
C++
#include "turnout.h"
|
|
|
|
Turnout::Turnout(uint8_t address, uint8_t subaddress): Item(address), _subaddress(subaddress)
|
|
{
|
|
}
|
|
|
|
void Turnout::setDirection(uint8_t direction)
|
|
{
|
|
_direction = direction;
|
|
if(!directSendBlock)
|
|
sendData();
|
|
}
|
|
|
|
uint8_t Turnout::getDirection()
|
|
{
|
|
return _direction;
|
|
}
|
|
|
|
uint8_t Turnout::getSubaddress()
|
|
{
|
|
return _subaddress;
|
|
}
|
|
|
|
uint16_t Turnout::getPacket()
|
|
{
|
|
uint16_t data = 0;
|
|
data |= (_direction << 9) | (_direction << 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 Turnout::sendData(bool single)
|
|
{
|
|
sendRaw(getPacket(), single);
|
|
}
|