64 lines
1.8 KiB
C
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
|