ipc.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. package protocol
  2. import (
  3. "time"
  4. )
  5. type PTZMoveInfo struct {
  6. ProfileToken string `json:"profiletoken,omitempty"`
  7. Direction uint8 `json:"direction"` //0:停止移动;1:向左边;2:向右边;3:向上;4:向下;5:缩小;6:放大
  8. Speed uint8 `json:"speed"` //操控数据,0到255
  9. }
  10. type Pack_PTZMoveInfo struct {
  11. Header
  12. Data PTZMoveInfo `json:"data"`
  13. }
  14. func (o *Pack_PTZMoveInfo) EnCode(id, gid, profiletoken string, seq uint64, direction, speed uint8) (string, error) {
  15. o.SetHeaderData(id, gid, seq)
  16. o.Data.ProfileToken = profiletoken
  17. o.Data.Direction = direction
  18. o.Data.Speed = speed
  19. return json.MarshalToString(o)
  20. }
  21. func (o *Pack_PTZMoveInfo) DeCode(message string) error {
  22. return json.UnmarshalFromString(message, o)
  23. }
  24. type PTZCommonInfo struct {
  25. ProfileToken string `json:"profiletoken,omitempty"`
  26. PresetToken string `json:"presettoken,omitempty"`
  27. PresetName string `json:"presetname,omitempty"`
  28. Flag int `json:"flag"` //0:获取所有有效的预置点,1:设置预置点,2:删除预置点,3:跳转到预置点,4:设置home点,5:跳转到home点,6:获取所有预置点
  29. }
  30. type Pack_PTZCommonInfo struct {
  31. Header
  32. Data PTZCommonInfo `json:"data"`
  33. }
  34. func (o *Pack_PTZCommonInfo) EnCode(id, gid, profiletoken, presettoken, presetname string, seq uint64, flag int) (string, error) {
  35. o.SetHeaderData(id, gid, seq)
  36. o.Data.ProfileToken = profiletoken
  37. o.Data.PresetToken = presettoken
  38. o.Data.PresetName = presetname
  39. o.Data.Flag = flag
  40. return json.MarshalToString(o)
  41. }
  42. func (o *Pack_PTZCommonInfo) DeCode(message string) error {
  43. return json.UnmarshalFromString(message, o)
  44. }
  45. type MediaCommonInfo struct {
  46. ProfileToken string `json:"profiletoken,omitempty"`
  47. Flag int `json:"flag"` //0:抓图;1:推流; 2:停止推流;3:录mp4
  48. }
  49. type Pack_MediaCommonInfo struct {
  50. Header
  51. Data MediaCommonInfo `json:"data"`
  52. }
  53. func (o *Pack_MediaCommonInfo) EnCode(id, gid, profiletoken string, seq uint64, flag int) (string, error) {
  54. o.SetHeaderData(id, gid, seq)
  55. o.Data.ProfileToken = profiletoken
  56. o.Data.Flag = flag
  57. return json.MarshalToString(o)
  58. }
  59. func (o *Pack_MediaCommonInfo) DeCode(message string) error {
  60. return json.UnmarshalFromString(message, o)
  61. }
  62. //ONVIF设备告警
  63. type OnvifAlarmInfo struct {
  64. AlarmTopic string `json:"alarmtopic"` //告警主题
  65. Time string `json:"time"` //时间
  66. Source map[string]string `json:"source,omitempty"` //告警来源
  67. Key map[string]string `json:"key,omitempty"` //告警key
  68. Data map[string]string `json:"data,omitempty"` //告警数据
  69. }
  70. type OnvifAlarm struct {
  71. Alarm OnvifAlarmInfo `json:"alarm"`
  72. }
  73. type Pack_OnvifAlarm struct {
  74. Header
  75. Data OnvifAlarm `json:"data"`
  76. }
  77. func (o *Pack_OnvifAlarm) EnCode(id, gid string, seq uint64, ca *OnvifAlarmInfo) (string, error) {
  78. o.SetHeaderData(id, gid, seq)
  79. o.Data.Alarm = *ca
  80. return json.MarshalToString(o)
  81. }
  82. func (o *Pack_OnvifAlarm) DeCode(message string) error {
  83. return json.UnmarshalFromString(message, o)
  84. }
  85. //ONVIF设备基本信息上报
  86. type Pack_OnvifDev struct {
  87. Header
  88. Data []OnvifDev `json:"data"`
  89. }
  90. func (o *Pack_OnvifDev) EnCode(gid string, seq uint64, onvifdevs []OnvifDev) (string, error) {
  91. o.SetHeaderData(gid, gid, seq)
  92. o.Data = onvifdevs
  93. return json.MarshalToString(o)
  94. }
  95. func (o *Pack_OnvifDev) DeCode(message string) error {
  96. return json.UnmarshalFromString(message, o)
  97. }
  98. //获取所有预置位信息
  99. type PresetInfo struct {
  100. Token string `json:"token"`
  101. Name string `json:"name"`
  102. X float32 `json:"x"`
  103. Y float32 `json:"y"`
  104. Z float32 `json:"z"`
  105. }
  106. type PresetInfos struct {
  107. StateError
  108. Flag int `json:"flag"`
  109. Presets []PresetInfo `json:"presets"`
  110. }
  111. type Pack_PresetInfo struct {
  112. Header
  113. Data PresetInfos `json:"data"`
  114. }
  115. func (o *Pack_PresetInfo) EnCode(id, gid string, seq uint64, err error, flag int, presets []PresetInfo) (string, error) {
  116. o.SetHeaderData(id, gid, seq)
  117. o.Data.SetStateErrorData(err)
  118. o.Data.Flag = flag
  119. o.Data.Presets = presets
  120. return json.MarshalToString(o)
  121. }
  122. func (o *Pack_PresetInfo) DeCode(message string) error {
  123. return json.UnmarshalFromString(message, o)
  124. }
  125. //设置预置点
  126. type IPCSetPresetACK struct {
  127. StateError
  128. Token string `json:"presettoken,omitempty"` //预置点token
  129. Name string `json:"presetname,omitempty"` //预置点token
  130. X float32 `json:"x"` //预置点x
  131. Y float32 `json:"y"` //预置点y
  132. Z float32 `json:"z"` //预置点z
  133. File string `json:"file,omitempty"` //预置点快照图片文件名
  134. }
  135. type Pack_IPCSetPresetACK struct {
  136. Header
  137. Data IPCSetPresetACK `json:"data"`
  138. }
  139. func (o *Pack_IPCSetPresetACK) EnCode(id, gid, presettoken, name, file string, x, y, z float32, seq uint64, err error) (string, error) {
  140. o.SetHeaderData(id, gid, seq)
  141. o.Data.SetStateErrorData(err)
  142. o.Data.Token = presettoken
  143. o.Data.Name = name
  144. o.Data.File = file
  145. o.Data.X = x
  146. o.Data.Y = y
  147. o.Data.Z = z
  148. return json.MarshalToString(o)
  149. }
  150. func (o *Pack_IPCSetPresetACK) DeCode(message string) error {
  151. return json.UnmarshalFromString(message, o)
  152. }
  153. type IPCCommonACK struct {
  154. StateError
  155. Token string `json:"presettoken,omitempty"` //预置点token
  156. }
  157. type Pack_IPCCommonACK struct {
  158. Header
  159. Data IPCCommonACK `json:"data"`
  160. }
  161. func (o *Pack_IPCCommonACK) EnCode(id, gid, presettoken string, seq uint64, err error) (string, error) {
  162. o.SetHeaderData(id, gid, seq)
  163. o.Data.SetStateErrorData(err)
  164. o.Data.Token = presettoken
  165. return json.MarshalToString(o)
  166. }
  167. func (o *Pack_IPCCommonACK) DeCode(message string) error {
  168. return json.UnmarshalFromString(message, o)
  169. }
  170. type IPCCtrlComm struct {
  171. Flag int `json:"flag"` //0:重启,1:同步时间
  172. }
  173. type Pack_IPCCtrlComm struct {
  174. Header
  175. Data IPCCtrlComm `json:"data"`
  176. }
  177. func (o *Pack_IPCCtrlComm) EnCode(id, gid string, seq uint64, flag int) (string, error) {
  178. o.SetHeaderData(id, gid, seq)
  179. o.Data.Flag = flag
  180. return json.MarshalToString(o)
  181. }
  182. func (o *Pack_IPCCtrlComm) DeCode(message string) error {
  183. return json.UnmarshalFromString(message, o)
  184. }
  185. type IPCState struct {
  186. Time string `json:"time"`
  187. State uint8 `json:"state"` //0 在线,1离线
  188. }
  189. type Pack_IPCState struct {
  190. Header
  191. Data IPCState `json:"data"`
  192. }
  193. func (o *Pack_IPCState) EnCode(id, gid string, seq uint64, changetime time.Time, state uint8) (string, error) {
  194. o.SetHeaderData(id, gid, seq)
  195. o.Data.Time = changetime.Format("2006-01-02 15:04:05")
  196. o.Data.State = state
  197. return json.MarshalToString(o)
  198. }
  199. func (o *Pack_IPCState) DeCode(message string) error {
  200. return json.UnmarshalFromString(message, o)
  201. }