-static uint16_t modbus_serial_rtu_crc(uint16_t crc,
- const uint8_t *buffer, int len)
-{
- int i;
-
- if (!buffer || len < 0)
- return crc;
-
- while (len--) {
- crc ^= *buffer++;
- for (i = 0; i < 8; i++) {
- int carry = crc & 1;
- crc >>= 1;
- if (carry)
- crc ^= 0xA001;
- }
- }
- return crc;
-}
-