From 6efbe91747591c547e2a46339e9bd89e7673d40b Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Sat, 13 Sep 2025 20:42:01 +0200 Subject: [PATCH] optimize init sequenze show SplashScreen while connecting Signed-off-by: Peter Siegmund --- firmware/.gitignore | 2 + firmware/components/analytics/CMakeLists.txt | 10 +++++ .../analytics/include/analytics.h} | 2 +- firmware/components/analytics/src/analytics.c | 20 +++++++++ .../CMakeLists.txt | 6 ++- .../include/ble_manager.h | 0 .../include/wifi_manager.h | 10 +++++ .../src/ble_manager.c | 0 .../connectivity-manager/src/wifi_manager.c} | 6 +-- .../components/insa/src/ui/SplashScreen.cpp | 19 +++------ firmware/main/CMakeLists.txt | 7 +--- firmware/main/app_task.cpp | 9 ++++ firmware/main/main.cpp | 42 +------------------ 13 files changed, 69 insertions(+), 64 deletions(-) create mode 100644 firmware/components/analytics/CMakeLists.txt rename firmware/{main/wifi_handler.h => components/analytics/include/analytics.h} (72%) create mode 100644 firmware/components/analytics/src/analytics.c rename firmware/components/{ble-manager => connectivity-manager}/CMakeLists.txt (59%) rename firmware/components/{ble-manager => connectivity-manager}/include/ble_manager.h (100%) create mode 100644 firmware/components/connectivity-manager/include/wifi_manager.h rename firmware/components/{ble-manager => connectivity-manager}/src/ble_manager.c (100%) rename firmware/{main/wifi_handler.c => components/connectivity-manager/src/wifi_manager.c} (97%) diff --git a/firmware/.gitignore b/firmware/.gitignore index c6be05b..94dd817 100644 --- a/firmware/.gitignore +++ b/firmware/.gitignore @@ -38,3 +38,5 @@ bin/ components/**/*.a *.ninja Testing/* + +**/insights_auth_key.txt diff --git a/firmware/components/analytics/CMakeLists.txt b/firmware/components/analytics/CMakeLists.txt new file mode 100644 index 0000000..4d1d66f --- /dev/null +++ b/firmware/components/analytics/CMakeLists.txt @@ -0,0 +1,10 @@ +idf_component_register(SRCS + src/analytics.c + INCLUDE_DIRS "include" + REQUIRES + rmaker_common + esp_insights + rmaker_common +) + +target_add_binary_data(${COMPONENT_TARGET} "insights_auth_key.txt" TEXT) diff --git a/firmware/main/wifi_handler.h b/firmware/components/analytics/include/analytics.h similarity index 72% rename from firmware/main/wifi_handler.h rename to firmware/components/analytics/include/analytics.h index b5d97c3..4230b81 100644 --- a/firmware/main/wifi_handler.h +++ b/firmware/components/analytics/include/analytics.h @@ -4,7 +4,7 @@ extern "C" { #endif - void wifi_init_sta(void); + void analytics_init(void); #ifdef __cplusplus } #endif diff --git a/firmware/components/analytics/src/analytics.c b/firmware/components/analytics/src/analytics.c new file mode 100644 index 0000000..e20c528 --- /dev/null +++ b/firmware/components/analytics/src/analytics.c @@ -0,0 +1,20 @@ +#include "analytics.h" +#include "esp_insights.h" +#include "esp_rmaker_utils.h" + +extern const char insights_auth_key_start[] asm("_binary_insights_auth_key_txt_start"); +extern const char insights_auth_key_end[] asm("_binary_insights_auth_key_txt_end"); + +void analytics_init(void) +{ + esp_insights_config_t config = { + .log_type = ESP_DIAG_LOG_TYPE_ERROR | ESP_DIAG_LOG_TYPE_EVENT | ESP_DIAG_LOG_TYPE_WARNING, + .node_id = NULL, + .auth_key = insights_auth_key_start, + .alloc_ext_ram = false, + }; + + esp_insights_init(&config); + + esp_rmaker_time_sync_init(NULL); +} diff --git a/firmware/components/ble-manager/CMakeLists.txt b/firmware/components/connectivity-manager/CMakeLists.txt similarity index 59% rename from firmware/components/ble-manager/CMakeLists.txt rename to firmware/components/connectivity-manager/CMakeLists.txt index 34dd6b1..0749449 100644 --- a/firmware/components/ble-manager/CMakeLists.txt +++ b/firmware/components/connectivity-manager/CMakeLists.txt @@ -1,7 +1,11 @@ idf_component_register(SRCS src/ble_manager.c + src/wifi_manager.c INCLUDE_DIRS "include" PRIV_REQUIRES bt + driver nvs_flash -) \ No newline at end of file + esp_insights + led-manager +) diff --git a/firmware/components/ble-manager/include/ble_manager.h b/firmware/components/connectivity-manager/include/ble_manager.h similarity index 100% rename from firmware/components/ble-manager/include/ble_manager.h rename to firmware/components/connectivity-manager/include/ble_manager.h diff --git a/firmware/components/connectivity-manager/include/wifi_manager.h b/firmware/components/connectivity-manager/include/wifi_manager.h new file mode 100644 index 0000000..2fe4061 --- /dev/null +++ b/firmware/components/connectivity-manager/include/wifi_manager.h @@ -0,0 +1,10 @@ +#pragma once + +#ifdef __cplusplus +extern "C" +{ +#endif + void wifi_manager_init(void); +#ifdef __cplusplus +} +#endif diff --git a/firmware/components/ble-manager/src/ble_manager.c b/firmware/components/connectivity-manager/src/ble_manager.c similarity index 100% rename from firmware/components/ble-manager/src/ble_manager.c rename to firmware/components/connectivity-manager/src/ble_manager.c diff --git a/firmware/main/wifi_handler.c b/firmware/components/connectivity-manager/src/wifi_manager.c similarity index 97% rename from firmware/main/wifi_handler.c rename to firmware/components/connectivity-manager/src/wifi_manager.c index 5c789da..798561e 100644 --- a/firmware/main/wifi_handler.c +++ b/firmware/components/connectivity-manager/src/wifi_manager.c @@ -1,4 +1,4 @@ -#include "wifi_handler.h" +#include "wifi_manager.h" #include "esp_event.h" #include "esp_insights.h" @@ -21,7 +21,7 @@ static EventGroupHandle_t s_wifi_event_group; #define WIFI_CONNECTED_BIT BIT0 #define WIFI_FAIL_BIT BIT1 -static const char *TAG = "wifi_handler"; +static const char *TAG = "wifi_manager"; static int s_retry_num = 0; @@ -72,7 +72,7 @@ static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_ } } -void wifi_init_sta() +void wifi_manager_init() { s_wifi_event_group = xEventGroupCreate(); diff --git a/firmware/components/insa/src/ui/SplashScreen.cpp b/firmware/components/insa/src/ui/SplashScreen.cpp index dc275f0..9e00f8c 100644 --- a/firmware/components/insa/src/ui/SplashScreen.cpp +++ b/firmware/components/insa/src/ui/SplashScreen.cpp @@ -1,13 +1,10 @@ #include "ui/SplashScreen.h" +#include "analytics.h" #include "ui/MainMenu.h" +#include "wifi_manager.h" -#ifndef ESP32 -#include -#include -#endif - -uint64_t counter = 0; +uint64_t splashTime = 0; SplashScreen::SplashScreen(menu_options_t *options) : Widget(options->u8g2), m_options(options) { @@ -15,18 +12,14 @@ SplashScreen::SplashScreen(menu_options_t *options) : Widget(options->u8g2), m_o void SplashScreen::update(const uint64_t dt) { - counter += dt; - if (counter >= 3000) + splashTime += dt; + if (splashTime > 100) { - counter = 0; if (m_options && m_options->setScreen) { m_options->setScreen(std::make_shared(m_options)); } } -#ifndef ESP32 - std::this_thread::sleep_for(std::chrono::milliseconds(1)); -#endif } void SplashScreen::render() @@ -36,4 +29,4 @@ void SplashScreen::render() u8g2_DrawStr(u8g2, 30, u8g2->height / 2 + 5, "Axel Janz"); u8g2_SetFont(u8g2, u8g2_font_haxrcorp4089_tr); u8g2_DrawStr(u8g2, 35, 50, "Initialisierung..."); -} \ No newline at end of file +} diff --git a/firmware/main/CMakeLists.txt b/firmware/main/CMakeLists.txt index 77bb392..f910728 100755 --- a/firmware/main/CMakeLists.txt +++ b/firmware/main/CMakeLists.txt @@ -4,21 +4,18 @@ idf_component_register(SRCS button_handling.c i2c_checker.c hal/u8g2_esp32_hal.c - wifi_handler.c INCLUDE_DIRS "." PRIV_REQUIRES + analytics insa - ble-manager + connectivity-manager led-manager persistence-manager u8g2 nvs_flash - driver esp_timer esp_event esp_wifi app_update rmaker_common ) - -target_add_binary_data(${COMPONENT_TARGET} "insights_auth_key.txt" TEXT) diff --git a/firmware/main/app_task.cpp b/firmware/main/app_task.cpp index 8d75cf9..2323c28 100644 --- a/firmware/main/app_task.cpp +++ b/firmware/main/app_task.cpp @@ -1,5 +1,6 @@ #include "app_task.h" +#include "analytics.h" #include "button_handling.h" #include "common/InactivityTracker.h" #include "driver/i2c.h" @@ -14,6 +15,7 @@ #include "ui/ClockScreenSaver.h" #include "ui/ScreenSaver.h" #include "ui/SplashScreen.h" +#include "wifi_manager.h" #define PIN_RST GPIO_NUM_NC @@ -102,6 +104,10 @@ static void init_ui(void) auto screensaver = std::make_shared(&options); options.pushScreen(screensaver); }); + + u8g2_ClearBuffer(&u8g2); + m_widget->render(); + u8g2_SendBuffer(&u8g2); } static void handle_button(uint8_t button) @@ -160,6 +166,9 @@ void app_task(void *args) setup_buttons(); init_ui(); + wifi_manager_init(); + analytics_init(); + auto oldTime = esp_timer_get_time(); while (true) diff --git a/firmware/main/main.cpp b/firmware/main/main.cpp index b57a2eb..488c2a3 100644 --- a/firmware/main/main.cpp +++ b/firmware/main/main.cpp @@ -3,38 +3,13 @@ #include "esp_event.h" #include "esp_insights.h" #include "esp_log.h" -#include "esp_ota_ops.h" -#include "esp_rmaker_utils.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "led_manager.h" #include "led_status.h" #include "nvs_flash.h" #include "sdkconfig.h" -#include "wifi_handler.h" - -static const char *TAG = "main"; - -extern const char insights_auth_key_start[] asm("_binary_insights_auth_key_txt_start"); -extern const char insights_auth_key_end[] asm("_binary_insights_auth_key_txt_end"); - -void show_partition(void) -{ - const esp_partition_t *running_partition = esp_ota_get_running_partition(); - - if (running_partition != NULL) - { - ESP_DIAG_EVENT(TAG, "Currently running partition: %s", running_partition->label); - ESP_DIAG_EVENT(TAG, " Type: %s", (running_partition->type == ESP_PARTITION_TYPE_APP) ? "APP" : "DATA"); - ESP_DIAG_EVENT(TAG, " Subtype: %d", running_partition->subtype); - ESP_DIAG_EVENT(TAG, " Offset: 0x%lx", running_partition->address); - ESP_DIAG_EVENT(TAG, " Size: %ld bytes", running_partition->size); - } - else - { - ESP_LOGE(TAG, "Could not determine the running partition!"); - } -} +#include "wifi_manager.h" #ifdef __cplusplus extern "C" @@ -50,23 +25,8 @@ extern "C" ESP_ERROR_CHECK(nvs_flash_init()); } - show_partition(); - led_status_init(CONFIG_STATUS_WLED_PIN); - wifi_init_sta(); - - esp_insights_config_t config = { - .log_type = ESP_DIAG_LOG_TYPE_ERROR | ESP_DIAG_LOG_TYPE_EVENT | ESP_DIAG_LOG_TYPE_WARNING, - .node_id = nullptr, - .auth_key = insights_auth_key_start, - .alloc_ext_ram = false, - }; - - esp_insights_init(&config); - - esp_rmaker_time_sync_init(NULL); - wled_init(); register_handler();