Fix trainer (needs review)

This commit is contained in:
3djc
2020-06-19 09:29:25 +02:00
parent 0e14520afa
commit 7906c777ba
3 changed files with 33 additions and 32 deletions
+10 -4
View File
@@ -188,20 +188,26 @@ enum ModuleIndex {
SPORT_MODULE,
BOOTLOADER_MODULE,
};
enum TrainerMode {
#if defined(PCBNV14)
TRAINER_MODE_OFF,
#endif
TRAINER_MODE_MASTER_TRAINER_JACK,
TRAINER_MODE_SLAVE,
#if defined(PCBTARANIS)
TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE,
TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE,
#endif
#if defined(PCBTARANIS) || defined(AUX_SERIAL)
TRAINER_MODE_MASTER_BATTERY_COMPARTMENT,
#endif
TRAINER_MODE_MASTER_BLUETOOTH,
TRAINER_MODE_SLAVE_BLUETOOTH,
TRAINER_MODE_MULTI,
TRAINER_MODE_MAX = TRAINER_MODE_MULTI
};
#elif defined(PCBSKY9X)
enum ModuleIndex {
enum ModuleIndex {
EXTERNAL_MODULE,
EXTRA_MODULE,
SPORT_MODULE
@@ -209,9 +215,9 @@ enum TrainerMode {
#endif
#if defined(RADIO_FAMILY_T16) || (defined(RADIO_T12) && defined(INTERNAL_MODULE_MULTI)) || defined(ALLOW_TRAINER_MULTI)
#define TRAINER_MODE_MAX() TRAINER_MODE_MULTI
#define TRAINER_MODE_MAX() TRAINER_MODE_MULTI
#elif defined(BLUETOOTH)
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
#elif defined(PCBX7) || defined(PCBXLITE)
#define TRAINER_MODE_MAX() TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE
#else
+6 -6
View File
@@ -475,16 +475,16 @@ class TrainerModuleWindow : public FormGroup {
clear();
new StaticText(this, grid.getLabelSlot(true), STR_MODE);
moduleChoice = new Choice(this, grid.getFieldSlot(), STR_VTRAINERMODES, 0, TRAINER_MODE_MAX, GET_DEFAULT(g_model.trainerData.mode), [=](int32_t newValue) {
trainerChoice = new Choice(this, grid.getFieldSlot(), STR_VTRAINERMODES, 0, TRAINER_MODE_MAX(), GET_DEFAULT(g_model.trainerData.mode), [=](int32_t newValue) {
g_model.trainerData.mode = newValue;
update();
SET_DIRTY();
moduleChoice->setFocus(SET_FOCUS_DEFAULT);
update();
trainerChoice->setFocus(SET_FOCUS_DEFAULT);
});
moduleChoice->setAvailableHandler(isTrainerModeAvailable);
trainerChoice->setAvailableHandler(isTrainerModeAvailable);
grid.nextLine();
if (g_model.trainerData.mode > TRAINER_MODE_OFF) {
if (g_model.trainerData.mode >= TRAINER_MODE_MASTER_TRAINER_JACK) {
new StaticText(this, grid.getLabelSlot(true), STR_CHANNELRANGE);
channelStart = new NumberEdit(this, grid.getFieldSlot(2, 0), 1,
MAX_OUTPUT_CHANNELS - 8 + g_model.trainerData.channelsCount + 1,
@@ -537,7 +537,7 @@ class TrainerModuleWindow : public FormGroup {
}
protected:
Choice * moduleChoice = nullptr;
Choice * trainerChoice = nullptr;
NumberEdit * channelStart = nullptr;
NumberEdit * channelEnd = nullptr;
};
+17 -22
View File
@@ -734,22 +734,24 @@ bool isTelemetryProtocolAvailable(int protocol)
bool isTrainerModeAvailable(int mode)
{
switch(mode) {
#if defined(HARDWARE_TRAINER_EXTERNAL_MODULE)
case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE:
case TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE:
return !IS_EXTERNAL_MODULE_ENABLED();
#if defined(PCBTARANIS)
if (IS_EXTERNAL_MODULE_ENABLED() && (mode == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE || mode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE))
return false;
#endif
#if defined(PCBX9E)
case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE:
// bluetooth uses the same USART than SBUS
return !g_eeGeneral.bluetoothMode;
if (g_eeGeneral.bluetoothMode && mode == TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE) {
// bluetooth uses the same USART than SBUS
return false;
}
#endif
#if defined(HARDWARE_TRAINER_AUX_SERIAL)
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
return g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER;
#if defined(PCBTARANIS) && !defined(TRAINER_BATTERY_COMPARTMENT)
if (mode == TRAINER_MODE_MASTER_BATTERY_COMPARTMENT)
return false;
#elif defined(PCBTARANIS)
if (mode == TRAINER_MODE_MASTER_BATTERY_COMPARTMENT)
return g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER;
#endif
#if defined(BLUETOOTH) && !defined(PCBX9E)
@@ -760,19 +762,12 @@ bool isTrainerModeAvailable(int mode)
return false;
#endif
#if defined(HARDWARE_TRAINER_MULTI)
case TRAINER_MODE_MULTI:
return true;
#if defined(PCBXLITE) && !defined(PCBXLITES)
if (mode == TRAINER_MODE_MASTER_TRAINER_JACK || mode == TRAINER_MODE_SLAVE)
return false;
#endif
#if !defined(TRAINER_DETECT_GPIO)
case TRAINER_MODE_OFF:
return true;
#endif
default:
return false;
}
return true;
}
bool modelHasNotes()