#ifndef _PROTO_HSMS_H_ #define _PROTO_HSMS_H_ #include "main.h" #include "proto_Modbus.h" #define PROTO_HSMS_ENDIAN BIG_ENDIAN /*表示类型 PType*/ #define proto_HSMS_PTYPE_SECS2 0 /*SECS-II 编码格式*/ /*会话类型 SType*/ #define PROTO_HSMS_STYPE_Data_Message 0 /*数据消息*/ #define PROTO_HSMS_STYPE_Select_Req 1 /*选择请求*/ #define PROTO_HSMS_STYPE_Select_Rsq 2 /*选择响应*/ #define PROTO_HSMS_STYPE_Deselect_Req 3 /*取消选择请求*/ #define PROTO_HSMS_STYPE_Deselect_Rsq 4 /*取消选择响应*/ #define PROTO_HSMS_STYPE_Linktest_Req 5 /*连接测试请求*/ #define PROTO_HSMS_STYPE_Linktest_Rsp 6 /*连接测试响应*/ #define PROTO_HSMS_STYPE_Reject_Req 7 /*拒绝请求*/ #define PROTO_HSMS_STYPE_Separate_Req 9 /*断开请求*/ typedef struct { u32 Data_Len; /*字节长度*/ u16 Device_Id; /*会话/设备标识*/ union { struct { u8 Stream: 7; u8 Wait: 1; /*指令是否需要回复*/ }Analysis_Data; u8 ALL_Data; }Header_Byte2; u8 Header_Byte3; /*头部字节3*/ u8 PType; /*表示类型*/ u8 SType; /*会话类型*/ u32 Sys_Byte; /*系统字节:标记这次指令的ID,通常用于超时判断(响应时依据发送者指令的最后4字节作为回复,发送时生成不重复的4个字节)*/ }proto_HSMS_Header_Data_t; typedef struct { u16 Device_Id; /*会话/设备标识*/ }proto_HSMS_Flash_Data_t; typedef struct { proto_HSMS_Header_Data_t Rx_Header_Data; /*接收解析的头部数据*/ proto_HSMS_Header_Data_t Tx_Header_Data; /*发送时的头部数据*/ proto_HSMS_Flash_Data_t Flash_ConfigData; /*存入Flash的配置参数*/ void (*Init)(void); void (*Tx_RsqData)(proto_HSMS_Header_Data_t *,u8 *,u16 ,void *); }proto_HSMS_t; extern proto_HSMS_t HSMS; #endif