#ifndef MENU_API_H #define MENU_API_H #include "../src/core/menu_types.h" #ifdef __cplusplus extern "C" { #endif // Initialization MenuErrCode menu_init(void); void menu_deinit(void); // Core Loop void menu_main_loop(uint32_t tick); // Node Registration MenuNodeId menu_register_node( MenuNodeId id, MenuNodeId parent_id, const char* name, MenuCallback enter_cb, MenuCallback exit_cb ); // Extended registration (Optimization) MenuNodeId menu_register_node_ex( MenuNodeId id, MenuNodeId parent_id, const char* name, MenuCallback enter_cb, MenuCallback exit_cb, MenuCallback render_cb, void* user_data ); // Batch node registration MenuErrCode menu_register_nodes( const MenuNode* nodes, size_t count, MenuNodeId* out_ids ); // Event Handling MenuErrCode menu_post_event(MenuEventType type, uint32_t param); // Navigation MenuErrCode menu_enter(void); // Enter root MenuErrCode menu_back(void); // Parameter Binding MenuErrCode menu_node_bind_param(MenuNodeId node_id, uint16_t param_id); // Permission Management MenuErrCode menu_permission_register_role(uint8_t role_id, const char* name, MenuPermissionLevel level); MenuErrCode menu_permission_set_current_role(uint8_t role_id); MenuErrCode menu_permission_update_node_level(MenuNodeId node_id, MenuPermissionLevel level); bool menu_permission_check_node_access(MenuNodeId node_id); // Persistence Management MenuErrCode menu_persistence_save(void); MenuErrCode menu_persistence_load(void); // Dynamic menu updates MenuErrCode menu_refresh(void); #ifdef __cplusplus } #endif #endif // MENU_API_H