From b40e815320c3d19f8fdc8a8aebd1574da9add0da Mon Sep 17 00:00:00 2001 From: lumapu Date: Thu, 23 May 2024 23:27:24 +0200 Subject: [PATCH 1/6] 0.8.122 * add button for donwloading coredump --- src/CHANGES.md | 3 +++ src/defines.h | 2 +- src/web/RestApi.h | 32 ++++++++++++++++++++++++++++++-- src/web/lang.h | 6 ++++++ 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/CHANGES.md b/src/CHANGES.md index a1b23dbc..3002ed7c 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,5 +1,8 @@ # Development Changes +## 0.8.122 - 2024-05-23 +* add button for donwloading coredump + ## 0.8.121 - 2024-05-20 * fix ESP32 factory image generation * fix plot of history graph #1635 diff --git a/src/defines.h b/src/defines.h index a83d4e89..c0664b7d 100644 --- a/src/defines.h +++ b/src/defines.h @@ -13,7 +13,7 @@ //------------------------------------- #define VERSION_MAJOR 0 #define VERSION_MINOR 8 -#define VERSION_PATCH 121 +#define VERSION_PATCH 122 //------------------------------------- typedef struct { uint8_t ch; diff --git a/src/web/RestApi.h b/src/web/RestApi.h index eaa18a0f..e810a5cb 100644 --- a/src/web/RestApi.h +++ b/src/web/RestApi.h @@ -55,6 +55,7 @@ class RestApi { mSrv->on("/api", HTTP_GET, std::bind(&RestApi::onApi, this, std::placeholders::_1)); mSrv->on("/get_setup", HTTP_GET, std::bind(&RestApi::onDwnldSetup, this, std::placeholders::_1)); + mSrv->on("/coredump", HTTP_GET, std::bind(&RestApi::getCoreDump, this, std::placeholders::_1)); } uint32_t getTimezoneOffset(void) { @@ -348,6 +349,33 @@ class RestApi { fp.close(); } + void getCoreDump(AsyncWebServerRequest *request) { + const esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_COREDUMP, "coredump"); + if (partition != NULL) { + size_t size = partition->size; + + AsyncWebServerResponse *response = request->beginResponse("application/octet-stream", size, [size, partition](uint8_t *buffer, size_t maxLen, size_t index) -> size_t { + if((index + maxLen) > size) + maxLen = size - index; + + if (ESP_OK != esp_partition_read(partition, index, buffer, maxLen)) + DPRINTLN(DBG_ERROR, F("can't read partition")); + + return maxLen; + }); + + String filename = ah::getDateTimeStrFile(gTimezone.toLocal(mApp->getTimestamp())); + filename += "_v" + String(mApp->getVersion()); + + response->addHeader("Content-Description", "File Transfer"); + response->addHeader("Content-Disposition", "attachment; filename=" + filename + "_coredump.bin"); + request->send(response); + } else { + AsyncWebServerResponse *response = request->beginResponse(200, F("application/json; charset=utf-8"), "{}"); + request->send(response); + } + } + void getGeneric(AsyncWebServerRequest *request, JsonObject obj) { mApp->resetLockTimeout(); #if !defined(ETHERNET) @@ -435,8 +463,8 @@ class RestApi { void getHtmlSystem(AsyncWebServerRequest *request, JsonObject obj) { getSysInfo(request, obj.createNestedObject(F("system"))); getGeneric(request, obj.createNestedObject(F("generic"))); - char tmp[200]; - snprintf(tmp, 200, "%s

%s", FACTORY_RESET, BTN_REBOOT); + char tmp[300]; + snprintf(tmp, 300, "%s

%s

%s", FACTORY_RESET, BTN_REBOOT, BTN_COREDUMP); obj[F("html")] = String(tmp); } diff --git a/src/web/lang.h b/src/web/lang.h index 54ade94e..dd6640b2 100644 --- a/src/web/lang.h +++ b/src/web/lang.h @@ -90,4 +90,10 @@ #define BTN_NO "no" #endif +#ifdef LANG_DE + #define BTN_COREDUMP "CoreDump herunterladen" +#else /*LANG_EN*/ + #define BTN_COREDUMP "download CoreDump" +#endif + #endif /*__LANG_H__*/ From 73ca5aae9ff3cf3765bae699d6fa06318984283f Mon Sep 17 00:00:00 2001 From: lumapu Date: Thu, 23 May 2024 23:53:06 +0200 Subject: [PATCH 2/6] 0.8.122 * update workflow to upload elf file to fw.ahoydtu.de --- .github/workflows/compile_development.yml | 28 +++++++++++++++-------- scripts/getVersion.py | 1 + 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.github/workflows/compile_development.yml b/.github/workflows/compile_development.yml index 1d536b5e..91a54f4f 100644 --- a/.github/workflows/compile_development.yml +++ b/.github/workflows/compile_development.yml @@ -132,6 +132,11 @@ jobs: - name: Run PlatformIO run: pio run -d src -e ${{ matrix.variant }} + - name: Compress .elf + uses: edgarrc/action-7z@v1 + with: + args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}firmware.elf.7z src/.pio/build/${{ matrix.variant }}firmware.elf + - name: Rename Firmware run: python scripts/getVersion.py ${{ matrix.variant }} >> $GITHUB_OUTPUT @@ -188,15 +193,6 @@ jobs: with: name: dev-* - - name: Create Artifact - uses: actions/upload-artifact@v4 - with: - name: dev-${{ steps.version_name.outputs.name }} - path: | - ${{ steps.version_name.outputs.name }}/* - manual/User_Manual.md - manual/Getting_Started.md - - name: Deploy uses: nogsantos/scp-deploy@master with: @@ -206,3 +202,17 @@ jobs: port: ${{ secrets.FW_SSH_PORT }} user: ${{ secrets.FW_SSH_USER }} key: ${{ secrets.FW_SSH_KEY }} + + - name: Clean elf files (7z compressed) for Artifact + run: | + rm -f \ + ${{ steps.version_name.outputs.name }}/*/firmware.elf.7z + + - name: Create Artifact + uses: actions/upload-artifact@v4 + with: + name: dev-${{ steps.version_name.outputs.name }} + path: | + ${{ steps.version_name.outputs.name }}/* + manual/User_Manual.md + manual/Getting_Started.md diff --git a/scripts/getVersion.py b/scripts/getVersion.py index a60a772d..eaea47ba 100644 --- a/scripts/getVersion.py +++ b/scripts/getVersion.py @@ -80,6 +80,7 @@ def renameFw(path_define, env): if env[:5] == "esp32": os.rename("src/.pio/build/" + env + "/bootloader.bin", dst + "bootloader.bin") os.rename("src/.pio/build/" + env + "/partitions.bin", dst + "partitions.bin") + os.rename("src/.pio/build/" + env + "/firmware.elf.7z", dst + "firmware.elf.7z") genOtaBin(dst) if env[:7] == "esp8285": From d8a1528c9984f26345699fa791b9b3853fb7a03a Mon Sep 17 00:00:00 2001 From: lumapu Date: Fri, 24 May 2024 00:01:52 +0200 Subject: [PATCH 3/6] 0.8.122 * fix github action --- .github/workflows/compile_development.yml | 7 ++++++- src/CHANGES.md | 2 +- src/web/RestApi.h | 9 +++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile_development.yml b/.github/workflows/compile_development.yml index 91a54f4f..bd610a55 100644 --- a/.github/workflows/compile_development.yml +++ b/.github/workflows/compile_development.yml @@ -70,6 +70,11 @@ jobs: - name: Run PlatformIO run: pio run -d src -e ${{ matrix.variant }} + - name: Compress .elf + uses: edgarrc/action-7z@v1 + with: + args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}/firmware.elf.7z src/.pio/build/${{ matrix.variant }}/firmware.elf + - name: Rename Firmware run: python scripts/getVersion.py ${{ matrix.variant }} >> $GITHUB_OUTPUT @@ -135,7 +140,7 @@ jobs: - name: Compress .elf uses: edgarrc/action-7z@v1 with: - args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}firmware.elf.7z src/.pio/build/${{ matrix.variant }}firmware.elf + args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}/firmware.elf.7z src/.pio/build/${{ matrix.variant }}/firmware.elf - name: Rename Firmware run: python scripts/getVersion.py ${{ matrix.variant }} >> $GITHUB_OUTPUT diff --git a/src/CHANGES.md b/src/CHANGES.md index 3002ed7c..5efb1610 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,7 +1,7 @@ # Development Changes ## 0.8.122 - 2024-05-23 -* add button for donwloading coredump +* add button for donwloading coredump (ESP32 variants only) ## 0.8.121 - 2024-05-20 * fix ESP32 factory image generation diff --git a/src/web/RestApi.h b/src/web/RestApi.h index e810a5cb..dd8c5ca5 100644 --- a/src/web/RestApi.h +++ b/src/web/RestApi.h @@ -55,7 +55,9 @@ class RestApi { mSrv->on("/api", HTTP_GET, std::bind(&RestApi::onApi, this, std::placeholders::_1)); mSrv->on("/get_setup", HTTP_GET, std::bind(&RestApi::onDwnldSetup, this, std::placeholders::_1)); + #if defined(ESP32) mSrv->on("/coredump", HTTP_GET, std::bind(&RestApi::getCoreDump, this, std::placeholders::_1)); + #endif } uint32_t getTimezoneOffset(void) { @@ -349,6 +351,7 @@ class RestApi { fp.close(); } + #if defined(ESP32) void getCoreDump(AsyncWebServerRequest *request) { const esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_COREDUMP, "coredump"); if (partition != NULL) { @@ -375,6 +378,7 @@ class RestApi { request->send(response); } } + #endif void getGeneric(AsyncWebServerRequest *request, JsonObject obj) { mApp->resetLockTimeout(); @@ -463,8 +467,13 @@ class RestApi { void getHtmlSystem(AsyncWebServerRequest *request, JsonObject obj) { getSysInfo(request, obj.createNestedObject(F("system"))); getGeneric(request, obj.createNestedObject(F("generic"))); + #if defined(ESP32) char tmp[300]; snprintf(tmp, 300, "%s

%s

%s", FACTORY_RESET, BTN_REBOOT, BTN_COREDUMP); + #else + char tmp[200]; + snprintf(tmp, 200, "%s

%s", FACTORY_RESET, BTN_REBOOT); + #endif obj[F("html")] = String(tmp); } From ead1a23a482683038f0ea572a3a2d18b19eb2a1c Mon Sep 17 00:00:00 2001 From: lumapu Date: Fri, 24 May 2024 00:11:44 +0200 Subject: [PATCH 4/6] 0.8.122 * fix elf file rename --- .github/workflows/compile_development.yml | 4 ++-- scripts/getVersion.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compile_development.yml b/.github/workflows/compile_development.yml index bd610a55..3d52ec0f 100644 --- a/.github/workflows/compile_development.yml +++ b/.github/workflows/compile_development.yml @@ -73,7 +73,7 @@ jobs: - name: Compress .elf uses: edgarrc/action-7z@v1 with: - args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}/firmware.elf.7z src/.pio/build/${{ matrix.variant }}/firmware.elf + args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}/firmware.elf.7z ./src/.pio/build/${{ matrix.variant }}/firmware.elf - name: Rename Firmware run: python scripts/getVersion.py ${{ matrix.variant }} >> $GITHUB_OUTPUT @@ -140,7 +140,7 @@ jobs: - name: Compress .elf uses: edgarrc/action-7z@v1 with: - args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}/firmware.elf.7z src/.pio/build/${{ matrix.variant }}/firmware.elf + args: 7z a -t7z -mx=9 src/.pio/build/${{ matrix.variant }}/firmware.elf.7z ./src/.pio/build/${{ matrix.variant }}/firmware.elf - name: Rename Firmware run: python scripts/getVersion.py ${{ matrix.variant }} >> $GITHUB_OUTPUT diff --git a/scripts/getVersion.py b/scripts/getVersion.py index eaea47ba..9470f247 100644 --- a/scripts/getVersion.py +++ b/scripts/getVersion.py @@ -80,7 +80,7 @@ def renameFw(path_define, env): if env[:5] == "esp32": os.rename("src/.pio/build/" + env + "/bootloader.bin", dst + "bootloader.bin") os.rename("src/.pio/build/" + env + "/partitions.bin", dst + "partitions.bin") - os.rename("src/.pio/build/" + env + "/firmware.elf.7z", dst + "firmware.elf.7z") + os.rename("src/.pio/build/" + env + "/firmware.elf.7z", dst + fnanme[:-3] + "elf.7z") genOtaBin(dst) if env[:7] == "esp8285": From 690396997c5742e18d9eb2df47092ba616b55433 Mon Sep 17 00:00:00 2001 From: lumapu Date: Fri, 24 May 2024 00:15:52 +0200 Subject: [PATCH 5/6] 0.8.122 * fix python script for rename firmware --- scripts/getVersion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/getVersion.py b/scripts/getVersion.py index 9470f247..3cd3a5a6 100644 --- a/scripts/getVersion.py +++ b/scripts/getVersion.py @@ -80,7 +80,7 @@ def renameFw(path_define, env): if env[:5] == "esp32": os.rename("src/.pio/build/" + env + "/bootloader.bin", dst + "bootloader.bin") os.rename("src/.pio/build/" + env + "/partitions.bin", dst + "partitions.bin") - os.rename("src/.pio/build/" + env + "/firmware.elf.7z", dst + fnanme[:-3] + "elf.7z") + os.rename("src/.pio/build/" + env + "/firmware.elf.7z", dst + fname[:-3] + "elf.7z") genOtaBin(dst) if env[:7] == "esp8285": From 4ca05620dc60a096ffa9dfcc0e3d9294234ed21f Mon Sep 17 00:00:00 2001 From: lumapu Date: Fri, 24 May 2024 00:17:29 +0200 Subject: [PATCH 6/6] 0.8.122 * fix workflow --- .github/workflows/compile_development.yml | 2 +- scripts/getVersion.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile_development.yml b/.github/workflows/compile_development.yml index 3d52ec0f..b5e0e0e1 100644 --- a/.github/workflows/compile_development.yml +++ b/.github/workflows/compile_development.yml @@ -211,7 +211,7 @@ jobs: - name: Clean elf files (7z compressed) for Artifact run: | rm -f \ - ${{ steps.version_name.outputs.name }}/*/firmware.elf.7z + ${{ steps.version_name.outputs.name }}/*/*.elf.7z - name: Create Artifact uses: actions/upload-artifact@v4 diff --git a/scripts/getVersion.py b/scripts/getVersion.py index 3cd3a5a6..d3f1e576 100644 --- a/scripts/getVersion.py +++ b/scripts/getVersion.py @@ -76,11 +76,11 @@ def renameFw(path_define, env): fname = version[:-1] + "_" + sha + "_" + env + ".bin" os.rename("src/.pio/build/" + env + "/firmware.bin", dst + fname) + os.rename("src/.pio/build/" + env + "/firmware.elf.7z", dst + fname[:-3] + "elf.7z") if env[:5] == "esp32": os.rename("src/.pio/build/" + env + "/bootloader.bin", dst + "bootloader.bin") os.rename("src/.pio/build/" + env + "/partitions.bin", dst + "partitions.bin") - os.rename("src/.pio/build/" + env + "/firmware.elf.7z", dst + fname[:-3] + "elf.7z") genOtaBin(dst) if env[:7] == "esp8285":