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.

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