除了显示驱动,其余全部测试通过
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
#ifndef RADAR_REPORT_SERVICE_H
|
||||
#define RADAR_REPORT_SERVICE_H
|
||||
|
||||
#include "typedef.h"
|
||||
#include "radar_manager.h"
|
||||
|
||||
/*
|
||||
* radar_report_service 的职责:
|
||||
*
|
||||
* 1. 从 radar_manager 获取统一业务快照
|
||||
* 2. 判断当前是否需要上报
|
||||
* 3. 在真正上报成功后推进“已上报”状态
|
||||
*
|
||||
* 它不知道:
|
||||
* - UART
|
||||
* - R60 CTRL/CMD
|
||||
* - WiFi
|
||||
* - MQTT
|
||||
* - JSON
|
||||
* - Flash
|
||||
*
|
||||
* 本模块不创建任务。
|
||||
* 由未来的上报/网络执行流主动调用。
|
||||
*/
|
||||
|
||||
enum radar_report_reason {
|
||||
RADAR_REPORT_REASON_NONE = 0,
|
||||
RADAR_REPORT_REASON_INITIAL,
|
||||
RADAR_REPORT_REASON_CHANGE,
|
||||
RADAR_REPORT_REASON_PERIODIC,
|
||||
};
|
||||
|
||||
struct radar_report_service_config {
|
||||
/*
|
||||
* manager 快照允许的最大数据年龄。
|
||||
* 超过这个时间的数据不提交给上层上报。
|
||||
*/
|
||||
u32 max_age_ms;
|
||||
|
||||
/*
|
||||
* 即使没有 meaningful change,
|
||||
* 也允许按周期强制产生一次快照。
|
||||
*
|
||||
* 设为 0 表示关闭周期强制上报。
|
||||
*/
|
||||
u32 periodic_interval_ms;
|
||||
};
|
||||
|
||||
/*
|
||||
* 初始化上报决策层。
|
||||
*/
|
||||
int radar_report_service_init(
|
||||
const struct radar_report_service_config *config
|
||||
);
|
||||
|
||||
/*
|
||||
* 检查当前是否存在待上报快照。
|
||||
*
|
||||
* return:
|
||||
* 1 有快照需要上报,out/reason 有效
|
||||
* 0 当前不需要上报
|
||||
* <0 错误
|
||||
*
|
||||
* 注意:
|
||||
* 一旦产生 pending snapshot,
|
||||
* 在 radar_report_service_mark_reported() 成功调用前,
|
||||
* 后续 check 会返回同一份 pending snapshot。
|
||||
*
|
||||
* 这样上层发送失败时可以重试,
|
||||
* 不会因为 manager 又更新而偷偷替换发送内容。
|
||||
*/
|
||||
int radar_report_service_check(
|
||||
u32 now_ms,
|
||||
struct radar_report_snapshot *out,
|
||||
u8 *reason
|
||||
);
|
||||
|
||||
/*
|
||||
* 只有“上层已经真正发送成功”后才调用。
|
||||
*
|
||||
* 该函数会:
|
||||
* - 清除 pending snapshot
|
||||
* - 记录成功上报时间
|
||||
* - 在安全情况下推进 manager 的 consumed baseline
|
||||
*
|
||||
* 如果 pending 产生以后 manager 又发生了有意义字段变化,
|
||||
* 本函数不会把那个新变化错误地消费掉;
|
||||
* 下一次 check 仍会重新产生 CHANGE 上报。
|
||||
*/
|
||||
int radar_report_service_mark_reported(
|
||||
u32 now_ms
|
||||
);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user