#ifndef RADAR_MANAGER_H #define RADAR_MANAGER_H #include "typedef.h" /* * radar_manager 的职责: * 1. 保存“当前最新雷达状态” * 2. 对上层提供一致快照 * 3. 判断 fresh / valid / meaningful change * * 它不知道: * - UART * - R60 CTRL/CMD * - MQTT * - WiFi * - Flash */ struct radar_manager_input { u8 presence; u8 motion; u8 body_movement; u16 distance_cm; u16 heart_rate_x10; u16 breath_rate_x10; u8 sleep_state; s16 pos_x_mm; s16 pos_y_mm; s16 pos_z_mm; u8 abnormal_state; /* * 由调用者传入本次数据真正更新的系统时间。 * manager 自己不依赖 AC79 timer API, * 保持模块纯净。 */ u32 update_ms; }; struct radar_sensor_data { u8 presence; u8 motion; u8 body_movement; u16 distance_cm; u16 heart_rate_x10; u16 breath_rate_x10; u8 heart_valid; u8 breath_valid; u8 sleep_state; s16 pos_x_mm; s16 pos_y_mm; s16 pos_z_mm; u8 abnormal_state; u32 last_update_ms; }; struct radar_change_flags { u8 presence_changed; u8 motion_changed; u8 sleep_state_changed; u8 body_movement_changed; u8 distance_changed; u8 heart_rate_changed; u8 breath_rate_changed; u8 abnormal_state_changed; u8 any_changed; }; struct radar_report_snapshot { struct radar_sensor_data sensor; u8 has_person; u8 bed_occupied; u8 has_valid_vitals; u8 has_fresh_sample; u8 has_meaningful_change; u32 sample_age_ms; }; int radar_manager_init(void); int radar_manager_update( const struct radar_manager_input *input ); int radar_manager_get_sensor_data( struct radar_sensor_data *out ); int radar_manager_get_change_flags( struct radar_change_flags *out ); int radar_manager_get_report_snapshot( u32 now_ms, u32 max_age_ms, struct radar_report_snapshot *out ); int radar_manager_mark_snapshot_consumed(void); #endif