add support for signals
split main into more files
This commit is contained in:
50
signal.cpp
Normal file
50
signal.cpp
Normal file
@ -0,0 +1,50 @@
|
||||
#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;
|
||||
}
|
Reference in New Issue
Block a user