vklink.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) 2006-2020, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2020-09-29 liuya the first version
  9. */
  10. #ifndef APPLICATIONS_VKLINK_H_
  11. #define APPLICATIONS_VKLINK_H_
  12. #ifdef __cplusplus
  13. extern "C"
  14. {
  15. #endif
  16. #include <stdbool.h>
  17. #include <stdint.h>
  18. #define VKLINK_MSG_HEAD 0XFE /* vklink 消息帧头 */
  19. #define VKLINK_MSG_PAYLOAD_MAX_LEN 255 /* 消息 buffer 最大字节长度 */
  20. /*-------------------------- vklink 消息结构体 -----------------*/
  21. typedef enum
  22. {
  23. VKLINK_RX_HEAD = 0,
  24. VKLINK_RX_PAYLOAD_LEN,
  25. VKLINK_RX_SEQ,
  26. VKLINK_RX_SYSID,
  27. VKLINK_RX_COMPID,
  28. VKLINK_RX_MSGID,
  29. VKLINK_RX_PAYLOAD,
  30. VKLINK_RX_CHECK_LOW,
  31. VKLINK_RX_CHECK_HIGH,
  32. } VKlink_Msg_Rx_Stage;
  33. typedef struct
  34. {
  35. /* 传输消息数据结构 */
  36. uint8_t head;
  37. uint8_t payload_len;
  38. uint8_t seq;
  39. uint8_t sysid;
  40. uint8_t compid;
  41. uint8_t msgid;
  42. uint8_t payload[VKLINK_MSG_PAYLOAD_MAX_LEN];
  43. uint16_t crc16_check;
  44. /* 消息接收阶段 */
  45. VKlink_Msg_Rx_Stage rx_stage;
  46. /* payload 段接收索引 */
  47. uint16_t payload_rx_index;
  48. } VKlink_Msg_Type;
  49. int VKlink_ParseChar(VKlink_Msg_Type *msg, uint8_t data);
  50. int vklink_msg_payload_put_data(VKlink_Msg_Type *msg, const void *pdata,
  51. uint8_t len);
  52. uint32_t VKlink_MsgTxFormat(const VKlink_Msg_Type *msg, uint8_t *pTxBuf);
  53. #ifdef __cplusplus
  54. }
  55. #endif
  56. #endif /* APPLICATIONS_VKLINK_H_ */