diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 3a0c85554..2fbae608e 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -46,6 +46,8 @@ #define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches #define MAX_SCRIPTS 9 #define MAX_INPUTS 32 + #define MIN_TRAINER_CHANNELS 4 + #define DEF_TRAINER_CHANNELS 8 #define MAX_TRAINER_CHANNELS 16 #define MAX_TELEMETRY_SENSORS 60 #define MAX_CUSTOM_SCREENS 5 @@ -59,6 +61,8 @@ #define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches #define MAX_SCRIPTS 7 #define MAX_INPUTS 32 + #define MIN_TRAINER_CHANNELS 4 + #define DEF_TRAINER_CHANNELS 8 #define MAX_TRAINER_CHANNELS 16 #define MAX_TELEMETRY_SENSORS 60 #elif defined(PCBTARANIS) @@ -71,6 +75,8 @@ #define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches #define MAX_SCRIPTS 7 #define MAX_INPUTS 32 + #define MIN_TRAINER_CHANNELS 4 + #define DEF_TRAINER_CHANNELS 8 #define MAX_TRAINER_CHANNELS 16 #define MAX_TELEMETRY_SENSORS 40 #else diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 37dfb3ee7..d9b96b47d 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -606,37 +606,36 @@ class TrainerModuleWindow : public FormGroup } else #endif if (g_model.trainerData.mode == TRAINER_MODE_SLAVE) { + #define PPMCH_START_MIN 1 + #define PPMCH_START_MAX (MAX_OUTPUT_CHANNELS - g_model.trainerData.channelsCount + 1 - DEF_TRAINER_CHANNELS) + #define PPMCH_END_MIN (g_model.trainerData.channelsStart + MIN_TRAINER_CHANNELS) + #define PPMCH_END_MAX min(g_model.trainerData.channelsStart + MAX_TRAINER_CHANNELS, MAX_OUTPUT_CHANNELS) + new StaticText(this, grid.getLabelSlot(true), STR_CHANNELRANGE, 0, COLOR_THEME_PRIMARY1); channelStart = new NumberEdit( - this, grid.getFieldSlot(2, 0), 1, - MAX_OUTPUT_CHANNELS - 8 + g_model.trainerData.channelsCount + 1, + this, grid.getFieldSlot(2, 0), PPMCH_START_MIN, PPMCH_START_MAX, GET_DEFAULT(1 + g_model.trainerData.channelsStart)); - channelEnd = - new NumberEdit(this, grid.getFieldSlot(2, 1), - g_model.trainerData.channelsStart + 1, - min(MAX_TRAINER_CHANNELS, - g_model.trainerData.channelsStart + - MAX_TRAINER_CHANNELS_M8), - GET_DEFAULT(g_model.trainerData.channelsStart + 8 + - g_model.trainerData.channelsCount)); + channelEnd = new NumberEdit( + this, grid.getFieldSlot(2, 1), PPMCH_END_MIN, PPMCH_END_MAX, + GET_DEFAULT((g_model.trainerData.channelsStart + + DEF_TRAINER_CHANNELS + + g_model.trainerData.channelsCount))); channelStart->setPrefix(STR_CH); channelEnd->setPrefix(STR_CH); channelStart->setSetValueHandler([=](int32_t newValue) { g_model.trainerData.channelsStart = newValue - 1; SET_DIRTY(); - channelEnd->setMin(g_model.trainerData.channelsStart + 1); - channelEnd->setMax(min( - MAX_TRAINER_CHANNELS, - g_model.trainerData.channelsStart + MAX_TRAINER_CHANNELS_M8)); + channelEnd->setMin(PPMCH_END_MIN); + channelEnd->setMax(PPMCH_END_MAX); channelEnd->invalidate(); }); channelEnd->setSetValueHandler([=](int32_t newValue) { g_model.trainerData.channelsCount = - newValue - g_model.trainerData.channelsStart - 8; + newValue - g_model.trainerData.channelsStart - + DEF_TRAINER_CHANNELS; SET_DIRTY(); - channelStart->setMax(MAX_TRAINER_CHANNELS - 8 + - g_model.trainerData.channelsCount + 1); + channelStart->setMax(PPMCH_START_MAX); }); grid.nextLine();