#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() { sendRaw(getPacket()); }