+
+ inline static uint16_t calcCRC(uint8_t *bytes, uint16_t len) {
+ uint16_t crc = 0;
+ for(unsigned i = 0; i < len; i++) {
+ crc = SerialComm::byteCRC(bytes[i], crc);
+ }
+ return crc;
+ }
+
+ inline static uint16_t checkCrc(uint8_t *bytes, uint16_t count) {
+ bool crcOk = false;
+ if(count > 2) {
+ uint16_t crc = calcCRC(bytes, count - 2);
+ uint16_t packetCrc = (bytes[count-1] << 8) | bytes[count-2];
+ if(crc == packetCrc) crcOk = true;
+ }
+ return crcOk;
+ }