diff --git a/radio/src/gui/128x64/model_module_options.cpp b/radio/src/gui/128x64/model_module_options.cpp index cc2dec0af..a4f5c26e6 100644 --- a/radio/src/gui/128x64/model_module_options.cpp +++ b/radio/src/gui/128x64/model_module_options.cpp @@ -91,10 +91,28 @@ void drawPower(coord_t x, coord_t y, int8_t dBm) bool isPowerAvailable(int value) { -// uint8_t modelId = reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].information.modelID; -// uint8_t variant = reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].information.variant; + uint8_t modelId = reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].information.modelID; + uint8_t variant = reusableBuffer.hardwareAndSettings.modules[g_moduleIdx].information.variant; - return (value == 10 /* 10 mW */ || + if (modelId == PXX2_MODULE_R9M_LITE) { + if (variant == PXX2_VARIANT_EU) + return (value == 14 /* 25 mW */ || value == 20 /* 100 mW */); + else + return value == 20; /* 100 mW */ + } + else if (modelId == PXX2_MODULE_R9M_LITE_PRO) { + if (variant == PXX2_VARIANT_EU) + return (value == 14 /* 25 mW */ || + value == 23 /* 200 mW */ || + value == 27 /* 500 mW */); + else + return (value == 10 /* 10 mW */ || + value == 20 /* 100 mW */ || + value == 27 /* 500 mW */ || + value == 30 /* 1000 mW */); + } + else + return (value == 10 /* 10 mW */ || value == 14 /* 25 mW */ || value == 20 /* 100 mW */ || value == 23 /* 200 mW */ || @@ -161,6 +179,7 @@ void menuModelModuleOptions(event_t event) int8_t sub = menuVerticalPosition; lcdDrawTextAlignedLeft(0, "Module options"); + lcdDrawText(lcdLastRightPos+ 3, 0, PXX2modulesModels[modelId] ); lcdInvertLine(0); if (reusableBuffer.hardwareAndSettings.moduleSettings.state == PXX2_SETTINGS_OK) { diff --git a/radio/src/gui/128x64/radio_version.cpp b/radio/src/gui/128x64/radio_version.cpp index 9383f753b..5e1c8052c 100644 --- a/radio/src/gui/128x64/radio_version.cpp +++ b/radio/src/gui/128x64/radio_version.cpp @@ -50,45 +50,6 @@ void drawPXX2FullVersion(coord_t x, coord_t y, PXX2Version hwVersion, PXX2Versio drawPXX2Version(lcdNextPos, y, swVersion); } -static const char * const modulesModels[] = { - "---", - "XJT", - "IXJT", - "IXJT-PRO", - "IXJT-S", - "R9M", - "R9MLite", - "R9MLite-PRO", -}; - -static const char * const receiversModels[] = { - "---", - "X8R", - "RX8R", - "RX8R-PRO", - "RX6R", - "RX4R", - "G-RX8", - "G-RX6", - "X6R", - "X4R", - "X4R-SB", - "XSR", - "XSR-M", - "RXSR", - "S6R", - "S8R", - "XM", - "XM+", - "XMR", - "R9", - "R9-SLIM", - "R9-SLIM+", - "R9-MINI", - "R9-MM", - "R9-STAB", -}; - void menuRadioModulesVersion(event_t event) { if (menuEvent) { @@ -146,9 +107,9 @@ 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(modulesModels)) + if (modelId >= DIM(PXX2modulesModels)) modelId = 0; - lcdDrawText(12 * FW, y, modulesModels[modelId]); + lcdDrawText(12 * FW, y, PXX2modulesModels[modelId]); } y += FH; @@ -168,9 +129,9 @@ 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(receiversModels)) + if (modelId >= DIM(PXX2receiversModels)) modelId = 0; - lcdDrawText(12 * FW, y, receiversModels[modelId]); + lcdDrawText(12 * FW, y, PXX2receiversModels[modelId]); } y += FH; diff --git a/radio/src/pulses/pxx2.h b/radio/src/pulses/pxx2.h index be47b43ab..a87bdc8c5 100644 --- a/radio/src/pulses/pxx2.h +++ b/radio/src/pulses/pxx2.h @@ -55,6 +55,63 @@ #define PXX2_HW_INFO_TX_ID 0xFF +static const char * const PXX2modulesModels[] = { + "---", + "XJT", + "IXJT", + "IXJT-PRO", + "IXJT-S", + "R9M", + "R9MLite", + "R9MLite-PRO", +}; + +static const char * const PXX2receiversModels[] = { + "---", + "X8R", + "RX8R", + "RX8R-PRO", + "RX6R", + "RX4R", + "G-RX8", + "G-RX6", + "X6R", + "X4R", + "X4R-SB", + "XSR", + "XSR-M", + "RXSR", + "S6R", + "S8R", + "XM", + "XM+", + "XMR", + "R9", + "R9-SLIM", + "R9-SLIM+", + "R9-MINI", + "R9-MM", + "R9-STAB", +}; + +enum PXX2ModuleModelID { + PXX2_MODULE_NONE, + PXX2_MODULE_XJT, + PXX2_MODULE_IXJT, + PXX2_MODULE_IXJT_PRO, + PXX2_MODULE_IXJT_S, + PXX2_MODULE_R9M, + PXX2_MODULE_R9M_LITE, + PXX2_MODULE_R9M_LITE_PRO, +}; + +enum PXX2Variant { + PXX2_VARIANT_NONE, + PXX2_VARIANT_FCC, + PXX2_VARIANT_EU, + PXX2_VARIANT_FLEX +}; + enum PXX2RegisterSteps { REGISTER_START, REGISTER_RX_NAME_RECEIVED,