feat: init
This commit is contained in:
85
include/alarm_manager.h
Normal file
85
include/alarm_manager.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* @file alarm_manager.h
|
||||
* @brief 报警管理器 - 双模式 (本地判定 + 服务端指令)
|
||||
*
|
||||
* 本地模式: 离线也能用, 跌倒/水浸/心率异常/呼吸异常 本地判定触发
|
||||
* 服务端模式: 收到 cmd/{gateid}/alarm, alarm/restore 执行联动
|
||||
*/
|
||||
|
||||
#ifndef ALARM_MANAGER_H
|
||||
#define ALARM_MANAGER_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include "config.h"
|
||||
|
||||
class AlarmManager {
|
||||
public:
|
||||
// 告警类型 (本地 + 服务端共用)
|
||||
enum AlarmType {
|
||||
ALARM_NONE = 0,
|
||||
ALARM_FALL, // 跌倒 (本地 + 服务端)
|
||||
ALARM_WATER_LEAK, // 水浸 (本地 + 服务端)
|
||||
ALARM_HEART_ABNORMAL, // 心率异常 (本地)
|
||||
ALARM_BREATH_ABNORMAL, // 呼吸异常 (本地)
|
||||
ALARM_SERVER, // 服务端下发 (通用)
|
||||
};
|
||||
|
||||
AlarmManager();
|
||||
~AlarmManager();
|
||||
|
||||
bool begin();
|
||||
void loop();
|
||||
|
||||
// ============================================================
|
||||
// 本地报警接口 (离线可用)
|
||||
// ============================================================
|
||||
|
||||
/** 触发本地报警 */
|
||||
void triggerLocal(AlarmType type);
|
||||
/** 清除本地报警 */
|
||||
void clearLocal(AlarmType type);
|
||||
/** 清除所有本地报警 */
|
||||
void clearAllLocal();
|
||||
|
||||
// ============================================================
|
||||
// 服务端指令接口 (协议规范 §5.1, §5.2)
|
||||
// ============================================================
|
||||
|
||||
/** 执行服务端告警指令 */
|
||||
void executeAlarm(const AlarmCommand& cmd);
|
||||
/** 执行服务端恢复指令 */
|
||||
void executeRestore(const AlarmCommand& cmd);
|
||||
/** 蜂鸣器测试 */
|
||||
void buzzerTest(uint32_t durationSec);
|
||||
|
||||
// ============================================================
|
||||
// 状态查询 (上报用)
|
||||
// ============================================================
|
||||
|
||||
bool isBuzzerOn() const { return _buzzerOn; }
|
||||
bool hasActiveAlarm() const { return _activeCount > 0; }
|
||||
const char* getActiveAlarmType() const;
|
||||
|
||||
private:
|
||||
void _setBuzzer(bool on);
|
||||
void _setLED(bool on);
|
||||
void _updateBuzzer();
|
||||
void _updateLED();
|
||||
|
||||
// 蜂鸣器/LED 状态
|
||||
bool _buzzerOn;
|
||||
bool _ledOn;
|
||||
uint32_t _buzzerOffTime; // 定时关闭时刻 (0=手动关)
|
||||
uint32_t _buzzerToggleTime; // 间歇切换时刻
|
||||
bool _buzzerBeepState; // 间歇状态 (响/停)
|
||||
uint8_t _beepCount; // 当前周期哔了几声
|
||||
|
||||
// 活动报警列表 (最多 4 个同时)
|
||||
AlarmType _activeAlarms[4];
|
||||
uint8_t _activeCount;
|
||||
|
||||
// LED 闪烁
|
||||
uint32_t _lastLEDToggle;
|
||||
};
|
||||
|
||||
#endif // ALARM_MANAGER_H
|
||||
Reference in New Issue
Block a user