Files
secs2-bootloader/usr/protocol/proto_HSMS.h
T

64 lines
1.8 KiB
C

#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