From 6459c8f4d7fc83dd20b86a4820d613dbfbc40bf6 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 18 Jun 2026 23:12:39 -0600 Subject: [PATCH] dashboard: process swipe page switches from loop --- .../esp32-s3-dashboard/dashboard_config.h | 2 +- .../esp32-s3-dashboard/esp32-s3-dashboard.ino | 32 +++++++++---------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/firmware/esp32-s3-dashboard/dashboard_config.h b/firmware/esp32-s3-dashboard/dashboard_config.h index 5b52a3a..43357d0 100644 --- a/firmware/esp32-s3-dashboard/dashboard_config.h +++ b/firmware/esp32-s3-dashboard/dashboard_config.h @@ -1,6 +1,6 @@ #pragma once -static const char *DASHBOARD_VERSION = "0.1.91-battery-page-debug"; +static const char *DASHBOARD_VERSION = "0.1.92-loop-page-switch"; // Update these if your Cargo ESP AP credentials are different. //static const char *CARGO_WIFI_SSID = "OverlandController"; diff --git a/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino b/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino index 7f66d7e..a07f8d3 100644 --- a/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino +++ b/firmware/esp32-s3-dashboard/esp32-s3-dashboard.ino @@ -559,28 +559,27 @@ static String signed_float_text(float value, int decimals, const char *suffix) static bool dashboard_page_switch_queued = false; - -static void dashboard_page_switch_async_cb(void *user_data) -{ - DashboardScreen target = (DashboardScreen)(intptr_t)user_data; - dashboard_page_switch_queued = false; - - if (target == SCREEN_BATTERY_DETAIL) { - Serial.println("DEBUG PAGE: Switching to Battery Detail"); - } else { - Serial.println("DEBUG PAGE: Switching to Overview"); - } - - show_dashboard_screen(target); -} +static DashboardScreen dashboard_page_switch_target = SCREEN_OVERVIEW; static void queue_dashboard_page_switch(DashboardScreen target) { if (dashboard_page_switch_queued) return; if (target == current_dashboard_screen) return; + dashboard_page_switch_target = target; dashboard_page_switch_queued = true; - lv_async_call(dashboard_page_switch_async_cb, (void *)(intptr_t)target); +} + +static void process_dashboard_page_switch() +{ + if (!dashboard_page_switch_queued) return; + + DashboardScreen target = dashboard_page_switch_target; + dashboard_page_switch_queued = false; + + lvgl_port_lock(-1); + show_dashboard_screen(target); + lvgl_port_unlock(); } static void dashboard_root_event_cb(lv_event_t *event) @@ -654,7 +653,6 @@ static void update_battery_detail_widgets() static void create_battery_detail_screen() { - Serial.println("DEBUG PAGE: Entering Battery Detail constructor"); lv_obj_t *screen = lv_scr_act(); lv_obj_clean(screen); current_dashboard_screen = SCREEN_BATTERY_DETAIL; @@ -692,7 +690,6 @@ static void create_battery_detail_screen() battery_detail_value_label(screen, "Cell Delta", &battery_detail_delta_label, 356, 504); update_battery_detail_widgets(); - Serial.println("DEBUG PAGE: Leaving Battery Detail constructor"); } static void show_dashboard_screen(DashboardScreen screen) @@ -1830,6 +1827,7 @@ void loop() update_system_status_label(); process_pending_relay_command(); poll_status_api(); + process_dashboard_page_switch(); delay(50); }