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.
174 lines
6.9 KiB
174 lines
6.9 KiB
#pragma once
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#define adwin_config_protocol_size sizeof(adwin_config_protocol_t)
|
|
#define active_report_data_size sizeof(active_report_data_t)
|
|
|
|
#define protocol_basic_size sizeof(protocol_basic_t)
|
|
|
|
typedef enum
|
|
{
|
|
PROTOCOL_CMD_CLEAR_ENCODER = 0X01,
|
|
PROTOCOL_CMD_READ_ENCODER = 0X02,
|
|
PROTOCOL_CMD_ACTIVE = 0X03,
|
|
PROTOCOL_CMD_TRIGGER = 0X04,
|
|
PROTOCOL_CMD_MODIFY_NETWORK_CONFIGURATIONS = 0X05,
|
|
} protocol_pc_and_control_cmd_id_type;
|
|
|
|
typedef enum
|
|
{
|
|
PROTOCOL_STATUS_SUCCESS = 0X00,
|
|
PROTOCOL_STATUS_PARAMETER_ERROR = 0X01,
|
|
PROTOCOL_STATUS_HARDWARE_ERROR = 0X02,
|
|
} protocol_status_code_type;
|
|
|
|
#pragma pack(push, 1)
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t fixed_bit_1; /* 固定位1:F0 00 20 00 */
|
|
uint32_t time_stamp_s; /* 相对时间戳,上位机通知Xsync开始工作时,从0开始,每秒+1 */
|
|
uint32_t fixed_bit_2; /* 固定位2:00 00 B0 42 */
|
|
uint32_t server_version; /* server版本号 */
|
|
uint32_t xilinx_version; /* Xilinx Version,看需求中固定为:41 61 F7 FF */
|
|
uint8_t mac_address[6]; /* MAC地址 */
|
|
uint16_t fixed_bit_3; /* 固定位3:00 00 */
|
|
uint16_t fixed_bit_4; /* 固定位4:00 00 */
|
|
uint8_t dhcp_enable; /* DHCP enable :0-False 1- TRUE */
|
|
uint8_t netmask_count; /* netmask COUNT */
|
|
uint32_t gateway_ip; /* 网关 */
|
|
uint64_t fixed_bit_5; /* 固定位5:00 00 00 00 00 00 00 00 */
|
|
uint64_t fixed_bit_6; /* 固定位6:00 00 00 00 00 00 00 00 */
|
|
} adwin_config_protocol_t;
|
|
|
|
/***********************************************************************************************************************
|
|
* *******************************************************basic******************************************************* *
|
|
***********************************************************************************************************************/
|
|
/* 为了拿指令id而出来的指令格式 */
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_basic_t;
|
|
|
|
/***********************************************************************************************************************
|
|
* ************************************************清除编码器数据指令************************************************* *
|
|
***********************************************************************************************************************/
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_clear_encoder_order_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint16_t status_code; /* 状态码 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_clear_encoder_receipt_t;
|
|
|
|
/***********************************************************************************************************************
|
|
* ************************************************读取编码器数据指令************************************************* *
|
|
***********************************************************************************************************************/
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_read_encoder_order_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
int32_t encoder1; /* 编码器1的数据 */
|
|
int32_t encoder2; /* 编码器2的数据 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_read_encoder_receipt_t;
|
|
|
|
/***********************************************************************************************************************
|
|
* *************************************************设置主动上报指令************************************************** *
|
|
***********************************************************************************************************************/
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint16_t active_report_flag; /* 是否开启上报*/
|
|
uint16_t report_cycle; /* 上报周期 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_active_order_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint16_t active_report_flag; /* 是否开启上报*/
|
|
uint16_t report_cycle; /* 上报周期 */
|
|
uint16_t status_code; /* 状态码 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_active_receipt_t;
|
|
|
|
/***********************************************************************************************************************
|
|
* ***********************************************设置触发上报模式指令************************************************ *
|
|
***********************************************************************************************************************/
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint16_t trigger_mode; /* 触发上报模式*/
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_trigger_order_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint16_t trigger_mode; /* 触发上报模式*/
|
|
uint16_t status_code; /* 状态码 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_trigger_receipt_t;
|
|
|
|
/***********************************************************************************************************************
|
|
* *************************************************网络相关配置指令************************************************** *
|
|
***********************************************************************************************************************/
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint8_t configuration_option; /* 配置选项 */
|
|
uint32_t data; /* 数据 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_modify_network_configurations_order_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint16_t status_code; /* 状态码 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_modify_network_configurations_receipt_t;
|
|
|
|
/***********************************************************************************************************************
|
|
* **********************************************主动上报指令的协议格式*********************************************** *
|
|
***********************************************************************************************************************/
|
|
/* 指令ID为0XC003 */
|
|
typedef struct
|
|
{
|
|
uint16_t index; /* */
|
|
uint16_t cmd_id; /* 指令id */
|
|
uint32_t placeholder_1; /* 占位符1 */
|
|
uint32_t placeholder_2; /* 占位符2 */
|
|
uint32_t encoder1; /* 编码器1的数据 */
|
|
uint32_t encoder2; /* 编码器2的数据 */
|
|
uint8_t checksum; /* 校验和 */
|
|
} protocol_active_and_trigger_report_t;
|
|
|
|
#pragma pack(pop)
|
|
|
|
uint8_t computesum8(char *data, size_t size);
|