Files
menu/api/menu_api.h
2025-12-23 09:06:47 +08:00

72 lines
1.6 KiB
C

#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