/* * 模块名称:UI 数据组装器(ui_data_feed) * 模块功能:App → UI 数据通道的"写侧"——按节拍从采集/算法/保护/协议/时钟各模块 * 取数,组装成 docs/UI设计/UI_数据供给设计说明.md §4 契约的三帧 * (实时量 rt / 参数 par / 装置信息 info),经 Drivers/BSP/UI/ui_data.h * 的发布 API 推给 UI 层;本模块是快照的**唯一填充者** * 适用范围:App/app(装配层:可同时 include 两侧头,方向仍是上层依赖下层, * scripts/check_layer_deps.py 只拦"Drivers/BSP 目录反向 include App 目录") * 线程约定:uiTask 上下文,主循环每轮调 ui_data_feed_tick() 一次;与页面读写同 * 上下文串行 → 无锁(docs/UI设计/UI_数据供给设计说明.md §5.1)。 * ⚠ 不得在 adcTask/protectTask/netTask 里调用本模块 * 端接法:MCU = App/task/ui_task.c 主循环;PC 模拟器**不链接本文件**(模拟器不跑 * 固件装配链,快照由 simulator/main.c 直接发布固定帧保证像素回归可复现, * 见 docs/UI设计/UI_数据供给设计说明.md §9.2;模拟器豁免登记在 * scripts/check_registration.py 的 SIM_EXEMPT) * 作者:王建锋 * 创建日期:2026-10-25 * 修改记录: * v1.0 2026-10-25 王建锋 创建(道E task-14) */ #ifndef UI_DATA_FEED_H #define UI_DATA_FEED_H #ifdef __cplusplus extern "C" { #endif /* * 函数功能:装配节拍入口——实时帧与信息帧满 200 ms 发布一次,参数帧仅在校验和 * 变化时发布;首轮立即发布(免启动后出现一闪的 "--") * 入口参数:无 * 返回值:无 * 限定条件:uiTask 上下文,主循环每轮一次(UI 循环周期 10 ms) * 函数说明:本函数每轮代价 = 一次 tick 差值比较 + 一次校验和比较;真正的取数 * 与组装只在到期时发生(docs/UI设计/UI_数据供给设计说明.md §5.2)。 * 内部零阻塞、零堆分配、零日志(日志每条约 90 B Flash + 216 B 栈, * 200 ms 周期打不起) */ void ui_data_feed_tick(void); #ifdef __cplusplus } #endif #endif /* UI_DATA_FEED_H */