优化一版

This commit is contained in:
冯佳
2025-12-23 09:45:36 +08:00
parent 3a5491c11e
commit cf1803dd77
15 changed files with 577 additions and 146 deletions

View File

@ -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;
}