// 协议栈模型 // 秒寻科技 // 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"` // 结束标识符号 }