/**
* @brief 和校验函数
* @param data 数据包指针
* len 数据包长度
* @return uint16_t 校验码
*/
static uint16_t checksum(uchar *data,uint len)
{
uint32_t sum = 0;
uint16_t checksum;
uint16_t *word = (uint16_t*)data;
for(;len > 1;len -= 2)
{
sum += *word;
++word;
}
sum += len ? *(uint8_t*)word : 0;
sum = (sum >> 16) + (sum & 0xffff);
sum += (sum >> 16);
/* 结果取反并截低16 位为校验和 */
return checksum = ~sum;
}
和校验函数
最新推荐文章于 2023-08-02 17:09:26 发布