#include "basic.h" // Calculate the CRC for transmitted and received data using // the CCITT 16bit algorithm (X^16 + X^12 + X^5 + 1). uint16_t crc16(uint8_t * buf, int len){ unsigned int crc=0xffff; for(int i=0;i> 8) | (crc << 8); crc ^= buf[i]; crc ^= (unsigned char)(crc & 0xff) >> 4; crc ^= (crc << 8) << 4; crc ^= ((crc & 0xff) << 4) << 1; }; return crc; }; /* Note: It is best not to alter this code. For example, (crc<<8)<<4 does not generate the same code as crc<<12. Although the result of the computation is the same, the latter generates much more code and executes slower. */