| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #ifndef ALARM_H
- #define ALARM_H
- /**
- * @file alarm.h
- * @brief 报警管理头文件
- *
- * 本文件定义报警事件的接收、处理、转发等功能接口。
- */
- #include "common.h"
- #include "config.h"
- /* 报警类型 */
- typedef enum {
- ALARM_TYPE_MOVEMENT = 0, /* 移动侦测 */
- ALARM_TYPE_VI_DETECTION, /* 视频丢失 */
- ALARM_TYPE_VI_MASK, /* 视频遮挡 */
- ALARM_TYPE_NETWORK_ABNORMAL, /* 网络异常 */
- ALARM_TYPE_DISK_ERROR, /* 硬盘错误 */
- ALARM_TYPE_IP_CONFLICT, /* IP冲突 */
- ALARM_TYPE_STORAGE_EXCEPTION, /* 存储异常 */
- ALARM_TYPE_IO_EXCEPTION, /* IO异常 */
- ALARM_TYPE_SIZE_OVERFLOW, /* 容量超限 */
- ALARM_TYPE_DARKNESS, /* 场景变更 */
- ALARM_TYPE_LINE_DETECTION, /* 越界检测 */
- ALARM_TYPE_AREA_DETECTION, /* 区域检测 */
- ALARM_TYPE_TAMPERING, /* tampering检测 */
- ALARM_TYPE_AUDIO_EXCEPTION, /* 音频异常 */
- ALARM_TYPE_THERMAL, /* 热成像报警 */
- ALARM_TYPE_CUSTOM_START = 1000, /* 自定义报警类型起始 */
- } AlarmType;
- /* 报警级别 */
- typedef enum {
- ALARM_LEVEL_LOW = 0, /* 低级 */
- ALARM_LEVEL_MEDIUM, /* 中级 */
- ALARM_LEVEL_HIGH, /* 高级 */
- ALARM_LEVEL_CRITICAL /* 严重 */
- } AlarmLevel;
- /* 报警信息结构 */
- typedef struct {
- char device_id[MAX_DEVICE_ID]; /* 设备ID */
- int channel; /* 通道号 */
- AlarmType type; /* 报警类型 */
- AlarmLevel level; /* 报警级别 */
- char description[256]; /* 报警描述 */
- char snapshot_path[MAX_PATH_SIZE];/* 快照路径 */
- time_t alarm_time; /* 报警时间 */
- int alarm_id; /* 报警ID */
- int duration; /* 持续时间(秒) */
- int is_acknowledged; /* 是否已确认 */
- void* raw_data; /* 原始报警数据 */
- int raw_data_size; /* 原始数据大小 */
- } AlarmInfo;
- /* 报警回调函数类型 */
- /*
- * void (*AlarmDataCB)(AlarmInfo* alarm, void* user_data)
- *
- * alarm: 报警信息结构指针
- * user_data: 用户自定义数据
- */
- typedef void (*AlarmDataCB)(AlarmInfo* alarm, void* user_data);
- /* 报警处理回调 */
- typedef void (*AlarmProcessCB)(AlarmInfo* alarm, void* user_data);
- /**
- * @brief 初始化报警模块
- * @return 成功返回SUCCESS, 失败返回FAILURE
- *
- * 说明: 初始化报警监听服务,注册报警回调函数。
- * 对应NET_EALARM_StartListen功能。
- */
- int alarm_init(void);
- /**
- * @brief 反初始化报警模块
- *
- * 说明: 停止报警监听,释放资源。
- */
- void alarm_cleanup(void);
- /**
- * @brief 启动报警监听
- * @param listen_ip 监听IP地址
- * @param listen_port 监听端口
- * @param alarm_cb 报警数据回调函数
- * @param process_cb 报警处理回调函数
- * @param user_data 用户自定义数据
- * @return 成功返回SUCCESS, 失败返回FAILURE
- *
- * 说明: 启动报警监听服务,开始接收设备上报的报警事件。
- * 对应NET_EALARM_StartListen功能。
- *
- * 回调函数说明:
- * - alarm_cb: 接收到原始报警数据时调用
- * - process_cb: 报警数据处理完成后调用(可在业务线程中处理)
- */
- int alarm_start_listen(const char* listen_ip, short listen_port,
- AlarmDataCB alarm_cb, AlarmProcessCB process_cb,
- void* user_data);
- /**
- * @brief 停止报警监听
- *
- * 说明: 停止接收报警事件。
- */
- void alarm_stop_listen(void);
- /**
- * @brief 报警数据入库公共入口(供SDK回调/自测调用)
- * @param alarm 报警信息
- * @return SUCCESS 成功, FAILURE 失败
- */
- int alarm_ingest(AlarmInfo* alarm);
- /**
- * @brief 发送报警确认
- * @param alarm_id 报警ID
- * @param device_id 设备ID
- * @return 成功返回SUCCESS, 失败返回FAILURE
- */
- int alarm_acknowledge(int alarm_id, const char* device_id);
- /**
- * @brief 获取未确认报警列表
- * @param alarms 输出报警信息数组
- * @param max_alarms 最大报警数
- * @return 返回未确认报警数量
- */
- int alarm_get_unacknowledged(AlarmInfo alarms[], int max_alarms);
- /**
- * @brief 清除已确认的报警
- * @return 成功返回SUCCESS, 失败返回FAILURE
- */
- int alarm_clear_acknowledged(void);
- /**
- * @brief 注册报警类型过滤器
- * @param types 要监听的报警类型数组
- * @param count 类型数量
- */
- void alarm_register_filter(const AlarmType types[], int count);
- /**
- * @brief 获取报警统计信息
- * @param total 输出总报警数
- * @param unack 输出未确认数
- * @param today 输出今日报警数
- */
- void alarm_get_stats(int* total, int* unack, int* today);
- #endif /* ALARM_H */
|