diff --git a/radio/src/gui/480x272/view_main.cpp b/radio/src/gui/480x272/view_main.cpp index 4ee2e4a23..3cf249dab 100644 --- a/radio/src/gui/480x272/view_main.cpp +++ b/radio/src/gui/480x272/view_main.cpp @@ -223,6 +223,23 @@ bool menuMainView(event_t event) } } +#if defined(HARDWARE_INTERNAL_MODULE) && defined(INTERNAL_MODULE_PXX2) && defined(ACCESS_LIB) + if (globalData.authenticationCount > 0 && !globalData.upgradeModulePopup) { + if (!globalData.internalModuleVersionChecked) { + globalData.internalModuleVersionChecked = 1; + memclear(&reusableBuffer.viewMain.internalModule, sizeof(reusableBuffer.viewMain.internalModule)); + moduleState[INTERNAL_MODULE].readModuleInformation(&reusableBuffer.viewMain.internalModule, PXX2_HW_INFO_TX_ID, PXX2_HW_INFO_TX_ID); + } + else if (reusableBuffer.viewMain.internalModule.information.modelID == PXX2_MODULE_ISRM_S_X10S && + reusableBuffer.viewMain.internalModule.information.swVersion.major == 0 && + reusableBuffer.viewMain.internalModule.information.swVersion.minor == 1 && + reusableBuffer.viewMain.internalModule.information.swVersion.revision < 5) { + globalData.upgradeModulePopup = 1; + POPUP_WARNING(STR_MODULE_UPGRADE); + } + } +#endif + return true; } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 37570dd52..f13914e86 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -572,7 +572,8 @@ PACK(struct GlobalData { uint8_t externalAntennaEnabled:1; uint8_t authenticationCount:2; uint8_t upgradeModulePopup:1; - uint8_t spare:3; + uint8_t internalModuleVersionChecked:1; + uint8_t spare:2; }); extern GlobalData globalData; @@ -1231,6 +1232,10 @@ union ReusableBuffer uint8_t maxNameLen; } modelFailsafe; + struct { + ModuleInformation internalModule; + } viewMain; + #if defined(STM32) // Data for the USB mass storage driver. If USB mass storage runs no menu is not allowed to be displayed uint8_t MSC_BOT_Data[MSC_MEDIA_PACKET];