From 0b3b98eca7dc3c8982ae59ef91f1c6349515c67d Mon Sep 17 00:00:00 2001 From: Xiaoxia Date: Mon, 2 Feb 2026 09:53:06 +0800 Subject: [PATCH] Update esp-ml307 component version to 3.6.2 to support UART DMA (#1724) * Update esp-ml307 dependency version to ~3.6.0 in idf_component.yml * Update .gitignore to include 'dist/' directory, add ml307 and dual_network_board source files to CMakeLists.txt, and update esp-ml307 dependency version to ~3.6.2 in idf_component.yml. Refactor CompactWifiBoard and CompactWifiBoardLCD classes to inherit from WifiBoard instead of DualNetworkBoard, simplifying network handling logic. --- .gitignore | 1 + main/CMakeLists.txt | 2 ++ .../esp32_bread_board_lcd.cc | 25 +++++-------------- .../bread-compact-esp32/esp32_bread_board.cc | 24 +++++------------- main/idf_component.yml | 4 +-- 5 files changed, 17 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index a1b5d8e6..5326d47d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ tmp/ components/ managed_components/ build/ +dist/ .vscode/ .devcontainer/ sdkconfig.old diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index d03bbae7..2092c2ea 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -779,6 +779,8 @@ if(CONFIG_IDF_TARGET_ESP32) "display/lvgl_display/jpg/image_to_jpeg.cpp" "display/lvgl_display/jpg/jpeg_to_image.c" "boards/common/nt26_board.cc" + "boards/common/ml307_board.cc" + "boards/common/dual_network_board.cc" ) endif() diff --git a/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc b/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc index 8cf457e0..ce96efd6 100644 --- a/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc +++ b/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc @@ -1,4 +1,4 @@ -#include "dual_network_board.h" +#include "wifi_board.h" #include "codecs/no_audio_codec.h" #include "display/lcd_display.h" #include "system_reset.h" @@ -57,7 +57,7 @@ static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { #define TAG "ESP32-LCD-MarsbearSupport" -class CompactWifiBoardLCD : public DualNetworkBoard { +class CompactWifiBoardLCD : public WifiBoard { private: Button boot_button_; Button touch_button_; @@ -136,26 +136,14 @@ private: boot_button_.OnClick([this]() { auto& app = Application::GetInstance(); - if (GetNetworkType() == NetworkType::WIFI) { - if (app.GetDeviceState() == kDeviceStateStarting) { - // cast to WifiBoard - auto& wifi_board = static_cast(GetCurrentBoard()); - wifi_board.EnterWifiConfigMode(); - return; - } + if (app.GetDeviceState() == kDeviceStateStarting) { + EnterWifiConfigMode(); + return; } gpio_set_level(BUILTIN_LED_GPIO, 1); app.ToggleChatState(); }); - - boot_button_.OnDoubleClick([this]() { - auto& app = Application::GetInstance(); - if (app.GetDeviceState() == kDeviceStateStarting || app.GetDeviceState() == kDeviceStateWifiConfiguring) { - SwitchNetworkType(); - } - }); - asr_button_.OnClick([this]() { std::string wake_word="你好小智"; Application::GetInstance().WakeWordInvoke(wake_word); @@ -174,8 +162,7 @@ private: } public: - CompactWifiBoardLCD() : - DualNetworkBoard(ML307_TX_PIN, ML307_RX_PIN), + CompactWifiBoardLCD() : WifiBoard(), boot_button_(BOOT_BUTTON_GPIO), touch_button_(TOUCH_BUTTON_GPIO), asr_button_(ASR_BUTTON_GPIO) { InitializeSpi(); InitializeLcdDisplay(); diff --git a/main/boards/bread-compact-esp32/esp32_bread_board.cc b/main/boards/bread-compact-esp32/esp32_bread_board.cc index 31b6e7d1..0dac72fc 100644 --- a/main/boards/bread-compact-esp32/esp32_bread_board.cc +++ b/main/boards/bread-compact-esp32/esp32_bread_board.cc @@ -1,4 +1,4 @@ -#include "dual_network_board.h" +#include "wifi_board.h" #include "codecs/no_audio_codec.h" #include "system_reset.h" #include "application.h" @@ -16,7 +16,7 @@ #define TAG "ESP32-MarsbearSupport" -class CompactWifiBoard : public DualNetworkBoard { +class CompactWifiBoard : public WifiBoard { private: Button boot_button_; Button touch_button_; @@ -104,26 +104,14 @@ private: boot_button_.OnClick([this]() { auto& app = Application::GetInstance(); - if (GetNetworkType() == NetworkType::WIFI) { - if (app.GetDeviceState() == kDeviceStateStarting) { - // cast to WifiBoard - auto& wifi_board = static_cast(GetCurrentBoard()); - wifi_board.EnterWifiConfigMode(); - return; - } + if (app.GetDeviceState() == kDeviceStateStarting) { + EnterWifiConfigMode(); + return; } gpio_set_level(BUILTIN_LED_GPIO, 1); app.ToggleChatState(); }); - - boot_button_.OnDoubleClick([this]() { - auto& app = Application::GetInstance(); - if (app.GetDeviceState() == kDeviceStateStarting || app.GetDeviceState() == kDeviceStateWifiConfiguring) { - SwitchNetworkType(); - } - }); - asr_button_.OnClick([this]() { std::string wake_word="你好小智"; Application::GetInstance().WakeWordInvoke(wake_word); @@ -145,7 +133,7 @@ private: } public: - CompactWifiBoard() : DualNetworkBoard(ML307_TX_PIN, ML307_RX_PIN), boot_button_(BOOT_BUTTON_GPIO), touch_button_(TOUCH_BUTTON_GPIO), asr_button_(ASR_BUTTON_GPIO) + CompactWifiBoard() : WifiBoard(), boot_button_(BOOT_BUTTON_GPIO), touch_button_(TOUCH_BUTTON_GPIO), asr_button_(ASR_BUTTON_GPIO) { InitializeDisplayI2c(); InitializeSsd1306Display(); diff --git a/main/idf_component.yml b/main/idf_component.yml index ae9ea509..ffb07923 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -22,9 +22,9 @@ dependencies: 78/esp-wifi-connect: ~3.0.2 espressif/esp_audio_effects: ~1.2.1 espressif/esp_audio_codec: ~2.4.1 - 78/esp-ml307: ~3.5.3 + 78/esp-ml307: ~3.6.2 78/uart-eth-modem: - version: ~0.2.1 + version: ~0.3.0 rules: - if: target not in [esp32] 78/xiaozhi-fonts: ~1.6.0