diff --git a/radio/src/stamp.cpp b/radio/src/stamp.cpp index 5ed727836..ad8e716ab 100644 --- a/radio/src/stamp.cpp +++ b/radio/src/stamp.cpp @@ -85,7 +85,8 @@ const char * getFirmwareVersion(const char * buffer) } for (int i = 0; i < 1024; i++) { - if (memcmp(buffer + i, "edgetx-", 7) == 0) { + if ((memcmp(buffer + i, "edgetx-", 7) == 0) + || memcmp(buffer + i, "opentx-", 7) == 0) { return buffer + i; } } diff --git a/radio/src/targets/common/arm/stm32/bootloader/bin_files.cpp b/radio/src/targets/common/arm/stm32/bootloader/bin_files.cpp index 49e27e33a..4498fd55d 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/bin_files.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/bin_files.cpp @@ -121,15 +121,19 @@ void extractFirmwareVersion(VersionTag* tag) if (!vers || (vers[0] == 'n' && vers[1] == 'o')) { // "no version found" memcpy(tag->flavour, "unknown", sizeof("unknown")); tag->version = "unknown"; + return; } - // skip "opentx-" - vers += sizeof("opentx-") - 1; + tag->fork = vers; + + // skip 'edgetx-' / 'opentx-' + vers += sizeof("edgetx-") - 1; char* fl = tag->flavour; while(*vers != '-') *(fl++) = *(vers++); + // skip '-' tag->version = ++vers; } diff --git a/radio/src/targets/common/arm/stm32/bootloader/bin_files.h b/radio/src/targets/common/arm/stm32/bootloader/bin_files.h index dc9e01e2b..408cab4f9 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/bin_files.h +++ b/radio/src/targets/common/arm/stm32/bootloader/bin_files.h @@ -72,6 +72,7 @@ struct VersionTag { char flavour[8]; const char* version; + const char* fork; }; // Can be called right after openBinFile() to extract the version information diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp index c75efe9fe..417d32cf2 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.cpp +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.cpp @@ -435,7 +435,6 @@ int main() state = ST_FLASHING; } } - else if (state == ST_FLASHING) { // commit to flashing if (!unlocked && (memoryType == MEM_FLASH)) { diff --git a/radio/src/targets/horus/bootloader/boot_menu.cpp b/radio/src/targets/horus/bootloader/boot_menu.cpp index a9a0e5aa3..a74604aba 100644 --- a/radio/src/targets/horus/bootloader/boot_menu.cpp +++ b/radio/src/targets/horus/bootloader/boot_menu.cpp @@ -150,7 +150,6 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) lcd->drawBitmapPattern(356, 158, LBM_ERROR, BL_RED); } else if (st == ST_FLASH_CHECK) { - bootloaderDrawFilename(str, 0, true); if (opt == FC_ERROR) { @@ -159,8 +158,12 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str) } else if (opt == FC_OK) { VersionTag tag; + memset(&tag, 0, sizeof(tag)); extractFirmwareVersion(&tag); + lcd->drawText(168, 138, "Fork:", RIGHT | BL_FOREGROUND); + lcd->drawSizedText(174, 138, tag.fork, 6, BL_FOREGROUND); + lcd->drawText(168, 158, "Version:", RIGHT | BL_FOREGROUND); lcd->drawText(174, 158, tag.version, BL_FOREGROUND);