/* * Copyright (c) 2006-2020, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2020-09-29 liuya the first version */ #ifndef APPLICATIONS_VKLINK_H_ #define APPLICATIONS_VKLINK_H_ #ifdef __cplusplus extern "C" { #endif #include #include #define VKLINK_MSG_HEAD 0XFE /* vklink 消息帧头 */ #define VKLINK_MSG_PAYLOAD_MAX_LEN 255 /* 消息 buffer 最大字节长度 */ /*-------------------------- vklink 消息结构体 -----------------*/ typedef enum { VKLINK_RX_HEAD = 0, VKLINK_RX_PAYLOAD_LEN, VKLINK_RX_SEQ, VKLINK_RX_SYSID, VKLINK_RX_COMPID, VKLINK_RX_MSGID, VKLINK_RX_PAYLOAD, VKLINK_RX_CHECK_LOW, VKLINK_RX_CHECK_HIGH, } VKlink_Msg_Rx_Stage; typedef struct { /* 传输消息数据结构 */ uint8_t head; uint8_t payload_len; uint8_t seq; uint8_t sysid; uint8_t compid; uint8_t msgid; uint8_t payload[VKLINK_MSG_PAYLOAD_MAX_LEN]; uint16_t crc16_check; /* 消息接收阶段 */ VKlink_Msg_Rx_Stage rx_stage; /* payload 段接收索引 */ uint16_t payload_rx_index; } VKlink_Msg_Type; int VKlink_ParseChar(VKlink_Msg_Type *msg, uint8_t data); int vklink_msg_payload_put_data(VKlink_Msg_Type *msg, const void *pdata, uint8_t len); uint32_t VKlink_MsgTxFormat(const VKlink_Msg_Type *msg, uint8_t *pTxBuf); #ifdef __cplusplus } #endif #endif /* APPLICATIONS_VKLINK_H_ */