Fixed CRC calculation

This commit is contained in:
Thomas Basler 2022-07-30 12:50:07 +02:00
parent 0d26337575
commit c35f12c7be
2 changed files with 11 additions and 3 deletions

View File

@ -18,9 +18,7 @@ MultiDataCommand::MultiDataCommand(uint64_t target_address, uint64_t router_addr
_payload[22] = 0x00; // Password _payload[22] = 0x00; // Password
_payload[23] = 0x00; // Password _payload[23] = 0x00; // Password
uint16_t crc = crc16(&_payload[10], 14); // From data_type till password udpateCRC();
_payload[24] = (uint8_t)(crc >> 8);
_payload[25] = (uint8_t)(crc);
_payload_size = 26; _payload_size = 26;
} }
@ -28,6 +26,7 @@ MultiDataCommand::MultiDataCommand(uint64_t target_address, uint64_t router_addr
void MultiDataCommand::setDataType(uint8_t data_type) void MultiDataCommand::setDataType(uint8_t data_type)
{ {
_payload[10] = data_type; _payload[10] = data_type;
udpateCRC();
} }
uint8_t MultiDataCommand::getDataType() uint8_t MultiDataCommand::getDataType()
{ {
@ -40,6 +39,7 @@ void MultiDataCommand::setTime(time_t time)
_payload[13] = (uint8_t)(time >> 16); _payload[13] = (uint8_t)(time >> 16);
_payload[14] = (uint8_t)(time >> 8); _payload[14] = (uint8_t)(time >> 8);
_payload[15] = (uint8_t)(time); _payload[15] = (uint8_t)(time);
udpateCRC();
} }
time_t MultiDataCommand::getTime() time_t MultiDataCommand::getTime()
@ -49,3 +49,10 @@ time_t MultiDataCommand::getTime()
| (time_t)(_payload[14] << 8) | (time_t)(_payload[14] << 8)
| (time_t)(_payload[15]); | (time_t)(_payload[15]);
} }
void MultiDataCommand::udpateCRC()
{
uint16_t crc = crc16(&_payload[10], 14); // From data_type till password
_payload[24] = (uint8_t)(crc >> 8);
_payload[25] = (uint8_t)(crc);
}

View File

@ -13,4 +13,5 @@ public:
protected: protected:
void setDataType(uint8_t data_type); void setDataType(uint8_t data_type);
uint8_t getDataType(); uint8_t getDataType();
void udpateCRC();
}; };