From c9594390e278c265e2e8507f794120d1637bbf17 Mon Sep 17 00:00:00 2001 From: Risto Date: Fri, 1 Apr 2022 02:52:08 +0200 Subject: [PATCH] feat: Show module info for MPM and CRSF on Radio Version screen (#1771) * Show module info for MPM and CRSF * Consider MPM only if MULTIMODULE is defined * Consider MPM only if MULTIMODULE is defined --- radio/src/gui/colorlcd/radio_version.cpp | 2 + radio/src/gui/common/stdlcd/radio_version.cpp | 56 +++++++++++-------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 2705851aa..55bb3f123 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -113,12 +113,14 @@ class versionDialog: public Dialog new StaticText(form, grid->getFieldSlot(2, 1), statusText, 0, COLOR_THEME_PRIMARY1); } #endif +#if defined(MULTIMODULE) else if (isModuleMultimodule(module)) { char statusText[64] = ""; new StaticText(form, grid->getFieldSlot(2, 0), "Multimodule", 0, COLOR_THEME_PRIMARY1); getMultiModuleStatus(module).getStatusString(statusText); new StaticText(form, grid->getFieldSlot(2, 1), statusText, 0, COLOR_THEME_PRIMARY1); } +#endif else if (!isModulePXX2(module)) { new StaticText(form, grid->getFieldSlot(1, 0), STR_NO_INFORMATION, 0, COLOR_THEME_PRIMARY1); } diff --git a/radio/src/gui/common/stdlcd/radio_version.cpp b/radio/src/gui/common/stdlcd/radio_version.cpp index eccdd5d72..fb1e7e466 100644 --- a/radio/src/gui/common/stdlcd/radio_version.cpp +++ b/radio/src/gui/common/stdlcd/radio_version.cpp @@ -21,6 +21,9 @@ #include "opentx.h" #include "options.h" +#if defined(CROSSFIRE) + #include "mixer_scheduler.h" +#endif // TODO duplicated code #if defined(ROTARY_ENCODER_NAVIGATION) @@ -128,31 +131,38 @@ void menuRadioModulesVersion(event_t event) // Module model if (y >= MENU_BODY_TOP && y < MENU_BODY_BOTTOM) { lcdDrawText(INDENT_WIDTH, y, STR_MODULE); - if (module == INTERNAL_MODULE) { - if (!IS_INTERNAL_MODULE_ON()) { - lcdDrawText(COLUMN2_X, y, STR_OFF); - y += FH; - continue; - } - if (!isModulePXX2(INTERNAL_MODULE)) { - lcdDrawText(COLUMN2_X, y, STR_NO_INFORMATION); - y += FH; - continue; - } + if ((module == INTERNAL_MODULE && !IS_INTERNAL_MODULE_ON()) || + (module == EXTERNAL_MODULE && !IS_EXTERNAL_MODULE_ON())) { + lcdDrawText(COLUMN2_X, y, STR_OFF); + y += FH; + continue; } - else if (module == EXTERNAL_MODULE) { - if (!IS_EXTERNAL_MODULE_ON()) { - lcdDrawText(COLUMN2_X, y, STR_OFF); - y += FH; - continue; - } - if (!isModulePXX2(EXTERNAL_MODULE)) { - lcdDrawText(COLUMN2_X, y, STR_NO_INFORMATION); - y += FH; - continue; - } +#if defined(MULTIMODULE) + if (isModuleMultimodule(module)) { + char statusText[64] = ""; + getMultiModuleStatus(module).getStatusString(statusText); + lcdDrawText(COLUMN2_X, y, statusText); + y += FH; + continue; } - uint8_t modelId = reusableBuffer.hardwareAndSettings.modules[module].information.modelID; +#endif +#if defined(CROSSFIRE) + if (isModuleCrossfire(module)) { + char statusText[64] = ""; + sprintf(statusText, "%d Hz %lu Err", + 1000000 / getMixerSchedulerPeriod(), telemetryErrors); + lcdDrawText(COLUMN2_X, y, statusText); + y += FH; + continue; + } +#endif + if (!isModulePXX2(module)) { + lcdDrawText(COLUMN2_X, y, STR_NO_INFORMATION); + y += FH; + continue; + } + uint8_t modelId = reusableBuffer.hardwareAndSettings.modules[module] + .information.modelID; lcdDrawText(COLUMN2_X, y, getPXX2ModuleName(modelId)); } y += FH;