psmodel.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. // 协议栈模型
  2. // 秒寻科技
  3. // zt 2024-08-31
  4. package psmodel
  5. /*********************************************************
  6. 网管数据来源
  7. **********************************************************/
  8. const (
  9. PS_SOURCE_CENTER = 0x00 // 监控中心
  10. PS_SOURCE_GUI = 0x01 // 本地网管
  11. PS_SOURCE_ALARM = 0x02 // 告警模块
  12. )
  13. /*********************************************************
  14. 定义AP层协议
  15. **********************************************************/
  16. //定义AP层协议头
  17. const (
  18. PS_FRAME_MIN_LEN = 17 //AP层最小帧长,协议框架17字节
  19. PS_FRAME_MCPA_PAYLOAD_LEN = 260 //MCPA,数据载荷256字节
  20. PS_FRAME_MCPB_PAYLOAD_LEN = 264 //MCPB,数据载荷256字节
  21. PS_FRAME_MAX_LEN = 562 // AP层最大帧长
  22. PS_MCP_A_DATA_LEN = 64 //MCP-A监控对象数据单元最大长度
  23. PS_MCP_B_DATA_LEN = 256 //MCP-B监控对象数据单元最大长度,帧号4个字节,数据256字节
  24. PS_AP_END_FLAG = 0x7E //开始标志符,小端模式
  25. )
  26. //AP头,4字节
  27. type AP_HEAD_T struct {
  28. StartFlag uint8 `json:"start_flag"`
  29. }
  30. /*********************************************************
  31. 定义VP层协议
  32. **********************************************************/
  33. //VP头,11个字节
  34. type VP_HEAD_T struct {
  35. ProjectID int `json:"project_id"` //项目编号,省市各1个字节,项目编号2个字节,以16进制大写字母表示
  36. PacketNo uint8 `json:"packet_no"` //通信包号,由发送端产生,接收端原值返回
  37. DeviceID int `json:"device_id"` // 设备编号
  38. VpFlag uint8 `json:"vp_flag"` // vp层交互标志
  39. McpType uint8 `json:"mcp_type"` // 监控应用层协议标识
  40. }
  41. //VP层交互标志
  42. const (
  43. VP_RESP = 0x01
  44. VP_CMMD = 0x80
  45. )
  46. /*********************************************************
  47. 定义MCP层协议
  48. **********************************************************/
  49. //MCP头,2个字节
  50. type MCP_HEAD_T struct {
  51. Comd uint8 // 命令单元
  52. Resp uint8 // 应答单元
  53. }
  54. //定义MCP 协议类型
  55. const (
  56. MCP_A = 0x01
  57. MCP_B = 0x02
  58. )
  59. //定义MCP-A命令单元
  60. const (
  61. MCP_A_REPORT = 0x01 // 告警上报
  62. MCP_A_QUERY = 0x02 // 查询命令
  63. MCP_A_CONFIGURE = 0x03 // 设置命令
  64. )
  65. //定义MCP-B命令单元
  66. const (
  67. MCP_B_CONTROL = 0x80 // 升级控制命令
  68. MCP_B_FILE_TRANSFER = 0x81 // 文件传输命令
  69. )
  70. //定义MCP应答单元
  71. const (
  72. MCP_RESP_SUCC = 0x01 // 表示命令执行成功
  73. MCP_RESP_ERR = 0x02 // 监控对象命令错误
  74. MCP_CMD = 0xFF // 表示该消息为命令
  75. )
  76. //MCP-A监控对象结构
  77. type LTV_T struct {
  78. Len uint16 `json:"len"` //监控对象长度
  79. Tag uint16 `json:"tag"` //监控对象标号
  80. AbyData [PS_MCP_A_DATA_LEN]uint8 `json:"aby_data"` //监控数据
  81. }
  82. //MCP-B监控对象结构,用于软件升级
  83. type LTV_B_T struct {
  84. Len uint16 `json:"len"` //监控对象长度
  85. Tag uint16 `json:"tag"` //监控对象标号
  86. AbyData [PS_MCP_B_DATA_LEN]uint8 `json:"aby_data"` //监控数据
  87. }
  88. /*********************************************************
  89. 定义协议栈
  90. **********************************************************/
  91. //协议头
  92. type PS_HEAD_T struct {
  93. StApHead AP_HEAD_T `json:"st_ap_head"` // AP协议头
  94. StVpHead VP_HEAD_T `json:"st_vp_head"` // VP标准协议头
  95. StMcpHead MCP_HEAD_T `json:"st_mcp_head"` // MCP协议头
  96. }
  97. //协议尾
  98. type PS_TAIL_T struct {
  99. Crc uint16 `json:"crc"` // CRC16校验值
  100. StopFlag uint8 `json:"stop_flag"` // 结束标识符号
  101. }