added crc convenience functio

This commit is contained in:
Thies Lennart Alff 2025-02-20 21:07:00 +01:00
parent 7193fcc684
commit fc3af22d1a
Signed by: lennartalff
GPG key ID: 4EC67D34D594104D

View file

@ -145,6 +145,16 @@ static inline uint16_t crc_xmodem_calculate(const uint8_t *data, uint8_t length)
return crc; return crc;
} }
static inline uint16_t hydrolink_calculate_crc(const uint8_t *payload, uint8_t length, uint8_t crc_extra) {
uint16_t crc;
crc_xmodem_init(&crc);
for(int i = 0; i < length; ++i) {
crc_xmodem_accumulate(payload[i], &crc);
}
crc_xmodem_accumulate(crc_extra, &crc);
return crc;
}
void hydrolink_fill_header_and_crc(hydrolink_msg_t *msg, uint8_t msg_id, uint8_t payload_length, uint8_t dst_id, uint8_t src_id, uint8_t crc_extra) { void hydrolink_fill_header_and_crc(hydrolink_msg_t *msg, uint8_t msg_id, uint8_t payload_length, uint8_t dst_id, uint8_t src_id, uint8_t crc_extra) {
msg->id = msg_id; msg->id = msg_id;
msg->payload_length = payload_length; msg->payload_length = payload_length;