feat(ui/remo): 7003 总线新增 STATUS 身份查询与 GOTO 直达页(#69)
STATUS(命令 4)一帧回答"现在在哪个画面":kind(MENU/PAGE/STANDBY) + 菜单路径/选中 + 页 id,布局契约与字节序见 ui_net_sink.h。由 uiTask 轮询驱动,同上下文读静态导航状态:零画面副作用、免锁、不发日志。 新增只读接口 ui_menu_get_nav_state / ui_content_page_current_desc。 GOTO(命令 5)按页 id 查生成表直开内容页,以 VIEW 权限进入(与 "已过查看密码"同档,不代输任何密码)。编译期门控 DTU_BENCH || UI_REMO_ALLOW_GOTO:产品构建恒拒(status=4),模拟器 构建默认开启便于无板验证;执行类页(clear/reset)固件侧同样拒绝 (status=2,与主机 EXEC_PAGE_IDS 同一事实源);待机中拒绝(status=5), 由主机按键唤醒后再来。成功应答带回目标叶节点下标便于对账。 ui_sink 主机单测补导航侧链接假件 + 最小 lvgl 桩(仅本测试目录)。 产品构建 Keil 0 Error 0 Warning;ui_sink 单测 17/17。
This commit is contained in:
@@ -283,3 +283,23 @@ int ui_menu_init(void) {
|
||||
(unsigned)(mon.total_size - mon.free_size));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:读取菜单导航状态(契约见 ui_menu.h,Issue #69)
|
||||
* 入口参数:p_depth / p_path / p_sel - 三个只读出参,任一可为 NULL 表示不取
|
||||
* 返回值:无
|
||||
* 限定条件:同上下文(uiTask)读取;本函数零副作用、不打日志(每帧查询不刷日志)
|
||||
* 函数说明:直接交还静态数组指针(导航状态本身仅 17 B,拷贝反而是第二份要同步的
|
||||
* 事实);消费方按"深度+1"项数读取,越界由消费方的深度钳位负责
|
||||
*/
|
||||
void ui_menu_get_nav_state(uint8_t *p_depth, const uint8_t **p_path, const uint8_t **p_sel) {
|
||||
if (p_depth != NULL) {
|
||||
*p_depth = s_depth;
|
||||
}
|
||||
if (p_path != NULL) {
|
||||
*p_path = s_path;
|
||||
}
|
||||
if (p_sel != NULL) {
|
||||
*p_sel = s_sel;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user