75 lines
1.8 KiB
C
75 lines
1.8 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, MenuEventPriority priority);
|
|
MenuErrCode menu_post_event_normal(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);
|
|
MenuErrCode menu_persistence_clear(void);
|
|
bool menu_persistence_is_dirty(void);
|
|
|
|
// Dynamic menu updates
|
|
MenuErrCode menu_refresh(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // MENU_API_H
|