You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

198 lines
7.3 KiB

  1. #pragma once
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #define adwin_config_protocol_size sizeof(adwin_config_protocol_t)
  7. #define active_report_data_size sizeof(active_report_data_t)
  8. #define basic_report_data_size sizeof(basic_report_data_t)
  9. typedef enum
  10. {
  11. CMD_SET_AUTOMATIC_REPORTING_FREQUENCY = 0X01,
  12. CMD_GET_ENCODER_DATA = 0X02,
  13. CMD_SET_ACTIVE = 0X03,
  14. CMD_CLEAR_ENCODER = 0X04,
  15. } cmd_id_type;
  16. typedef enum
  17. {
  18. PROTOCOL_CMD_CLEAR_ENCODER = 0X01,
  19. PROTOCOL_CMD_READ_ENCODER = 0X02,
  20. PROTOCOL_CMD_ACTIVE = 0X03,
  21. PROTOCOL_CMD_TRIGGER_REPORT = 0X04,
  22. PROTOCOL_CMD_MODIFY_NETWORK_CONFIGURATIONS = 0X05,
  23. } protocol_pc_and_control_cmd_id_type;
  24. #pragma pack(push, 1)
  25. typedef struct
  26. {
  27. uint32_t fixed_bit_1; /* 固定位1:F0 00 20 00 */
  28. uint32_t time_stamp_s; /* 相对时间戳,上位机通知Xsync开始工作时,从0开始,每秒+1 */
  29. uint32_t fixed_bit_2; /* 固定位2:00 00 B0 42 */
  30. uint32_t server_version; /* server版本号 */
  31. uint32_t xilinx_version; /* Xilinx Version,看需求中固定为:41 61 F7 FF */
  32. uint8_t mac_address[6]; /* MAC地址 */
  33. uint16_t fixed_bit_3; /* 固定位3:00 00 */
  34. uint16_t fixed_bit_4; /* 固定位4:00 00 */
  35. uint8_t dhcp_enable; /* DHCP enable :0-False 1- TRUE */
  36. uint8_t netmask_count; /* netmask COUNT */
  37. uint32_t gateway_ip; /* 网关 */
  38. uint64_t fixed_bit_5; /* 固定位5:00 00 00 00 00 00 00 00 */
  39. uint64_t fixed_bit_6; /* 固定位6:00 00 00 00 00 00 00 00 */
  40. } adwin_config_protocol_t;
  41. typedef struct
  42. {
  43. uint16_t index; /* */
  44. uint16_t cmd_id; /* 指令id */
  45. uint32_t time_stamp_s; /* 时间戳 */
  46. uint32_t encoder_1_count; /* 编码器1计数 */
  47. uint32_t encoder_2_count; /* 编码器2计数 */
  48. uint8_t device_id; /* 设备ID号 */
  49. uint8_t checksum; /* 校验和 */
  50. } active_report_data_t;
  51. typedef struct
  52. {
  53. uint16_t index; /* */
  54. uint16_t cmd_id; /* 指令id */
  55. uint16_t data; /* 数据 */
  56. uint8_t checksum; /* 校验和 */
  57. } basic_report_data_t;
  58. typedef struct
  59. {
  60. uint16_t index; /* */
  61. uint16_t cmd_id; /* 指令id */
  62. uint8_t checksum; /* 校验和 */
  63. } get_encoder_report_t;
  64. typedef struct
  65. {
  66. uint16_t index; /* */
  67. uint16_t cmd_id; /* 指令id */
  68. uint32_t encoder1; /* 编码器1的数据 */
  69. uint32_t encoder2; /* 编码器2的数据 */
  70. uint8_t checksum; /* 校验和 */
  71. } get_encoder_respont_t;
  72. /***********************************************************************************************************************
  73. * ************************************************************************************************* *
  74. ***********************************************************************************************************************/
  75. typedef struct
  76. {
  77. uint16_t index; /* */
  78. uint16_t cmd_id; /* 指令id */
  79. uint8_t checksum; /* 校验和 */
  80. } protocol_clear_encoder_order_t;
  81. typedef struct
  82. {
  83. uint16_t index; /* */
  84. uint16_t cmd_id; /* 指令id */
  85. uint16_t status_code; /* 状态码 */
  86. uint8_t checksum; /* 校验和 */
  87. } protocol_clear_encoder_receipt_t;
  88. /***********************************************************************************************************************
  89. * ************************************************************************************************* *
  90. ***********************************************************************************************************************/
  91. typedef struct
  92. {
  93. uint16_t index; /* */
  94. uint16_t cmd_id; /* 指令id */
  95. uint8_t checksum; /* 校验和 */
  96. } protocol_read_encoder_order_t;
  97. typedef struct
  98. {
  99. uint16_t index; /* */
  100. uint16_t cmd_id; /* 指令id */
  101. int32_t encoder1; /* 编码器1的数据 */
  102. int32_t encoder2; /* 编码器2的数据 */
  103. uint8_t checksum; /* 校验和 */
  104. } protocol_read_encoder_receipt_t;
  105. /***********************************************************************************************************************
  106. * *************************************************************************************************** *
  107. ***********************************************************************************************************************/
  108. typedef struct
  109. {
  110. uint16_t index; /* */
  111. uint16_t cmd_id; /* 指令id */
  112. uint16_t active_report_flag; /* 是否开启上报*/
  113. uint16_t report_cycle; /* 上报周期 */
  114. uint8_t checksum; /* 校验和 */
  115. } protocol_active_order_t;
  116. typedef struct
  117. {
  118. uint16_t index; /* */
  119. uint16_t cmd_id; /* 指令id */
  120. uint16_t active_report_flag; /* 是否开启上报*/
  121. uint16_t report_cycle; /* 上报周期 */
  122. uint16_t status_code; /* 状态码 */
  123. uint8_t checksum; /* 校验和 */
  124. } protocol_active_receipt_t;
  125. /***********************************************************************************************************************
  126. * *********************************************************************************************** *
  127. ***********************************************************************************************************************/
  128. typedef struct
  129. {
  130. uint16_t index; /* */
  131. uint16_t cmd_id; /* 指令id */
  132. uint16_t trigger_mode; /* 触发上报模式*/
  133. uint8_t checksum; /* 校验和 */
  134. } protocol_trigger_order_t;
  135. typedef struct
  136. {
  137. uint16_t index; /* */
  138. uint16_t cmd_id; /* 指令id */
  139. uint16_t trigger_mode; /* 触发上报模式*/
  140. uint16_t status_code; /* 状态码 */
  141. uint8_t checksum; /* 校验和 */
  142. } protocol_trigger_receipt_t;
  143. /***********************************************************************************************************************
  144. * *************************************************************************************************** *
  145. ***********************************************************************************************************************/
  146. typedef struct
  147. {
  148. uint16_t index; /* */
  149. uint16_t cmd_id; /* 指令id */
  150. uint8_t configuration_option; /* 配置选项 */
  151. uint32_t data; /* 数据 */
  152. uint8_t checksum; /* 校验和 */
  153. } protocol_network_config_order_t;
  154. typedef struct
  155. {
  156. uint16_t index; /* */
  157. uint16_t cmd_id; /* 指令id */
  158. uint16_t status_code; /* 状态码 */
  159. uint8_t checksum; /* 校验和 */
  160. } protocol_network_config_receipt_t;
  161. /***********************************************************************************************************************
  162. * ********************************************************************************************* *
  163. ***********************************************************************************************************************/
  164. /* 指令ID为0XC003 */
  165. typedef struct
  166. {
  167. uint16_t index; /* */
  168. uint16_t cmd_id; /* 指令id */
  169. uint32_t placeholder_1; /* 占位符1 */
  170. uint32_t placeholder_2; /* 占位符2 */
  171. int32_t encoder1; /* 编码器1的数据 */
  172. int32_t encoder2; /* 编码器2的数据 */
  173. uint8_t checksum; /* 校验和 */
  174. } protocol_active_and_trigger_report_t;
  175. #pragma pack(pop)
  176. uint8_t computesum8(char *data, size_t size);