uint32_t Packet_Begin(Packet_t *pkt) { pkt->ofs = 6; /* sof(2) len(2) + crc(2) */ memset(&pkt->buf[0], 0, sizeof(pkt->buf)); pkt->buf[0] = 0x5A; /* header */ pkt->buf[1] = 0xA5; /* data packet */ return CH_OK; } uint32_t Packet_AddData(Packet_t *pkt, uint8_t *buf, uint16_t len) { /* add item content into buffer */ memcpy((pkt->buf + pkt->ofs), buf, len); pkt->ofs += len; return CH_OK; }
时间: 2024-02-29 14:56:42 浏览: 117
C实现与 uint64_t 相同功能的类
这两个函数都是用于构建自定义协议数据包的函数,Packet_Begin()函数用于初始化数据包的开始部分,Packet_AddData()函数用于将数据项添加到数据包缓冲区中。
Packet_Begin()函数中,首先将pkt->ofs的值设置为6,表示数据包的前6个字节是协议的起始标识符、长度和CRC校验位。然后使用memset()函数将pkt->buf缓冲区的前sizeof(pkt->buf)个字节都设为0,以便清除缓冲区中的旧数据。接着,将pkt->buf的前两个字节分别设为0x5A和0xA5,用于标识协议的起始部分。最后,返回CH_OK表示初始化数据包成功。
Packet_AddData()函数中,首先使用memcpy()函数将数据项buf中的len个字节添加到pkt->buf缓冲区中,从pkt->buf的第pkt->ofs个字节开始存储。然后将pkt->ofs的值加上len,以便指向下一个数据项应该添加到的位置。最后,返回CH_OK表示添加数据项成功。
这两个函数的作用是构建自定义协议数据包,以便进行数据通信。其中Packet_Begin()函数用于初始化数据包的起始部分,Packet_AddData()函数用于添加数据项到数据包缓冲区中。
阅读全文