Files
AC7911BB_JL-AIBT-SoundBox/radar/radar_manager.h
T

116 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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