#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 */