优化一版
This commit is contained in:
@ -81,6 +81,11 @@ void setup_menu(void) {
|
||||
// Child of Settings: Brightness
|
||||
MenuNodeId bri_node = menu_register_node(0, settings, "Brightness", on_enter_brightness, NULL);
|
||||
menu_node_bind_param(bri_node, 2); // Bind to Brightness param (ID 2)
|
||||
|
||||
// Set permission levels for nodes
|
||||
menu_permission_update_node_level(settings, 1); // User level required for Settings
|
||||
menu_permission_update_node_level(vol_node, 1); // User level required for Volume
|
||||
menu_permission_update_node_level(bri_node, 1); // User level required for Brightness
|
||||
}
|
||||
|
||||
// Stub for binding param (will implement in API)
|
||||
@ -96,24 +101,48 @@ int main(void) {
|
||||
menu_port_log("Menu System Demo Started");
|
||||
menu_enter(); // Enter root
|
||||
|
||||
// Simulation Loop
|
||||
int steps = 0;
|
||||
while (steps < 20) {
|
||||
menu_main_loop(0);
|
||||
|
||||
// Simulate inputs
|
||||
if (steps == 2) {
|
||||
menu_port_log("User Press: ENTER");
|
||||
menu_post_event(MENU_EVENT_KEY_ENTER, 0);
|
||||
}
|
||||
if (steps == 4) {
|
||||
menu_port_log("User Press: DOWN");
|
||||
menu_post_event(MENU_EVENT_KEY_DOWN, 0);
|
||||
}
|
||||
|
||||
steps++;
|
||||
// sleep
|
||||
// Demo: Permission management
|
||||
menu_port_log("=== Permission Management Demo ===");
|
||||
menu_port_log("Current role: Guest");
|
||||
menu_port_log("Trying to enter Settings...");
|
||||
menu_post_event_normal(MENU_EVENT_KEY_ENTER, 0);
|
||||
menu_main_loop(0);
|
||||
|
||||
menu_port_log("Switching to User role...");
|
||||
menu_permission_set_current_role(2); // Switch to User role
|
||||
menu_post_event_normal(MENU_EVENT_KEY_ENTER, 0);
|
||||
menu_main_loop(0);
|
||||
|
||||
// Navigate to Volume setting
|
||||
menu_post_event_normal(MENU_EVENT_KEY_DOWN, 0);
|
||||
menu_main_loop(0);
|
||||
menu_post_event_normal(MENU_EVENT_KEY_ENTER, 0);
|
||||
menu_main_loop(0);
|
||||
|
||||
// Demo: Persistence
|
||||
menu_port_log("=== Persistence Demo ===");
|
||||
menu_port_log("Saving current state...");
|
||||
menu_persistence_save();
|
||||
|
||||
menu_port_log("Exiting Volume menu...");
|
||||
menu_post_event_normal(MENU_EVENT_MENU_EXIT, 0);
|
||||
menu_main_loop(0);
|
||||
|
||||
menu_port_log("Loading saved state...");
|
||||
menu_persistence_load();
|
||||
menu_main_loop(0);
|
||||
|
||||
// Demo: Clear persistence
|
||||
menu_port_log("=== Clear Persistence Demo ===");
|
||||
menu_port_log("Clearing saved state...");
|
||||
menu_persistence_clear();
|
||||
|
||||
menu_port_log("Trying to load cleared state (should fail)...");
|
||||
MenuErrCode err = menu_persistence_load();
|
||||
if (err != MENU_ERR_OK) {
|
||||
menu_port_log("Load failed as expected (state was cleared)");
|
||||
}
|
||||
|
||||
menu_port_log("Menu System Demo Completed");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user