From d1c047d0604ea3fc45c89d9e5ef57a121e9f247e Mon Sep 17 00:00:00 2001 From: Terrence Date: Mon, 21 Jul 2025 05:46:05 +0800 Subject: [PATCH] Update to esp-ml307@3.1.1 --- CMakeLists.txt | 2 +- main/boards/common/esp32_camera.cc | 2 +- main/boards/sensecap-watcher/sscma_camera.cc | 2 +- main/idf_component.yml | 2 +- main/ota.cc | 8 ++++---- main/ota.h | 2 +- main/protocols/mqtt_protocol.cc | 17 ++--------------- main/protocols/mqtt_protocol.h | 4 ++-- main/protocols/websocket_protocol.cc | 16 +++++----------- main/protocols/websocket_protocol.h | 2 +- 10 files changed, 19 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7a69783..8b0c6c75 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ # CMakeLists in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.16) -set(PROJECT_VER "1.8.0") +set(PROJECT_VER "1.8.1") # Add this line to disable the specific warning add_compile_options(-Wno-missing-field-initializers) diff --git a/main/boards/common/esp32_camera.cc b/main/boards/common/esp32_camera.cc index 2c9898b8..40d02edd 100644 --- a/main/boards/common/esp32_camera.cc +++ b/main/boards/common/esp32_camera.cc @@ -210,7 +210,7 @@ std::string Esp32Camera::Explain(const std::string& question) { }); auto network = Board::GetInstance().GetNetwork(); - auto http = std::unique_ptr(network->CreateHttp(3)); + auto http = network->CreateHttp(3); // 构造multipart/form-data请求体 std::string boundary = "----ESP32_CAMERA_BOUNDARY"; diff --git a/main/boards/sensecap-watcher/sscma_camera.cc b/main/boards/sensecap-watcher/sscma_camera.cc index 31c9678a..eeb3a57a 100644 --- a/main/boards/sensecap-watcher/sscma_camera.cc +++ b/main/boards/sensecap-watcher/sscma_camera.cc @@ -279,7 +279,7 @@ std::string SscmaCamera::Explain(const std::string& question) { } auto network = Board::GetInstance().GetNetwork(); - auto http = std::unique_ptr(network->CreateHttp(3)); + auto http = network->CreateHttp(3); // 构造multipart/form-data请求体 std::string boundary = "----ESP32_CAMERA_BOUNDARY"; diff --git a/main/idf_component.yml b/main/idf_component.yml index f988332e..3cd93a69 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -15,7 +15,7 @@ dependencies: 78/esp_lcd_nv3023: ~1.0.0 78/esp-wifi-connect: ~2.4.3 78/esp-opus-encoder: ~2.4.0 - 78/esp-ml307: ~3.0.2 + 78/esp-ml307: ~3.1.1 78/xiaozhi-fonts: ~1.3.2 espressif/led_strip: ^2.5.5 espressif/esp_codec_dev: ~1.3.2 diff --git a/main/ota.cc b/main/ota.cc index a3e5be1b..2cc82152 100644 --- a/main/ota.cc +++ b/main/ota.cc @@ -49,7 +49,7 @@ std::string Ota::GetCheckVersionUrl() { return url; } -Http* Ota::SetupHttp() { +std::unique_ptr Ota::SetupHttp() { auto& board = Board::GetInstance(); auto app_desc = esp_app_get_description(); @@ -85,7 +85,7 @@ bool Ota::CheckVersion() { return false; } - auto http = std::unique_ptr(SetupHttp()); + auto http = SetupHttp(); std::string data = board.GetJson(); std::string method = data.length() > 0 ? "POST" : "GET"; @@ -274,7 +274,7 @@ bool Ota::Upgrade(const std::string& firmware_url) { std::string image_header; auto network = Board::GetInstance().GetNetwork(); - auto http = std::unique_ptr(network->CreateHttp(0)); + auto http = network->CreateHttp(0); if (!http->Open("GET", firmware_url)) { ESP_LOGE(TAG, "Failed to open HTTP connection"); return false; @@ -452,7 +452,7 @@ esp_err_t Ota::Activate() { url += "activate"; } - auto http = std::unique_ptr(SetupHttp()); + auto http = SetupHttp(); std::string data = GetActivationPayload(); http->SetContent(std::move(data)); diff --git a/main/ota.h b/main/ota.h index f4f739ea..79576987 100644 --- a/main/ota.h +++ b/main/ota.h @@ -51,7 +51,7 @@ private: std::vector ParseVersion(const std::string& version); bool IsNewVersionAvailable(const std::string& currentVersion, const std::string& newVersion); std::string GetActivationPayload(); - Http* SetupHttp(); + std::unique_ptr SetupHttp(); }; #endif // _OTA_H diff --git a/main/protocols/mqtt_protocol.cc b/main/protocols/mqtt_protocol.cc index e8847ff3..17625bb8 100644 --- a/main/protocols/mqtt_protocol.cc +++ b/main/protocols/mqtt_protocol.cc @@ -16,12 +16,6 @@ MqttProtocol::MqttProtocol() { MqttProtocol::~MqttProtocol() { ESP_LOGI(TAG, "MqttProtocol deinit"); - if (udp_ != nullptr) { - delete udp_; - } - if (mqtt_ != nullptr) { - delete mqtt_; - } vEventGroupDelete(event_group_handle_); } @@ -32,7 +26,7 @@ bool MqttProtocol::Start() { bool MqttProtocol::StartMqttClient(bool report_error) { if (mqtt_ != nullptr) { ESP_LOGW(TAG, "Mqtt client already started"); - delete mqtt_; + mqtt_.reset(); } Settings settings("mqtt", false); @@ -150,10 +144,7 @@ bool MqttProtocol::SendAudio(std::unique_ptr packet) { void MqttProtocol::CloseAudioChannel() { { std::lock_guard lock(channel_mutex_); - if (udp_ != nullptr) { - delete udp_; - udp_ = nullptr; - } + udp_.reset(); } std::string message = "{"; @@ -193,10 +184,6 @@ bool MqttProtocol::OpenAudioChannel() { } std::lock_guard lock(channel_mutex_); - if (udp_ != nullptr) { - delete udp_; - } - auto network = Board::GetInstance().GetNetwork(); udp_ = network->CreateUdp(2); udp_->OnMessage([this](const std::string& data) { diff --git a/main/protocols/mqtt_protocol.h b/main/protocols/mqtt_protocol.h index 00fbce64..e7b1b266 100644 --- a/main/protocols/mqtt_protocol.h +++ b/main/protocols/mqtt_protocol.h @@ -37,8 +37,8 @@ private: std::string publish_topic_; std::mutex channel_mutex_; - Mqtt* mqtt_ = nullptr; - Udp* udp_ = nullptr; + std::unique_ptr mqtt_; + std::unique_ptr udp_; mbedtls_aes_context aes_ctx_; std::string aes_nonce_; std::string udp_server_; diff --git a/main/protocols/websocket_protocol.cc b/main/protocols/websocket_protocol.cc index a388667e..d4f435ca 100644 --- a/main/protocols/websocket_protocol.cc +++ b/main/protocols/websocket_protocol.cc @@ -17,9 +17,6 @@ WebsocketProtocol::WebsocketProtocol() { } WebsocketProtocol::~WebsocketProtocol() { - if (websocket_ != nullptr) { - delete websocket_; - } vEventGroupDelete(event_group_handle_); } @@ -79,17 +76,10 @@ bool WebsocketProtocol::IsAudioChannelOpened() const { } void WebsocketProtocol::CloseAudioChannel() { - if (websocket_ != nullptr) { - delete websocket_; - websocket_ = nullptr; - } + websocket_.reset(); } bool WebsocketProtocol::OpenAudioChannel() { - if (websocket_ != nullptr) { - delete websocket_; - } - Settings settings("websocket", false); std::string url = settings.GetString("url"); std::string token = settings.GetString("token"); @@ -102,6 +92,10 @@ bool WebsocketProtocol::OpenAudioChannel() { auto network = Board::GetInstance().GetNetwork(); websocket_ = network->CreateWebSocket(1); + if (websocket_ == nullptr) { + ESP_LOGE(TAG, "Failed to create websocket"); + return false; + } if (!token.empty()) { // If token not has a space, add "Bearer " prefix diff --git a/main/protocols/websocket_protocol.h b/main/protocols/websocket_protocol.h index a62c58f4..8c7dd65b 100644 --- a/main/protocols/websocket_protocol.h +++ b/main/protocols/websocket_protocol.h @@ -23,7 +23,7 @@ public: private: EventGroupHandle_t event_group_handle_; - WebSocket* websocket_ = nullptr; + std::unique_ptr websocket_; int version_ = 1; void ParseServerHello(const cJSON* root);