forked from xiaozhi/xiaozhi-esp32
reduce memory usage of ota
This commit is contained in:
@@ -62,23 +62,27 @@ void Application::CheckNewVersion() {
|
|||||||
vTaskDelay(pdMS_TO_TICKS(3000));
|
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||||
} while (GetDeviceState() != kDeviceStateIdle);
|
} while (GetDeviceState() != kDeviceStateIdle);
|
||||||
|
|
||||||
SetDeviceState(kDeviceStateUpgrading);
|
// Use main task to do the upgrade
|
||||||
|
Schedule([this, &board, display]() {
|
||||||
|
SetDeviceState(kDeviceStateUpgrading);
|
||||||
|
|
||||||
display->SetIcon(FONT_AWESOME_DOWNLOAD);
|
display->SetIcon(FONT_AWESOME_DOWNLOAD);
|
||||||
display->SetStatus("新版本 " + ota_.GetFirmwareVersion());
|
display->SetStatus("新版本 " + ota_.GetFirmwareVersion());
|
||||||
|
|
||||||
// 预先关闭音频输出,避免升级过程有音频操作
|
// 预先关闭音频输出,避免升级过程有音频操作
|
||||||
board.GetAudioCodec()->EnableOutput(false);
|
board.GetAudioCodec()->EnableOutput(false);
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
|
|
||||||
ota_.StartUpgrade([display](int progress, size_t speed) {
|
ota_.StartUpgrade([display](int progress, size_t speed) {
|
||||||
char buffer[64];
|
char buffer[64];
|
||||||
snprintf(buffer, sizeof(buffer), "%d%% %zuKB/s", progress, speed / 1024);
|
snprintf(buffer, sizeof(buffer), "%d%% %zuKB/s", progress, speed / 1024);
|
||||||
display->SetStatus(buffer);
|
display->SetStatus(buffer);
|
||||||
|
});
|
||||||
|
|
||||||
|
// If upgrade success, the device will reboot and never reach here
|
||||||
|
ESP_LOGI(TAG, "Firmware upgrade failed...");
|
||||||
|
SetDeviceState(kDeviceStateIdle);
|
||||||
});
|
});
|
||||||
|
|
||||||
// If upgrade success, the device will reboot and never reach here
|
|
||||||
ESP_LOGI(TAG, "Firmware upgrade failed...");
|
|
||||||
SetDeviceState(kDeviceStateIdle);
|
|
||||||
} else {
|
} else {
|
||||||
ota_.MarkCurrentVersionValid();
|
ota_.MarkCurrentVersionValid();
|
||||||
display->ShowNotification("版本 " + ota_.GetCurrentVersion());
|
display->ShowNotification("版本 " + ota_.GetCurrentVersion());
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ void Ota::Upgrade(const std::string& firmware_url) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<char> buffer(4096);
|
std::vector<char> buffer(512);
|
||||||
size_t total_read = 0, recent_read = 0;
|
size_t total_read = 0, recent_read = 0;
|
||||||
auto last_calc_time = esp_timer_get_time();
|
auto last_calc_time = esp_timer_get_time();
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|||||||
Reference in New Issue
Block a user