初始化整定

This commit is contained in:
冯佳
2025-12-22 16:00:51 +08:00
parent 8bddc34c88
commit 331c9a285d
58 changed files with 1794 additions and 9011 deletions

View File

@ -1,332 +0,0 @@
/**
**********************************************************************************************************************
* @file menu_api.h
* @brief 菜单组件对外API接口定义
* @author menu_component
* @date 2025-12-19
**********************************************************************************************************************
*/
#ifndef MENU_API_H
#define MENU_API_H
/* Includes ----------------------------------------------------------------------------------------------------------*/
#include "../src/core/menu_config.h"
#include "../src/core/menu_types.h"
/* 宏定义 -----------------------------------------------------------------------------------------------------------*/
#define MENU_API_VERSION "1.0.1"
/* 函数声明 ---------------------------------------------------------------------------------------------------------*/
/* 菜单初始化与反初始化 ---------------------------------------------------------------------------------------------*/
/**
* @brief 初始化菜单组件
* @return 错误码
*/
MenuErrCode menu_init(void);
/**
* @brief 反初始化菜单组件
* @return 错误码
*/
MenuErrCode menu_deinit(void);
/* 菜单节点管理 -----------------------------------------------------------------------------------------------------*/
/**
* @brief 注册菜单节点
* @param node_id 节点ID0表示自动分配
* @param parent_id 父节点ID
* @param name 节点名称
* @param enter_cb 进入回调
* @param exit_cb 退出回调
* @return 实际分配的节点ID
*/
MenuNodeId menu_register_node(MenuNodeId node_id, MenuNodeId parent_id, const char* name, MenuCallback enter_cb, MenuCallback exit_cb);
/**
* @brief 批量注册菜单节点
* @param nodes 节点数组
* @param count 节点数量
* @return 错误码
*/
MenuErrCode menu_register_nodes(const struct MenuNode* nodes, uint16_t count);
/**
* @brief 注销菜单节点
* @param node_id 节点ID
* @return 错误码
*/
MenuErrCode menu_unregister_node(MenuNodeId node_id);
/**
* @brief 更新菜单节点
* @param node_id 节点ID
* @param name 节点名称NULL表示不更新
* @param enter_cb 进入回调NULL表示不更新
* @param exit_cb 退出回调NULL表示不更新
* @return 错误码
*/
MenuErrCode menu_update_node(MenuNodeId node_id, const char* name, MenuCallback enter_cb, MenuCallback exit_cb);
/**
* @brief 查找菜单节点
* @param node_id 节点ID
* @return 节点指针未找到返回NULL
*/
const struct MenuNode* menu_find_node(MenuNodeId node_id);
/* 菜单事件处理 -----------------------------------------------------------------------------------------------------*/
/**
* @brief 发送菜单事件
* @param event_type 事件类型
* @param priority 事件优先级0-30最高
* @return 错误码
*/
MenuErrCode menu_post_event(MenuEventType event_type, uint8_t priority);
/**
* @brief 发送带数据的菜单事件
* @param event_type 事件类型
* @param priority 事件优先级0-30最高
* @param data 事件数据
* @return 错误码
*/
MenuErrCode menu_post_event_with_data(MenuEventType event_type, uint8_t priority, void* data);
/* 菜单导航操作 -----------------------------------------------------------------------------------------------------*/
/**
* @brief 菜单主循环,处理事件和刷新显示
* @param tick 当前系统时间ms
* @return 错误码
*/
MenuErrCode menu_main_loop(uint32_t tick);
/**
* @brief 进入菜单
* @return 错误码
*/
MenuErrCode menu_enter(void);
/**
* @brief 退出菜单
* @return 错误码
*/
MenuErrCode menu_exit(void);
/**
* @brief 上移菜单项
* @return 错误码
*/
MenuErrCode menu_up(void);
/**
* @brief 下移菜单项
* @return 错误码
*/
MenuErrCode menu_down(void);
/**
* @brief 选择菜单项
* @param node_id 节点ID
* @return 错误码
*/
MenuErrCode menu_select(MenuNodeId node_id);
/**
* @brief 重置菜单,回到主菜单
* @return 错误码
*/
MenuErrCode menu_reset(void);
/* 菜单状态查询 -----------------------------------------------------------------------------------------------------*/
/**
* @brief 获取当前菜单状态
* @return 当前菜单状态
*/
MenuState menu_get_state(void);
/**
* @brief 获取当前选中的节点ID
* @return 当前节点ID
*/
MenuNodeId menu_get_current_node(void);
/**
* @brief 获取导航深度
* @return 导航深度
*/
uint8_t menu_get_nav_depth(void);
/**
* @brief 获取导航路径
* @param path 用于存储导航路径的数组
* @param max_depth 数组最大深度
* @return 实际获取的深度
*/
uint8_t menu_get_nav_path(MenuNodeId* path, uint8_t max_depth);
/* 状态机扩展接口 ---------------------------------------------------------------------------------------------------*/
#if MENU_CONFIG_ENABLE_STATE_MACHINE_EXT
/**
* @brief 注册自定义状态转换规则
* @param transition 状态转换规则
* @return 错误码
*/
MenuErrCode menu_state_register_transition(const MenuStateTransition* transition);
/**
* @brief 注销自定义状态转换规则
* @param current_state 当前状态
* @param event 触发事件
* @return 错误码
*/
MenuErrCode menu_state_unregister_transition(MenuState current_state, MenuEventType event);
/**
* @brief 切换到指定状态
* @param state 目标状态
* @return 错误码
*/
MenuErrCode menu_state_switch(MenuState state);
#endif
/* 内存监控接口 -----------------------------------------------------------------------------------------------------*/
#if MENU_CONFIG_ENABLE_MEM_MONITOR
/**
* @brief 获取已使用节点数量
* @return 已使用节点数量
*/
uint16_t menu_mem_get_used_nodes(void);
/**
* @brief 获取空闲节点数量
* @return 空闲节点数量
*/
uint16_t menu_mem_get_free_nodes(void);
/**
* @brief 获取最大节点数量
* @return 最大节点数量
*/
uint16_t menu_mem_get_max_nodes(void);
#endif
/* 权限管理接口 -----------------------------------------------------------------------------------------------------*/
#if MENU_CONFIG_ENABLE_PERMISSION
/**
* @brief 注册角色
* @param role 角色结构体指针
* @return 错误码
*/
MenuErrCode menu_permission_register_role(const MenuRole* role);
/**
* @brief 注销角色
* @param role_id 角色ID
* @return 错误码
*/
MenuErrCode menu_permission_unregister_role(MenuRoleId role_id);
/**
* @brief 设置当前角色
* @param role_id 角色ID
* @return 错误码
*/
MenuErrCode menu_permission_set_current_role(MenuRoleId role_id);
/**
* @brief 获取当前角色
* @return 当前角色ID
*/
MenuRoleId menu_permission_get_current_role(void);
/**
* @brief 更新节点权限级别
* @param node_id 节点ID
* @param permission_level 权限级别
* @return 错误码
*/
MenuErrCode menu_permission_update_node_level(MenuNodeId node_id, MenuPermissionLevel permission_level);
/**
* @brief 获取节点权限级别
* @param node_id 节点ID
* @return 节点权限级别
*/
MenuPermissionLevel menu_permission_get_node_level(MenuNodeId node_id);
/**
* @brief 检查节点是否可访问
* @param node_id 节点ID
* @return true表示可访问false表示不可访问
*/
bool menu_permission_check_node_access(MenuNodeId node_id);
/**
* @brief 获取角色信息
* @param role_id 角色ID
* @return 角色结构体指针NULL表示角色不存在
*/
const MenuRole* menu_permission_get_role(MenuRoleId role_id);
#endif
/* 状态持久化接口 ---------------------------------------------------------------------------------------------------*/
#if MENU_CONFIG_ENABLE_PERSISTENCE
/**
* @brief 注册持久化回调函数
* @param save_cb 保存回调函数
* @param restore_cb 恢复回调函数
* @return 错误码
*/
MenuErrCode menu_persistence_register_callback(MenuPersistenceCallback save_cb, MenuRestoreCallback restore_cb);
/**
* @brief 启用或禁用自动保存
* @param enable true表示启用false表示禁用
* @return 错误码
*/
MenuErrCode menu_persistence_set_auto_save(bool enable);
/**
* @brief 获取自动保存状态
* @return true表示启用false表示禁用
*/
bool menu_persistence_get_auto_save(void);
/**
* @brief 设置自动保存间隔
* @param interval 自动保存间隔ms
* @return 错误码
*/
MenuErrCode menu_persistence_set_auto_save_interval(uint32_t interval);
/**
* @brief 获取自动保存间隔
* @return 自动保存间隔ms
*/
uint32_t menu_persistence_get_auto_save_interval(void);
/**
* @brief 手动保存菜单状态
* @return 错误码
*/
MenuErrCode menu_persistence_save(void);
/**
* @brief 恢复菜单状态
* @return 错误码
*/
MenuErrCode menu_persistence_restore(void);
#endif
#endif /* MENU_API_H */