From f9f37d75a7cd38c2aff9e5b4e1d57819257b95a5 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 9 Feb 2019 12:24:15 +0100 Subject: [PATCH] Reuse :) (thx @bsongis) --- radio/src/gui/128x64/model_setup.cpp | 22 +++------------------- radio/src/gui/gui_common.h | 3 ++- radio/src/pulses/modules.h | 7 ++++++- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 8c207efc2..1e1d010b9 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -81,7 +81,6 @@ enum MenuModelSetupItems { ITEM_MODEL_INTERNAL_MODULE_ANTENNA, #endif ITEM_MODEL_INTERNAL_MODULE_FAILSAFE, - ITEM_MODEL_INTERNAL_MODULE_CH_RANGE, ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_NUMBER, ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_RANGE, @@ -307,12 +306,11 @@ void menuModelSetup(event_t event) LABEL(InternalModule), INTERNAL_MODULE_MODE_ROWS, // module mode (PXX(2) / None) - IF_NOT_PXX2(IF_INTERNAL_MODULE_ON(1)), // Channels min and count + INTERNAL_MODULE_CHANNELS_ROWS, // Channels min and count IF_NOT_PXX2(IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)), - IF_PXX2(0), // Model Number + IF_PXX2(0), // Model Number ANTENNA_ROW - IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), - IF_INTERNAL_MODULE_ON(0), // Module start channel + IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), // Module start channel (pxx2 always send 16) IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 1), // Range check and Register buttons IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, (uint8_t)-1), // Receiver Number IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Range @@ -1057,20 +1055,6 @@ void menuModelSetup(event_t event) break; - case ITEM_MODEL_INTERNAL_MODULE_CH_RANGE: - { - uint8_t moduleIdx = CURRENT_MODULE_EDITED(k); - lcdDrawTextAlignedLeft(y, STR_CHANNELRANGE); - lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, "CH", attr); - lcdDrawNumber(lcdLastRightPos, y, g_model.moduleData[moduleIdx].channelsStart+1, attr); - lcdDrawText(lcdLastRightPos, y, "-"); - lcdDrawNumber(lcdLastRightPos, y, g_model.moduleData[moduleIdx].channelsStart+PXX2_MODULE_CHANNELS, 0); - if (attr) { - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].channelsStart, PXX2_MODULE_CHANNELS); //TODO this needs discussion - } - } - break; - case ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM: lcdDrawTextAlignedLeft(y, STR_RECEIVER_NUM); lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[INTERNAL_MODULE], attr | LEADING0|LEFT, 2); diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index a98e59dbe..3b21668b4 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -115,7 +115,8 @@ void runFatalErrorScreen(const char * message); void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags=0); // model_setup Defines that are used in all uis in the same way -#define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON((isModuleDSM2(EXTERNAL_MODULE) || isModuleCrossfire(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) || (isModuleMultimodule(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) != MM_RF_PROTO_DSM2)) ? (uint8_t)0 : (uint8_t)1) +#define INTERNAL_MODULE_CHANNELS_ROWS IF_INTERNAL_MODULE_ON((isModuleXJT2(INTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1)) +#define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON((isModuleXJT2(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleCrossfire(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) || (isModuleMultimodule(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) != MM_RF_PROTO_DSM2)) ? (uint8_t)0 : (uint8_t)1) #if defined(MULTIMODULE) diff --git a/radio/src/pulses/modules.h b/radio/src/pulses/modules.h index 01eacaaaf..928abe24a 100644 --- a/radio/src/pulses/modules.h +++ b/radio/src/pulses/modules.h @@ -53,6 +53,12 @@ inline bool isModuleXJT(uint8_t idx) return g_model.moduleData[idx].type == MODULE_TYPE_XJT; } +inline bool isModuleXJT2(uint8_t idx) +{ + return g_model.moduleData[idx].type == MODULE_TYPE_XJT2; +} + + inline bool isModuleXJTVariant(uint8_t idx) { return g_model.moduleData[idx].type == MODULE_TYPE_XJT || g_model.moduleData[idx].type == MODULE_TYPE_XJT2; @@ -193,7 +199,6 @@ static const int8_t maxChannelsXJT[] = { 0, 8, 0, 4 }; // relative to 8! constexpr int8_t MAX_TRAINER_CHANNELS_M8 = MAX_TRAINER_CHANNELS - 8; constexpr int8_t MAX_EXTRA_MODULE_CHANNELS_M8 = 8; // only 16ch PPM -constexpr int8_t PXX2_MODULE_CHANNELS=16; inline int8_t maxModuleChannels_M8(uint8_t idx) {