#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; if(!directSendBlock) 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(bool single) { sendRaw(getPacket(), single); } uint8_t Signal::getType() { return _type; }