/* * 模块名称:UI 页面注册表头文件(自动生成) * 模块功能:叶子节点 → 内容页描述符的映射表与查询 API;密码页非节点绑定,单独出口 * 适用平台:STM32F407ZGTx / PC 模拟器(共用源码) * 作者:王建锋 * 创建日期:2026-10-15 * 自动生成:本文件由 tools/menu_gen/gen_menu.py 从 ui_menu_tree.txt 的 #page= 注记生成,请勿手改。 * 新增一页:菜单树给叶子加 " #page=<模块名>" + 写 ui_page_<模块名>.c,重跑生成器 * (双端注册 uvprojx/CMakeLists 亦由生成器自动写入) */ #ifndef UI_PAGE_REGISTRY_H #define UI_PAGE_REGISTRY_H #include #include "ui_content_page.h" #ifdef __cplusplus extern "C" { #endif /* 注册表条目:一个绑定了内容页的菜单叶子(表序 = 节点下标升序) */ typedef struct { uint8_t node; /* 菜单叶子节点下标(g_menu_tab 下标) */ const content_page_def_t *desc; /* 页面描述符(Flash const) */ } ui_page_entry_t; #define UI_PAGE_MAP_COUNT 11u /* 绑定了内容页的叶子数 */ extern const ui_page_entry_t g_ui_page_map[UI_PAGE_MAP_COUNT]; /* * 函数功能:查叶子节点绑定的内容页描述符 * 入口参数:node - 菜单叶子节点下标 uint8_t * 返回值:页面描述符;该叶子未绑定内容页返回 NULL const content_page_def_t * * 限定条件:node < UI_MENU_TAB_COUNT * 函数说明:取代旧 ui_menu.c 手写 case 分发——映射的唯一真源是 ui_menu_tree.txt, * 表序变化不会造成"下标硬编码错位"(线性扫描:绑定页是个位数量级) */ const content_page_def_t *ui_page_registry_for(uint8_t node); /* * 函数功能:取密码页描述符(需密码叶子统一进这一页) * 入口参数:无 * 返回值:密码页描述符;菜单树未声明 @password 指令时返回 NULL const content_page_def_t * * 限定条件:无 * 函数说明:密码页**不是**节点绑定的(任何 #P 叶子都进同一页),故不进 node→desc 映射, * 由本接口单独出口;取值来自 ui_menu_tree.txt 的 `# @password=<模块名>` 指令 */ const content_page_def_t *ui_page_registry_password(void); #ifdef __cplusplus } #endif #endif /* UI_PAGE_REGISTRY_H */