diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 9a81ef4761b..e51bcf4d5e1 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -21,6 +21,7 @@ #include #include "hal/adc_driver.h" +#include "io/frsky_firmware_update.h" #if defined(CROSSFIRE) #include "telemetry/crossfire.h" @@ -132,9 +133,7 @@ enum { ITEM_RADIO_HARDWARE_JITTER_FILTER, ITEM_RADIO_HARDWARE_RAS, -#if defined(SPORT_UPDATE_PWR_GPIO) ITEM_RADIO_HARDWARE_SPORT_UPDATE_POWER, -#endif ITEM_RADIO_HARDWARE_DEBUG, #if defined(EEPROM) ITEM_RADIO_BACKUP_EEPROM, @@ -274,11 +273,7 @@ static uint8_t _dispSerialPort(uint8_t port_nr) #define HW_SETTINGS_COLUMN2 (HW_SETTINGS_COLUMN1 + 5*FW) #endif -#if defined(SPORT_UPDATE_PWR_GPIO) - #define SPORT_POWER_ROWS 0, -#else - #define SPORT_POWER_ROWS -#endif +#define SPORT_PWR_ROW (hasSportPower() ? (uint8_t)0 : HIDDEN_ROW) #if defined(EEPROM) #define EEPROM_ROWS 0 /* EEPROM backup */, 0 /* Factory reset */, @@ -326,7 +321,7 @@ void menuRadioHardware(event_t event) SERIAL_PORT_ROWS 0 /* ADC filter */, READONLY_ROW /* RAS */, - SPORT_POWER_ROWS + SPORT_PWR_ROW, 1 /* debugs */, EEPROM_ROWS }); @@ -666,15 +661,15 @@ void menuRadioHardware(event_t event) lcdDrawText(lcdNextPos, y, "---"); break; -// TODO: this is board specific, do something about it! -// #if defined(SPORT_UPDATE_PWR_GPIO) -// case ITEM_RADIO_HARDWARE_SPORT_UPDATE_POWER: -// g_eeGeneral.sportUpdatePower = editChoice(HW_SETTINGS_COLUMN2, y, STR_SPORT_UPDATE_POWER_MODE, STR_SPORT_UPDATE_POWER_MODES, g_eeGeneral.sportUpdatePower, 0, 1, attr, event); -// if (attr && checkIncDec_Ret) { -// SPORT_UPDATE_POWER_INIT(); -// } -// break; -// #endif + case ITEM_RADIO_HARDWARE_SPORT_UPDATE_POWER: + g_eeGeneral.sportUpdatePower = editChoice(HW_SETTINGS_COLUMN2, y, STR_SPORT_UPDATE_POWER_MODE, STR_SPORT_UPDATE_POWER_MODES, g_eeGeneral.sportUpdatePower, 0, 1, attr, event); + if (attr && checkIncDec_Ret) { + auto mod_desc = modulePortGetModuleDescription(SPORT_MODULE); + if (mod_desc && mod_desc->set_pwr) { + mod_desc->set_pwr(g_eeGeneral.sportUpdatePower); + } + } + break; case ITEM_RADIO_HARDWARE_DEBUG: lcdDrawTextAlignedLeft(y, STR_DEBUG); diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 7cf0fd75e10..5700afa9214 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -476,6 +476,14 @@ bool isSerialModeAvailable(uint8_t port_nr, int mode) return true; } +bool hasSportPower() { + auto mod_desc = modulePortGetModuleDescription(SPORT_MODULE); + if (mod_desc && mod_desc->set_pwr) { + return true; + } + return false; +} + bool isSwitchAvailableInLogicalSwitches(int swtch) { return isSwitchAvailable(swtch, LogicalSwitchesContext); @@ -1123,6 +1131,7 @@ int getFirstAvailable(int min, int max, IsValueAvailable isValueAvailable) } return retval; } + #if defined(MULTIMODULE) const uint8_t getMaxMultiOptions() diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 74a5f0fc3df..6b7b05a2e7b 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -115,6 +115,7 @@ uint8_t getTelemetrySensorsCount(); bool isTelemetryFieldComparisonAvailable(int index); bool isSensorAvailable(int sensor); bool isRssiSensorAvailable(int sensor); +bool hasSportPower(); bool modelHasNotes();