123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // 协议栈模型
- // 秒寻科技
- // zt 2024-08-31
- package psmodel
- /*********************************************************
- 网管数据来源
- **********************************************************/
- const (
- PS_SOURCE_CENTER = 0x00 // 监控中心
- PS_SOURCE_GUI = 0x01 // 本地网管
- PS_SOURCE_ALARM = 0x02 // 告警模块
- )
- /*********************************************************
- 定义AP层协议
- **********************************************************/
- //定义AP层协议头
- const (
- PS_FRAME_MIN_LEN = 17 //AP层最小帧长,协议框架17字节
- PS_FRAME_MCPA_PAYLOAD_LEN = 260 //MCPA,数据载荷256字节
- PS_FRAME_MCPB_PAYLOAD_LEN = 264 //MCPB,数据载荷256字节
- PS_FRAME_MAX_LEN = 562 // AP层最大帧长
- PS_MCP_A_DATA_LEN = 64 //MCP-A监控对象数据单元最大长度
- PS_MCP_B_DATA_LEN = 256 //MCP-B监控对象数据单元最大长度,帧号4个字节,数据256字节
- PS_AP_END_FLAG = 0x7E //开始标志符,小端模式
- )
- //AP头,4字节
- type AP_HEAD_T struct {
- StartFlag uint8 `json:"start_flag"`
- }
- /*********************************************************
- 定义VP层协议
- **********************************************************/
- //VP头,11个字节
- type VP_HEAD_T struct {
- ProjectID int `json:"project_id"` //项目编号,省市各1个字节,项目编号2个字节,以16进制大写字母表示
- PacketNo uint8 `json:"packet_no"` //通信包号,由发送端产生,接收端原值返回
- DeviceID int `json:"device_id"` // 设备编号
- VpFlag uint8 `json:"vp_flag"` // vp层交互标志
- McpType uint8 `json:"mcp_type"` // 监控应用层协议标识
- }
- //VP层交互标志
- const (
- VP_RESP = 0x01
- VP_CMMD = 0x80
- )
- /*********************************************************
- 定义MCP层协议
- **********************************************************/
- //MCP头,2个字节
- type MCP_HEAD_T struct {
- Comd uint8 // 命令单元
- Resp uint8 // 应答单元
- }
- //定义MCP 协议类型
- const (
- MCP_A = 0x01
- MCP_B = 0x02
- )
- //定义MCP-A命令单元
- const (
- MCP_A_REPORT = 0x01 // 告警上报
- MCP_A_QUERY = 0x02 // 查询命令
- MCP_A_CONFIGURE = 0x03 // 设置命令
- )
- //定义MCP-B命令单元
- const (
- MCP_B_CONTROL = 0x80 // 升级控制命令
- MCP_B_FILE_TRANSFER = 0x81 // 文件传输命令
- )
- //定义MCP应答单元
- const (
- MCP_RESP_SUCC = 0x01 // 表示命令执行成功
- MCP_RESP_ERR = 0x02 // 监控对象命令错误
- MCP_CMD = 0xFF // 表示该消息为命令
- )
- //MCP-A监控对象结构
- type LTV_T struct {
- Len uint16 `json:"len"` //监控对象长度
- Tag uint16 `json:"tag"` //监控对象标号
- AbyData [PS_MCP_A_DATA_LEN]uint8 `json:"aby_data"` //监控数据
- }
- //MCP-B监控对象结构,用于软件升级
- type LTV_B_T struct {
- Len uint16 `json:"len"` //监控对象长度
- Tag uint16 `json:"tag"` //监控对象标号
- AbyData [PS_MCP_B_DATA_LEN]uint8 `json:"aby_data"` //监控数据
- }
- /*********************************************************
- 定义协议栈
- **********************************************************/
- //协议头
- type PS_HEAD_T struct {
- StApHead AP_HEAD_T `json:"st_ap_head"` // AP协议头
- StVpHead VP_HEAD_T `json:"st_vp_head"` // VP标准协议头
- StMcpHead MCP_HEAD_T `json:"st_mcp_head"` // MCP协议头
- }
- //协议尾
- type PS_TAIL_T struct {
- Crc uint16 `json:"crc"` // CRC16校验值
- StopFlag uint8 `json:"stop_flag"` // 结束标识符号
- }
|