Merge pull request #2363 from proddy/dev

fix memory type for S3 so PSRAM is used, fix WebUI upload restarting
This commit is contained in:
Proddy
2025-01-20 21:05:14 +01:00
committed by GitHub
4 changed files with 14 additions and 15 deletions

View File

@@ -1,5 +1,9 @@
{ {
"build": { "build": {
"arduino": {
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32", "core": "esp32",
"extra_flags": [ "extra_flags": [
"-DBOARD_HAS_PSRAM", "-DBOARD_HAS_PSRAM",

View File

@@ -1736,7 +1736,6 @@ void EMSESP::loop() {
// run the loop, unless we're in the middle of an OTA upload // run the loop, unless we're in the middle of an OTA upload
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_NORMAL) { if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_NORMAL) {
// service loops
webLogService.loop(); // log in Web UI webLogService.loop(); // log in Web UI
rxservice_.loop(); // process any incoming Rx telegrams rxservice_.loop(); // process any incoming Rx telegrams
shower_.loop(); // check for shower on/off shower_.loop(); // check for shower on/off
@@ -1752,13 +1751,10 @@ void EMSESP::loop() {
} }
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_PENDING_UPLOAD) { if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_PENDING_UPLOAD) {
// start an upload from a URL, assuming if the URL exists from a previous pass. // start an upload from a URL, assuming the URL exists and set from a previous pass
// Note this function is synchronous and blocking. // Note this next call is synchronous and blocking.
if (system_.uploadFirmwareURL()) { if (!system_.uploadFirmwareURL()) {
// firmware has been uploaded, set status to uploading // upload failed, send a "reset" to return back to normal
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING);
} else {
// if it fails to pass, reset
Shell::loop_all(); // flush log buffers so latest error message are shown in console Shell::loop_all(); // flush log buffers so latest error message are shown in console
system_.uploadFirmwareURL("reset"); system_.uploadFirmwareURL("reset");
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD);

View File

@@ -2010,29 +2010,27 @@ bool System::uploadFirmwareURL(const char * url) {
static String saved_url; static String saved_url;
// if the URL is not empty, store the URL for the 2nd pass and exit
if (url && strlen(url) > 0) { if (url && strlen(url) > 0) {
// if the passed URL is "reset" abort the current upload. This is called when an error happens during OTA // if the passed URL is "reset" abort the current upload. This is called when an error happens during OTA
if (strncmp(url, "reset", 5) == 0) { if (strncmp(url, "reset", 5) == 0) {
LOG_DEBUG("Firmware upload - resetting"); LOG_DEBUG("Firmware upload - resetting");
saved_url.clear(); saved_url.clear();
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_NORMAL);
return true; return true;
} }
// given a URL to download from, save it // given a URL to download from, save it ready for the 2nd pass
saved_url = url; saved_url = url;
LOG_INFO("Firmware location: %s", saved_url.c_str());
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_PENDING_UPLOAD); // we're ready to start the upload EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_PENDING_UPLOAD); // we're ready to start the upload
return true; return true;
} }
// assumed we have a valid URL from the 1st pass // check we have a valid URL from the 1st pass
if (saved_url.isEmpty()) { if (saved_url.isEmpty()) {
LOG_ERROR("Firmware upload failed - invalid URL"); LOG_ERROR("Firmware upload failed - invalid URL");
return false; // error return false; // error
} }
LOG_INFO("Firmware downloading from %s", saved_url.c_str());
Shell::loop_all(); // flush log buffers so latest messages are shown in console Shell::loop_all(); // flush log buffers so latest messages are shown in console
// Configure temporary client // Configure temporary client
@@ -2059,9 +2057,10 @@ bool System::uploadFirmwareURL(const char * url) {
return false; // error return false; // error
} }
Shell::loop_all(); // flush log buffers so latest messages are shown in console Shell::loop_all(); // flush log buffers so latest messages are shown in console
// we're about to start the upload, set the status so the Web System Monitor spots it
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING);
// TODO do we need to stop the UART with EMSuart::stop() ? // TODO do we need to stop the UART with EMSuart::stop() ?
// get tcp stream and send it to Updater // get tcp stream and send it to Updater

View File

@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.7.2-dev.12" #define EMSESP_APP_VERSION "3.7.2-dev.13"