From 8a0ec8b657800863208d7b863f0fe4b279dffcfb Mon Sep 17 00:00:00 2001 From: virgil Date: Mon, 30 Jun 2025 22:41:42 +0800 Subject: [PATCH] fix: fixed the issue of slow startup for devices without cameras (#866) --- main/boards/sensecap-watcher/config.json | 3 ++- main/boards/sensecap-watcher/config_en.json | 1 + main/boards/sensecap-watcher/sensecap_watcher.cc | 2 +- main/boards/sensecap-watcher/sscma_camera.cc | 12 ++++++++++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/main/boards/sensecap-watcher/config.json b/main/boards/sensecap-watcher/config.json index b56fbd1f..48d60bbd 100644 --- a/main/boards/sensecap-watcher/config.json +++ b/main/boards/sensecap-watcher/config.json @@ -8,7 +8,8 @@ "CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=\"partitions/v1/32m.csv\"", "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", "CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=n", - "CONFIG_IDF_EXPERIMENTAL_FEATURES=y" + "CONFIG_IDF_EXPERIMENTAL_FEATURES=y", + "CONFIG_FREERTOS_HZ=1000" ] } ] diff --git a/main/boards/sensecap-watcher/config_en.json b/main/boards/sensecap-watcher/config_en.json index 429ac039..3dc0d077 100644 --- a/main/boards/sensecap-watcher/config_en.json +++ b/main/boards/sensecap-watcher/config_en.json @@ -9,6 +9,7 @@ "CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y", "CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=n", "CONFIG_IDF_EXPERIMENTAL_FEATURES=y", + "CONFIG_FREERTOS_HZ=1000", "CONFIG_LANGUAGE_EN_US=y", "CONFIG_SR_WN_WN9_JARVIS_TTS=y" ] diff --git a/main/boards/sensecap-watcher/sensecap_watcher.cc b/main/boards/sensecap-watcher/sensecap_watcher.cc index 31dbeae4..48ff57c1 100644 --- a/main/boards/sensecap-watcher/sensecap_watcher.cc +++ b/main/boards/sensecap-watcher/sensecap_watcher.cc @@ -548,9 +548,9 @@ public: InitializeButton(); InitializeKnob(); Initializespd2010Display(); + GetBacklight()->RestoreBrightness(); // 对于不带摄像头的版本,InitializeCamera需要3s, 所以先恢复背光亮度 InitializeCamera(); InitializeIot(); - GetBacklight()->RestoreBrightness(); } virtual AudioCodec* GetAudioCodec() override { diff --git a/main/boards/sensecap-watcher/sscma_camera.cc b/main/boards/sensecap-watcher/sscma_camera.cc index 6051a891..71af2fd6 100644 --- a/main/boards/sensecap-watcher/sscma_camera.cc +++ b/main/boards/sensecap-watcher/sscma_camera.cc @@ -83,6 +83,16 @@ SscmaCamera::SscmaCamera(esp_io_expander_handle_t io_exp_handle) { sscma_client_init(sscma_client_handle_); + ESP_LOGI(TAG, "SSCMA client initialized"); + // 设置分辨率 + // 3 = 640x480 + if (sscma_client_set_sensor(sscma_client_handle_, 1, 3, true)) { + ESP_LOGE(TAG, "Failed to set sensor"); + sscma_client_del(sscma_client_handle_); + sscma_client_handle_ = NULL; + return; + } + // 获取设备信息 sscma_client_info_t *info; if (sscma_client_get_info(sscma_client_handle_, &info, true) == ESP_OK) { @@ -90,8 +100,6 @@ SscmaCamera::SscmaCamera(esp_io_expander_handle_t io_exp_handle) { info->id ? info->id : "NULL", info->name ? info->name : "NULL"); } - sscma_client_set_sensor(sscma_client_handle_, 1, 3, true); // 3 = 640x480 - // 初始化JPEG数据的内存 jpeg_data_.len = 0; jpeg_data_.buf = (uint8_t*)heap_caps_malloc(IMG_JPEG_BUF_SIZE, MALLOC_CAP_SPIRAM);;