HCEHomeAlarm.h 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. #ifndef _HC_EHOME_ALARM_H_
  2. #define _HC_EHOME_ALARM_H_
  3. #include "HCEHomePublic.h"
  4. //报警
  5. #define EHOME_ALARM_UNKNOWN 0 //未知报警类型
  6. #define EHOME_ALARM 1 //Ehome基本报警
  7. #define EHOME_ALARM_HEATMAP_REPORT 2 //热度图报告
  8. #define EHOME_ALARM_FACESNAP_REPORT 3 //人脸抓拍报告
  9. #define EHOME_ALARM_GPS 4 //GPS信息上传
  10. #define EHOME_ALARM_CID_REPORT 5 //报警主机CID告警上传
  11. #define EHOME_ALARM_NOTICE_PICURL 6 //图片URL上报
  12. #define EHOME_ALARM_NOTIFY_FAIL 7 //异步失败通知
  13. #define EHOME_ALARM_SELFDEFINE 9 //自定义报警上传
  14. #define EHOME_ALARM_DEVICE_NETSWITCH_REPORT 10 //设备网络切换上传
  15. #define EHOME_ALARM_ACS 11 //门禁事件上报
  16. #define EHOME_ALARM_WIRELESS_INFO 12 //无线网络信息上传
  17. #define EHOME_ISAPI_ALARM 13 //ISAPI报警上传
  18. #define EHOME_INFO_RELEASE_PRIVATE 14 //为了兼容信息发布产品的私有EHome协议报警(不再维护)
  19. #define MAX_TIME_LEN 32 //时间字符串长度
  20. #define MAX_REMARK_LEN 64 //报警备注长度
  21. #define MAX_URL_LEN 512 //URL长度
  22. #define CID_DES_LEN 32 //CID报警描述长度
  23. #define MAX_FILE_PATH_LEN 256
  24. #define MAX_UUID_LEN 64 //最大UUID长度
  25. #define CID_DES_LEN_EX 256 //CID报警描述长度扩展
  26. typedef enum
  27. {
  28. ALARM_TYPE_DISK_FULL = 0, //0-硬盘满
  29. ALARM_TYPE_DISK_WRERROR, //1-读写硬盘出错
  30. ALARM_TYPE_VIDEO_LOST = 5, //5-视频(信号)丢失*/
  31. ALARM_TYPE_EXTERNAL, //6-外部(信号量)报警
  32. ALARM_TYPE_VIDEO_COVERED, //7-视频遮盖
  33. ALARM_TYPE_MOTION, //8-移动侦测
  34. ALARM_TYPE_STANDARD_NOTMATCH, //9-制式不匹配
  35. ALARM_TYPE_SPEEDLIMIT_EXCEED, //10-超速
  36. ALARM_TYPE_PIR, //11-PIR报警
  37. ALARM_TYPE_WIRELESS, //12-无线报警
  38. ALARM_TYPE_CALL_HELP, //13-呼救报警
  39. ALARM_TYPE_DISARM, //14-布撤防报警
  40. ALARM_TYPE_STREAM_PRIVATE, //15-码流隐私状态改变通知
  41. ALARM_TYPE_PIC_UPLOAD_FAIL, //16-设备上传图片失败
  42. ALARM_TYPE_LOCAL_REC_EXCEPTION, //17-设备本地录像(抓图)异常
  43. ALARM_TYPE_UPGRADE_FAIL, //18-设备版本升级失败
  44. ALARM_TYPE_ILLEGAL_ACCESS, //19-非法访问
  45. ALARM_TYPE_SOUNDLIMIT_EXCEED = 80, //80-声音分贝数超标
  46. ALARM_TYPE_TRIFFIC_VIOLATION = 90, //90-违章报警
  47. ALARM_TYPE_ALARM_CONTROL, //91-布控报警
  48. ALARM_TYPE_FACE_DETECTION = 97, //97-人脸侦测
  49. ALARM_TYPE_DEFOUSE_DETECTION, //98-虚焦侦测
  50. ALARM_TYPE_AUDIO_EXCEPTION, //99-音频异常侦测
  51. ALARM_TYPE_SCENE_CHANGE, //100-场景变更报警
  52. ALARM_TYPE_TRAVERSE_PLANE, //101-穿越警戒面(越界侦测)
  53. ALARM_TYPE_ENTER_AREA, //102-目标进入区域
  54. ALARM_TYPE_LEAVE_AREA, //103-目标离开区域
  55. ALARM_TYPE_INTRUSION, //104-周界入侵(区域入侵)
  56. ALARM_TYPE_LOITER, //105-徘徊
  57. ALARM_TYPE_LEFT_TAKE, //106-物品遗留拿取
  58. ALARM_TYPE_CAR_STOP, //107-停车
  59. ALARM_TYPE_MOVE_FAST, //108-快速运动
  60. ALARM_TYPE_HIGH_DENSITY, //109-人员聚集
  61. ALARM_TYPE_PDC_BY_TIME, //110-人流量按时间段统计上报
  62. ALARM_TYPE_PDC_BY_FRAME, //111-人流量单帧统计上报
  63. ALARM_TYPE_LEFT, //112-物品遗留
  64. ALARM_TYPE_TAKE, //113-物品拿取
  65. ALARM_TYPE_ROLLOVER, //114-侧翻
  66. ALARM_TYPE_COLLISION, //115-碰撞
  67. ALARM_TYPE_FLOW_OVERRUN =256, //256-流量超限报警
  68. ALARM_TYPE_WARN_FLOW_OVERRUN, //257-流量超限提醒
  69. ALARM_TYPE_DEV_CHANGED_STATUS = 700, //700-设备状态改变报警上传
  70. ALARM_TYPE_CHAN_CHANGED_STATUS, //701-通道状态改变报警上报
  71. ALARM_TYPE_HD_CHANGED_STATUS, //702-磁盘状态改变报警上报
  72. ALARM_TYPE_DEV_TIMING_STATUS, //703-定时上报设备状态信息
  73. ALARM_TYPE_CHAN_TIMING_STATUS, //704-定时上报通道状态信息
  74. ALARM_TYPE_HD_TIMING_STATUS, //705-定时上报磁盘状态信息
  75. ALARM_TYPE_RECORD_ABNORMAL, //706-录像异常,当前时间点本来应该是在执行录像的,结果因为异常原因导致设备无法正常录像。
  76. ALARM_TYPE_ENV_LIMIT = 8800, //8800-动环环境量超限报警
  77. ALARM_TYPE_ENV_REAL_TIME, //8801-动环环境量实时数据上报
  78. ALARM_TYPE_ENV_EXCEPTION, //8802-动环异常上报
  79. ALARM_TYPE_HIGH_TEMP = 40961, //40961-设备温度过高报警
  80. ALARM_TYPE_ACC_EXCEPTION, //40962-设备加速度异常报警
  81. }EN_ALARM_TYPE;
  82. /*
  83. dwAlarmType dwAlarmAction dwVideoChannel dwAlarmInChannel dwDiskNumber byRemark
  84. ALARM_TYPE_DISK_FULL 0-报警开始 1-报警结束 N/A N/A 硬盘号 N/A
  85. ALARM_TYPE_DISK_WRERROR 0-报警开始 1-报警结束 N/A N/A 硬盘号 N/A
  86. ALARM_TYPE_VIDEO_LOST 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  87. ALARM_TYPE_EXTERNAL 0-报警开始 1-报警结束 N/A 报警输入号 N/A N/A
  88. ALARM_TYPE_VIDEO_COVERED 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  89. ALARM_TYPE_MOTION 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  90. ALARM_TYPE_STANDARD_NOTMATCH 0-报警开始 1-报警结束 N/A N/A N/A N/A
  91. ALARM_TYPE_SPEEDLIMIT_EXCEED 0-报警开始 1-报警结束 限速值 当前速度 N/A N/A
  92. ALARM_TYPE_PIR 0-报警开始 1-报警结束 报警器编号 N/A N/A N/A
  93. ALARM_TYPE_WIRELESS 0-报警开始 1-报警结束 N/A 无线报警器编号 N/A N/A
  94. ALARM_TYPE_CALL_HELP 0-报警开始 1-报警结束 报警器编号 N/A N/A N/A
  95. ALARM_TYPE_DISARM 0-布防 1-撤防 N/A N/A N/A N/A
  96. ALARM_TYPE_STREAM_PRIVATE 0-开启 1-关闭 N/A N/A N/A N/A
  97. ALARM_TYPE_PIC_UPLOAD_FAIL 0-发生异常或报警 通道号 报警联动抓拍上传失败时 手动抓拍上传失败时 N/A
  98. 对应的报警类型 手动抓拍流水号 N/A
  99. ALARM_TYPE_LOCAL_REC_EXCEPTION 0-发生异常或报警 N/A N/A N/A N/A
  100. ALARM_TYPE_UPGRADE_FAIL 0-发生异常或报警 N/A N/A N/A 当前版本号,格式:Vx.y.z buildYYMMDD
  101. ALARM_TYPE_ILLEGAL_ACCESS 0-发生异常或报警 N/A N/A N/A N/A
  102. ALARM_TYPE_SOUNDLIMIT_EXCEED 0-发生异常或报警 噪声阈值分贝*10 当前噪声值分贝*10 N/A N/A
  103. ALARM_TYPE_TRIFFIC_VIOLATION 0-发生异常或报警 N/A N/A N/A N/A
  104. ALARM_TYPE_ALARM_CONTROL 0-发生异常或报警 N/A N/A N/A N/A
  105. ALARM_TYPE_FACE_DETECTION 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  106. ALARM_TYPE_DEFOUSE_DETECTION 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  107. ALARM_TYPE_AUDIO_EXCEPTION 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  108. ALARM_TYPE_SCENE_CHANGE 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  109. ALARM_TYPE_TRAVERSE_PLANE 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  110. ALARM_TYPE_ENTER_AREA 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  111. ALARM_TYPE_LEAVE_AREA 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  112. ALARM_TYPE_INTRUSION 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  113. ALARM_TYPE_LOITER 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  114. ALARM_TYPE_LEFT_TAKE 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  115. ALARM_TYPE_CAR_STOP 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  116. ALARM_TYPE_MOVE_FAST 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  117. ALARM_TYPE_HIGH_DENSITY 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  118. ALARM_TYPE_PDC_BY_TIME 0-报警上报 通道号 进入人数 离开人数 人流量统计结束时间(YYYY-MM-DD HHMISS)
  119. ALARM_TYPE_PDC_BY_FRAME 0-报警上报 通道号 进入人数 离开人数 N/A
  120. ALARM_TYPE_LEFT 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  121. ALARM_TYPE_TAKE 0-报警开始 1-报警结束 通道号 N/A N/A N/A
  122. ALARM_TYPE_ENV_LIMIT 0-报警上报 点号(默认104) N/A N/A 报警、异常描述信息,不超过256字节
  123. ALARM_TYPE_ENV_REAL_TIME 0-报警上报 点号(默认104) N/A N/A 动环相关量实时数值(double类型,比如11.20)
  124. ALARM_TYPE_ENV_EXCEPTION 0-报警上报 N/A N/A N/A 报警、异常描述信息,不超过256字节
  125. ALARM_TYPE_HIGH_TEMP 0-报警上报 N/A N/A N/A N/A
  126. ALARM_TYPE_ACC_EXCEPTION 0-报警上报 N/A N/A N/A N/A
  127. */
  128. //设备状态改变上报
  129. typedef struct tagNET_EHOME_DEV_STATUS_CHANGED
  130. {
  131. BYTE byDeviceStatus; //设备状态,0-正常;1-CPU占用率太高,超过85%,2-硬件错误,例如串口异常
  132. BYTE byRes[11]; //保留
  133. }NET_EHOME_DEV_STATUS_CHANGED, *LPNET_EHOME_DEV_STATUS_CHANGED;
  134. //通道状态改变上报
  135. typedef struct tagNET_EHOME_CHAN_STATUS_CHANGED
  136. {
  137. WORD wChanNO; //通道号
  138. BYTE byChanStatus; //通道状态,按位表示
  139. //bit0:启用状态,0-禁用/删除,1-启用/添加
  140. //模拟通道由禁用到启用,或者启用到禁用,上报该字段
  141. //数字通道添加到删除,或者删除到重新添加,上报该字段
  142. //bit1:在线状态,0-不在线,1-在线
  143. //bit2:信号状态,0-无信号,1-有信号
  144. //bit3:录像状态,0-不在录像 1-在录像
  145. //bit4:IP通道信息改变状态,0-未改变 1-有改变,这位表示该通道的配
  146. //置信息发生了改变,比如添加的IPC有过更换,通知上层更新能力集
  147. BYTE byRes[9];
  148. }NET_EHOME_CHAN_STATUS_CHANGED, *LPNET_EHOME_CHAN_STATUS_CHANGED;
  149. //磁盘状态改变
  150. typedef struct tagNET_EHOME_HD_STATUS_CHANGED
  151. {
  152. DWORD dwVolume; //硬盘容量,单位:MB
  153. WORD wHDNo; //硬盘号
  154. BYTE byHDStatus; //硬盘的状态, 0-活动1-休眠,2-异常,3-休眠硬盘出错,
  155. //4-未格式化, 5-未连接状态(网络硬盘),6-硬盘正在格式化
  156. BYTE byRes[5]; //保留
  157. }NET_EHOME_HD_STATUS_CHANGED, *LPNET_EHOME_HD_STATUS_CHANGED;
  158. //定时上报设备状态项
  159. typedef struct tagNET_EHOME_DEV_TIMING_STATUS
  160. {
  161. DWORD dwMemoryTotal; //内存总量,单位Kbyte
  162. DWORD dwMemoryUsage; //内存使用量,单位Kbyte
  163. BYTE byCPUUsage; //CPU使用率,0-100
  164. BYTE byMainFrameTemp; //机箱温度,单位:摄氏度
  165. BYTE byBackPanelTemp; //背板温度,单位:摄氏度
  166. BYTE byRes;
  167. }NET_EHOME_DEV_TIMING_STATUS, *LPNET_EHOME_DEV_TIMING_STATUS;
  168. //定时上报通道状态项-单个通道
  169. typedef struct tagNET_EHOME_CHAN_TIMING_STATUS_SINGLE
  170. {
  171. DWORD dwBitRate; //实际码率,单位kbps
  172. WORD wChanNO; //通道号
  173. BYTE byLinkNum; //客户端连接的个数
  174. BYTE byRes[5];
  175. }NET_EHOME_CHAN_TIMING_STATUS_SINGLE, *LPNET_EHOME_CHAN_TIMING_STATUS_SINGLE;
  176. //定时上报磁盘状态项
  177. typedef struct tagNET_EHOME_HD_TIMING_STATUS_SINGLE
  178. {
  179. DWORD dwHDFreeSpace; //硬盘剩余空间,单位:MB
  180. WORD wHDNo; //磁盘号
  181. BYTE byRes[6];
  182. }NET_EHOME_HD_TIMING_STATUS_SINGLE, *LPNET_EHOME_HD_TIMING_STATUS_SINGLE;
  183. typedef union tagNET_EHOME_ALARM_STATUS_UNION
  184. {
  185. BYTE byRes[12]; //联合体大小
  186. NET_EHOME_DEV_STATUS_CHANGED struDevStatusChanged;
  187. NET_EHOME_CHAN_STATUS_CHANGED struChanStatusChanged;
  188. NET_EHOME_HD_STATUS_CHANGED struHdStatusChanged;
  189. NET_EHOME_DEV_TIMING_STATUS struDevTimeStatus;
  190. NET_EHOME_CHAN_TIMING_STATUS_SINGLE struChanTimeStatus;
  191. NET_EHOME_HD_TIMING_STATUS_SINGLE struHdTimeStatus;
  192. }NET_EHOME_ALARM_STATUS_UNION, *LPNET_EHOME_ALARM_STATUS_UNION;
  193. typedef struct tagNET_EHOME_ALARM_INFO
  194. {
  195. DWORD dwSize;
  196. char szAlarmTime[MAX_TIME_LEN]; //报警触发时间(设备本地时间),格式,YYYY-MM-DD HH:MM:SS
  197. char szDeviceID[MAX_DEVICE_ID_LEN];//设备注册ID
  198. DWORD dwAlarmType; //报警类型见EN_ALARM_TYPE枚举变量
  199. DWORD dwAlarmAction; //报警动作0:开始 1:停止
  200. DWORD dwVideoChannel; //各报警中的意义见注释
  201. DWORD dwAlarmInChannel; //各报警中的意义见注释
  202. DWORD dwDiskNumber; //各报警中的意义见注释
  203. BYTE byRemark[MAX_REMARK_LEN]; //各报警中的意义见注释
  204. BYTE byRetransFlag; //重传标记,0-实时包,1-重传包
  205. BYTE byTimeDiffH; //szAlarmTime,szAlarmUploadTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
  206. BYTE byTimeDiffM; //szAlarmTime,szAlarmUploadTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
  207. BYTE byRes1;
  208. char szAlarmUploadTime[MAX_TIME_LEN]; //报警上传时间(设备本地时间),时间格式,YYYY-MM-DD HH:MM:SS
  209. NET_EHOME_ALARM_STATUS_UNION uStatusUnion;
  210. BYTE byRes2[16];
  211. }NET_EHOME_ALARM_INFO, *LPNET_EHOME_ALARM_INFO;
  212. typedef struct tagNET_EHOME_GPS_INFO
  213. {
  214. DWORD dwSize;
  215. char bySampleTime[MAX_TIME_LEN]; //GPS采样时间,设备本地时间,格式:YYYY-MM-DD HH:MM:SS
  216. char byDeviceID[MAX_DEVICE_ID_LEN]; //设备注册ID
  217. char byDivision[2]; //division[0]:'E'or'W'(东经/西经), division[1]:'N'or'S'(北纬/南纬)
  218. BYTE bySatelites; //卫星数量
  219. BYTE byPrecision; //精度因子,原始值*100
  220. DWORD dwLongitude; //经度,取值范围为(0~180*3600*100),转换公式为:longitude= 实际度*3600*100+实际分*60*100+实际秒*100
  221. DWORD dwLatitude; //纬度,取值范围为(0~90*3600*100),转换公式为:latitude = 实际度*3600*100+实际分*60*100+实际秒*100
  222. DWORD dwDirection; //方向,取值范围为(0~359.9*100),正北方向为0,转换公式为:direction= 实际方向*100
  223. DWORD dwSpeed; //速度,取值范围为(0~999.9*100000),转换公式为:speed =实际速度*100000,相当于cm/h
  224. DWORD dwHeight; //高度,单位:cm
  225. BYTE byRetransFlag; //重传标记,0-实时包,1-重传包
  226. BYTE byLocateMode; //定位模式(初值0),仅NMEA0183 3.00版本输出,值:0-自主定位,1- 差分,2- 估算,3- 数据无效
  227. BYTE byTimeDiffH; //bySampleTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
  228. BYTE byTimeDiffM; //bySampleTimee与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
  229. DWORD dwMileage; //设备里程数统计,单位为米,整型,每天第一次开机或者00:00:00时清零,后续累加当天里程数上报到中心
  230. BYTE byRes[56];
  231. }NET_EHOME_GPS_INFO, *LPNET_EHOME_GPS_INFO;
  232. typedef struct tagNET_EHOME_ALARMWIRELESSINFO
  233. {
  234. BYTE byDeviceID[MAX_DEVICE_ID_LEN]; //设备ID
  235. DWORD dwDataTraffic; /* 已用流量,单位:MB,实际流量*100*/
  236. BYTE bySignalIntensity; /* 信号强度,0~100*/
  237. BYTE byRes[127];
  238. } NET_EHOME_ALARMWIRELESSINFO, *LPNET_EHOME_ALARMWIRELESSINFO;
  239. typedef struct tagNET_EHOME_HEATMAP_VALUE
  240. {
  241. DWORD dwMaxHeatMapValue; //最大热度值
  242. DWORD dwMinHeatMapValue; //最小热度值
  243. DWORD dwTimeHeatMapValue; //平均热度值
  244. }NET_EHOME_HEATMAP_VALUE, *LPNET_EHOME_HEATMAP_VALUE;
  245. typedef struct tagNET_EHOME_PIXEL_ARRAY_SIZE
  246. {
  247. DWORD dwLineValue; //像素点行值
  248. DWORD dwColumnValue;//像素点列值
  249. }NET_EHOME_PIXEL_ARRAY_SIZE, *LPNET_EHOME_PIXEL_ARRAY_SIZE;
  250. typedef struct tagNET_EHOME_HEATMAP_REPORT
  251. {
  252. DWORD dwSize;
  253. char byDeviceID[MAX_DEVICE_ID_LEN]; //设备注册ID
  254. DWORD dwVideoChannel; //通道号
  255. char byStartTime[MAX_TIME_LEN]; //开始时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
  256. char byStopTime[MAX_TIME_LEN]; //结束时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
  257. NET_EHOME_HEATMAP_VALUE struHeatmapValue;//热度值
  258. NET_EHOME_PIXEL_ARRAY_SIZE struPixelArraySize; //热度图大小
  259. char byPixelArrayData[MAX_URL_LEN]; //热度图数据索引
  260. BYTE byRetransFlag; //重传标记,0-实时包,1-重传包
  261. BYTE byTimeDiffH; //byStartTime,byStopTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
  262. BYTE byTimeDiffM; //byStartTime,byStopTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
  263. BYTE byRes[61];
  264. }NET_EHOME_HEATMAP_REPORT, *LPNET_EHOME_HEATMAP_REPORT;
  265. typedef struct tagNET_EHOME_HUMAN_FEATURE
  266. {
  267. BYTE byAgeGroup; //年龄属性,1-婴幼儿,2-儿童,3-少年,4-青少年,5-青年,6-壮年,7-中年,8-中老年,9-老年
  268. BYTE bySex; //性别属性,1-男,2-女
  269. BYTE byEyeGlass; //是否戴眼睛,1-不戴,2-戴
  270. BYTE byRes[13];
  271. }NET_EHOME_HUMAN_FEATURE, *LPNET_EHOME_HUMAN_FEATURE;
  272. typedef struct tagNET_EHOME_FACESNAP_REPORT
  273. {
  274. DWORD dwSize;
  275. char byDeviceID[MAX_DEVICE_ID_LEN]; //设备注册ID
  276. DWORD dwVideoChannel; //通道号
  277. char byAlarmTime[MAX_TIME_LEN]; //报警时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
  278. DWORD dwFacePicID; //人脸图ID
  279. DWORD dwFaceScore; //人脸评分,0-100
  280. DWORD dwTargetID; //目标ID
  281. NET_EHOME_ZONE struTarketZone; //目标区域,归一化坐标:数值为当前画面的百分比大小*1000,精度为小数点后三位
  282. NET_EHOME_ZONE struFacePicZone; //人脸子图区域,归一化坐标:数值为当前画面的百分比大小*1000,精度为小数点后三位
  283. NET_EHOME_HUMAN_FEATURE struHumanFeature;//人属性
  284. DWORD dwStayDuration; //停留画面中时间
  285. DWORD dwFacePicLen; //人脸图长度,单位:字节
  286. char byFacePicUrl[MAX_URL_LEN]; //人脸子图数据索引
  287. DWORD dwBackgroudPicLen; //背景图片长度,单位:字节
  288. char byBackgroudPicUrl[MAX_URL_LEN]; //背景图片数据索引
  289. BYTE byRetransFlag; //重传标记,0-实时包,1-重传包
  290. BYTE byTimeDiffH; //byAlamTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
  291. BYTE byTimeDiffM; //byAlamTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
  292. BYTE byRes[61];
  293. }NET_EHOME_FACESNAP_REPORT, *LPNET_EHOME_FACESNAP_REPORT;
  294. typedef struct tagNET_EHOME_CID_PARAM
  295. {
  296. DWORD dwUserType; //用户类型,1键盘用户 2网络用户,其他值表示无效
  297. LONG lUserNo; //用户类型,-1表示无效
  298. LONG lZoneNo; //防区号,-1表示无效
  299. LONG lKeyboardNo; //键盘号,
  300. LONG lVideoChanNo; //视频通道号
  301. LONG lDiskNo; //硬盘号
  302. LONG lModuleAddr; //模块地址
  303. char byUserName[NAME_LEN]; //用户名
  304. BYTE byRes[32];
  305. }NET_EHOME_CID_PARAM, *LPNET_EHOME_CID_PARAM;
  306. typedef struct tagNET_EHOME_CID_INFO
  307. {
  308. DWORD dwSize;
  309. char byDeviceID[MAX_DEVICE_ID_LEN]; //设备注册ID
  310. DWORD dwCIDCode; //CID报告代码
  311. DWORD dwCIDType; //CID报警类型
  312. DWORD dwSubSysNo; //产生报告的子系统号,0为全局报告,子系统范围0~32
  313. char byCIDDescribe[CID_DES_LEN]; //CID报警描述
  314. char byTriggerTime[MAX_TIME_LEN]; //CID报警发生时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
  315. char byUploadTime[MAX_TIME_LEN]; //CID报告上传时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
  316. NET_EHOME_CID_PARAM struCIDParam; //CID报警参数
  317. BYTE byTimeDiffH; //byTriggerTime,byUploadTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
  318. BYTE byTimeDiffM; //byTriggerTime,byUploadTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
  319. BYTE byExtend; //是否有扩展字段
  320. BYTE byRes1[5];
  321. void* pCidInfoEx; //byExtend为1是有效,指向NET_EHOME_CID_INFO_INTERNAL_EX结构体
  322. BYTE byRes[52];
  323. }NET_EHOME_CID_INFO, *LPNET_EHOME_CID_INFO;
  324. typedef struct tagNET_EHOME_CID_INFO_INTERNAL_EX
  325. {
  326. BYTE byRecheck; //是否是视频复核报警 1-复核报警,0-普通报警
  327. BYTE byRes[3];
  328. char byUUID[MAX_UUID_LEN]; //报警唯一ID,区分是否属于同一个报警;不支持视频复核报警时,该字段为0;
  329. char byVideoURL[MAX_URL_LEN]; // byRecheck为1时有效,视频复核报警中视频的URL地址,用于从存储服务器获取视频;(复核报警第二次上报该URL)
  330. char byCIDDescribeEx[CID_DES_LEN_EX]; //CID报警描述扩展
  331. BYTE byRes1[256];
  332. }NET_EHOME_CID_INFO_INTERNAL_EX, *LPNET_EHOME_CID_INFO_INTERNAL_EX;
  333. typedef struct tagNET_EHOME_NOTICE_PICURL
  334. {
  335. DWORD dwSize;
  336. char byDeviceID[MAX_DEVICE_ID_LEN]; //设备注册ID
  337. WORD wPicType; //图片业务类型,0-PU定时抓图上传中心,1-PU报警抓图上传中心(AlarmType、AlarmChan、AlarmTime 三个节点在PicType为时才有效) ,2-CU手动抓图上传中心,
  338. //3-CU下载图片,4-外部触发PU抓图上传中心(比如DVR通过串口接收到POS机刷卡触发抓图请求)
  339. WORD wAlarmType; //报警类型,6-报警输入,7-视频遮挡,8-移动侦测,11-PIR报警,12-门磁报警,13-呼救报警
  340. DWORD dwAlarmChan; //报警通道编号
  341. char byAlarmTime[MAX_TIME_LEN]; //报警产生时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
  342. DWORD dwCaptureChan; //图片抓拍通道编号
  343. char byPicTime[MAX_TIME_LEN]; //图片时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
  344. char byPicUrl[MAX_URL_LEN]; //图片数据索引
  345. DWORD dwManualSnapSeq; //请求流水号(字节整数),PicType值为2、3时有效
  346. BYTE byRetransFlag; //重传标记,0-实时包,-重传包
  347. BYTE byTimeDiffH; //byAlarmTime,byPicTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
  348. BYTE byTimeDiffM; //byAlarmTime,byPicTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
  349. BYTE byRes[29];
  350. }NET_EHOME_NOTICE_PICURL, *LPNET_EHOME_NOTICE_PICURL;
  351. typedef struct tagNET_EHOME_NOTIFY_FAIL_INFO
  352. {
  353. DWORD dwSize;
  354. char byDeviceID[MAX_DEVICE_ID_LEN]; //设备注册ID
  355. WORD wFailedCommand; //失败的命令,1-抓图失败
  356. WORD wPicType; //图片业务类型,失败命令为抓图失败时有效,0-PU定时抓图上传中心,1-PU报警抓图上传中心,2-CU手动抓图上传中心,
  357. //3-CU下载图片,4-外部触发PU抓图上传中心
  358. DWORD dwManualSnapSeq; //请求流水号(字节整数),PicType值为2、3时有效
  359. BYTE byRetransFlag; //重传标记,0-实时包,1-重传包
  360. BYTE byRes[31];
  361. }NET_EHOME_NOTIFY_FAIL_INFO, *LPNET_EHOME_NOTIFY_FAIL_INFO;
  362. typedef struct tagNET_EHOME_ALARM_MSG
  363. {
  364. DWORD dwAlarmType; //报警类型,见EN_ALARM_TYPE
  365. void *pAlarmInfo; //报警内容(结构体)
  366. DWORD dwAlarmInfoLen; //结构体报警内容长度
  367. void *pXmlBuf; //报警内容(XML)
  368. DWORD dwXmlBufLen; //xml报警内容长度
  369. char sSerialNumber[NET_EHOME_SERIAL_LEN]; //设备序列号,用于进行Token认证
  370. void *pHttpUrl;
  371. DWORD dwHttpUrlLen;
  372. BYTE byRes[12];
  373. }NET_EHOME_ALARM_MSG, *LPNET_EHOME_ALARM_MSG;
  374. typedef BOOL (CALLBACK *EHomeMsgCallBack)(LONG iHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUser);
  375. typedef struct tagNET_EHOME_ALARM_LISTEN_PARAM
  376. {
  377. NET_EHOME_IPADDRESS struAddress; //本地监听信息,IP为0.0.0.0的情况下,默认为本地地址,多个网卡的情况下,默认为从操作系统获取到的第一个
  378. EHomeMsgCallBack fnMsgCb; //报警信息回调函数
  379. void * pUserData; //用户数据
  380. BYTE byProtocolType; //协议类型,0-TCP,1-UDP,2-MQTT
  381. BYTE byUseCmsPort; //是否复用CMS端口,0-不复用,非0-复用,如果复用cms端口,协议类型字段无效(此时本地监听信息struAddress填本地回环地址)
  382. BYTE byUseThreadPool; //0-回调报警时,使用线程池,1-回调报警时,不使用线程池,默认情况下,报警回调的时候,使用线程池
  383. BYTE byRes[29];
  384. }NET_EHOME_ALARM_LISTEN_PARAM, *LPNET_EHOME_ALARM_LISTEN_PARAM;
  385. typedef struct tagNET_EHOME_ALARM_ISAPI_INFO
  386. {
  387. char * pAlarmData; // 报警数据
  388. DWORD dwAlarmDataLen; // 报警数据长度
  389. BYTE byDataType; // 0-invalid,1-xml,2-json
  390. BYTE byPicturesNumber; // 图片数量
  391. BYTE byRes[2];
  392. void * pPicPackData; // 图片变长部分,byPicturesNumber个NET_EHOME_ALARM_ISAPI_PICDATA
  393. BYTE byRes1[32];
  394. }NET_EHOME_ALARM_ISAPI_INFO, *LPNET_EHOME_ALARM_ISAPI_INFO;
  395. typedef struct tagNET_EHOME_ALARM_ISAPI_PICDATA
  396. {
  397. DWORD dwPicLen;//报警图片长度
  398. BYTE byRes[4];
  399. char szFilename[MAX_FILE_PATH_LEN];//保存图象的文件路径(包括文件名)。
  400. BYTE *pPicData;//报警上传的图片数据指针
  401. }NET_EHOME_ALARM_ISAPI_PICDATA, *LPNET_EHOME_ALARM_ISAPI_PICDATA;
  402. /** 兼容信息发布私有协议 begin */
  403. #define NET_EHOME_C2S_WEATHERINFO 0x61 //城市天气信息请求
  404. #define NET_EHOME_C2S_LOCAL_DEVOFFLINE 0xA00 //设备下线通知
  405. #define NET_EHOME_C2S_REPORT_TERMINAL_STATUS 0x1002 //终端主动上报状态
  406. #define NET_EHOME_C2S_PROGESS_REPORT 0xAF301 //终端进度上报
  407. /* 终端主动上报的数据结构 */
  408. typedef struct tagNET_EHOME_TERMINAL_REPORT_INFO
  409. {
  410. DWORD dwSubCmd; //标识终端上报的是什么内容
  411. DWORD dwContentLen; //终端上报的具体内容的长度
  412. BYTE byContentBuf[2048]; //终端上报的具体内容
  413. BYTE byRes[64];
  414. }NET_EHOME_TERMINAL_REPORT_INFO, *LPNET_EHOME_TERMINAL_REPORT_INFO;
  415. /* 终端播放状态 */
  416. typedef enum
  417. {
  418. NET_EHOME_INVAILD_STATE = 0,
  419. NET_EHOME_HDMI = 1, //HDMI状态
  420. NET_EHOME_VGA, //VGA状态
  421. NET_EHOME_SCHEDULE_PLAY, //日程播放
  422. NET_EHOME_SCHEDULE_STOP, //日程停止
  423. NET_EHOME_SCREEN_OFF, //屏幕关
  424. }NET_EHOME_TERMINAL_PLAY_STATE;
  425. /* 终端类型 */
  426. typedef enum
  427. {
  428. NET_EHOME_INVAILD_TERMINAL_TYPE = 0,
  429. NET_EHOME_ANDROID_STANDARD = 1, //安卓标准
  430. NET_EHOME_ANDROID_DECODE, //安卓解码
  431. NET_EHOME_ANDROID_TOUCH, //安卓触摸
  432. }NET_EHOME_TERMINAL_TYPE;
  433. /* 插播状态 */
  434. typedef enum
  435. {
  436. NET_EHOME_INVAILD_INSERT_TYPE = 0,
  437. NET_EHOME_INSERT_END = 1, //插播结束
  438. NET_EHOME_INSERT_PUBLISH, //正在往终端发送数据包
  439. NET_EHOME_INSERT_START = 3, //插播开始
  440. NET_EHOME_INSERT_FAIL, //插播失败
  441. }NET_EHOME_INSERT_STATE;
  442. /* 终端状态 */
  443. typedef struct tagNET_EHOME_TERMINAL_STATE
  444. {
  445. NET_EHOME_TERMINAL_PLAY_STATE enumPlayState; //播放状态
  446. NET_EHOME_TERMINAL_TYPE enumTerminalType; //终端类型
  447. NET_EHOME_INSERT_STATE enumInsertState; //插播状态
  448. BYTE bySoftVersion[32]; //终端的软件版本号
  449. BYTE byLocalIP[32]; //终端的IP
  450. DWORD dwTermAbnormalState; //终端是否处于温度异常关机状态,0-否,1-是
  451. }NET_EHOME_TERMINAL_STATE, *LPNET_EHOME_TERMINAL_STATE;
  452. //终端进度
  453. typedef struct tagNET_EHOME_TERMINAL_PROGRESS
  454. {
  455. DWORD dwTerminalId; //终端ID
  456. DWORD dwTermStatus; //终端状态,1-正常,2-异常
  457. DWORD dwProgessType; //进度类型 1素材进度,2节目进度,3日程进度,4升级进度
  458. DWORD dwUniqueID; //日程ID或节目ID或素材ID(升级这个字段无效)
  459. BYTE byMainProgess; //0-100正常,101进度异常,下载文件的总进度(升级只有主进度,无子进度)
  460. BYTE bySubProgess; //下载当前单个文件的进度
  461. }NET_EHOME_TERMINAL_PROGRESS, *LPNET_EHOME_TERMINAL_PROGRESS;
  462. /** 兼容信息发布私有协议 end */
  463. //初始化,反初始化
  464. NET_DVR_API BOOL CALLBACK NET_EALARM_Init();
  465. NET_DVR_API BOOL CALLBACK NET_EALARM_Fini();
  466. //获取错误码
  467. NET_DVR_API DWORD CALLBACK NET_EALARM_GetLastError();
  468. //日志
  469. NET_DVR_API BOOL CALLBACK NET_EALARM_SetLogToFile(LONG iLogLevel, const char *strLogDir, BOOL bAutoDel);
  470. //获取版本号
  471. NET_DVR_API DWORD CALLBACK NET_EALARM_GetBuildVersion();
  472. NET_DVR_API LONG CALLBACK NET_EALARM_StartListen(NET_EHOME_ALARM_LISTEN_PARAM *pAlarmListenParam);
  473. NET_DVR_API BOOL CALLBACK NET_EALARM_StopListen(LONG iListenHandle);
  474. NET_DVR_API BOOL CALLBACK NET_EALARM_SetSDKLocalCfg( NET_EHOME_LOCAL_CFG_TYPE enumType, void* const lpInBuff);
  475. NET_DVR_API BOOL CALLBACK NET_EALARM_GetSDKLocalCfg(NET_EHOME_LOCAL_CFG_TYPE enumType,void *lpOutBuff);
  476. //设置设备SessionKey信息
  477. NET_DVR_API BOOL CALLBACK NET_EALARM_SetDeviceSessionKey(NET_EHOME_DEV_SESSIONKEY* pDeviceKey);
  478. //获取设备EhomeKey信息
  479. NET_DVR_API BOOL CALLBACK NET_EALARM_GetDeviceSessionKey(NET_EHOME_DEV_SESSIONKEY* pDeviceKey);
  480. #endif //_HC_EHOME_ALARM_H_