diff --git a/radio/src/gui/128x64/model_module_options.cpp b/radio/src/gui/128x64/model_module_options.cpp index 09d2ef812..ac853f1f8 100644 --- a/radio/src/gui/128x64/model_module_options.cpp +++ b/radio/src/gui/128x64/model_module_options.cpp @@ -85,7 +85,7 @@ void menuModelModuleOptions(event_t event) uint8_t modelId = reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].information.modelID; // uint8_t variant = reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].information.variant; - uint8_t optionsAvailable = moduleOptions[g_moduleIdx] & ((1 << MODULE_OPTION_RF_PROTOCOL) | (1 << MODULE_OPTION_RF_PROTOCOL) | (1 << MODULE_OPTION_RF_PROTOCOL)); + uint8_t optionsAvailable = moduleOptions[modelId] & ((1 << MODULE_OPTION_RF_PROTOCOL) | (1 << MODULE_OPTION_RF_PROTOCOL) | (1 << MODULE_OPTION_RF_PROTOCOL)); SUBMENU_NOTITLE(ITEM_MODULE_SETTINGS_COUNT, { !optionsAvailable ? (uint8_t)0 : IF_MODULE_OPTIONS(MODULE_OPTION_RF_PROTOCOL, 0), diff --git a/radio/src/gui/128x64/radio_version.cpp b/radio/src/gui/128x64/radio_version.cpp index 0127f31ee..0231c0b8c 100644 --- a/radio/src/gui/128x64/radio_version.cpp +++ b/radio/src/gui/128x64/radio_version.cpp @@ -108,8 +108,6 @@ void menuRadioModulesVersion(event_t event) if (y >= MENU_BODY_TOP && y < MENU_BODY_BOTTOM) { lcdDrawText(INDENT_WIDTH, y, "Model"); uint8_t modelId = reusableBuffer.hardwareAndSettings.modules[module].information.modelID; - if (modelId >= DIM(PXX2modulesModels)) - modelId = 0; lcdDrawText(12 * FW, y, PXX2modulesModels[modelId]); } y += FH; @@ -130,8 +128,6 @@ void menuRadioModulesVersion(event_t event) lcdDrawText(INDENT_WIDTH, y, "Receiver"); lcdDrawNumber(lcdLastRightPos + 2, y, receiver + 1); uint8_t modelId = reusableBuffer.hardwareAndSettings.modules[module].receivers[receiver].information.modelID; - if (modelId >= DIM(PXX2receiversModels)) - modelId = 0; lcdDrawText(12 * FW, y, PXX2receiversModels[modelId]); } y += FH; diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index 116565f27..674a19654 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -52,10 +52,13 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame) ModuleInformation * destination = moduleState[module].moduleInformation; uint8_t index = frame[3]; - if (index == 0xFF) + uint8_t modelId = frame[4]; + if (index == PXX2_HW_INFO_TX_ID && modelId < DIM(PXX2modulesModels)) { memcpy(&destination->information, &frame[4], sizeof(PXX2HardwareInformation)); - else if (index < PXX2_MAX_RECEIVERS_PER_MODULE) + } + else if (index < PXX2_MAX_RECEIVERS_PER_MODULE && modelId < DIM(PXX2receiversModels)) { memcpy(&destination->receivers[index].information, &frame[4], sizeof(PXX2HardwareInformation)); + } } void processModuleSettingsFrame(uint8_t module, uint8_t * frame)