From dfd92688e090caafe242efa67daebffcddeda755 Mon Sep 17 00:00:00 2001 From: mikeller Date: Fri, 20 Oct 2017 14:22:39 +1300 Subject: [PATCH] Fixed power configuration for RTC6705 based VTX with no power pin. --- src/main/cms/cms_menu_vtx_rtc6705.c | 6 +++--- src/main/fc/settings.c | 2 +- src/main/io/vtx_rtc6705.c | 11 +++-------- src/main/io/vtx_rtc6705.h | 7 ++++--- src/main/io/vtx_settings_config.h | 2 ++ 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/main/cms/cms_menu_vtx_rtc6705.c b/src/main/cms/cms_menu_vtx_rtc6705.c index 3826033d67..766c3f265d 100644 --- a/src/main/cms/cms_menu_vtx_rtc6705.c +++ b/src/main/cms/cms_menu_vtx_rtc6705.c @@ -48,18 +48,18 @@ static const char * const rtc6705BandNames[] = { static OSD_TAB_t entryVtxBand = {&cmsx_vtxBand, ARRAYLEN(rtc6705BandNames) - 1, &rtc6705BandNames[0]}; static OSD_UINT8_t entryVtxChannel = {&cmsx_vtxChannel, 1, VTX_RTC6705_CHANNEL_COUNT, 1}; -static OSD_TAB_t entryVtxPower = {&cmsx_vtxPower, VTX_RTC6705_POWER_COUNT - 1, &rtc6705PowerNames[0]}; +static OSD_TAB_t entryVtxPower = {&cmsx_vtxPower, VTX_RTC6705_POWER_COUNT - 1 - VTX_RTC6705_MIN_POWER, &rtc6705PowerNames[VTX_RTC6705_MIN_POWER]}; static void cmsx_Vtx_ConfigRead(void) { cmsx_vtxBand = vtxSettingsConfig()->band - 1; cmsx_vtxChannel = vtxSettingsConfig()->channel; - cmsx_vtxPower = vtxSettingsConfig()->power; + cmsx_vtxPower = vtxSettingsConfig()->power - VTX_RTC6705_MIN_POWER; } static void cmsx_Vtx_ConfigWriteback(void) { - vtxSettingsSaveBandChanAndPower(cmsx_vtxBand + 1, cmsx_vtxChannel, cmsx_vtxPower); + vtxSettingsSaveBandChanAndPower(cmsx_vtxBand + 1, cmsx_vtxChannel, cmsx_vtxPower + VTX_RTC6705_MIN_POWER); } static long cmsx_Vtx_onEnter(void) diff --git a/src/main/fc/settings.c b/src/main/fc/settings.c index 0467d7a9ce..39bac9b900 100644 --- a/src/main/fc/settings.c +++ b/src/main/fc/settings.c @@ -746,7 +746,7 @@ const clivalue_t valueTable[] = { #ifdef VTX_SETTINGS_CONFIG { "vtx_band", VAR_UINT8 | MASTER_VALUE, .config.minmax = { 0, VTX_SETTINGS_MAX_BAND }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, band) }, { "vtx_channel", VAR_UINT8 | MASTER_VALUE, .config.minmax = { VTX_SETTINGS_MIN_CHANNEL, VTX_SETTINGS_MAX_CHANNEL }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, channel) }, - { "vtx_power", VAR_UINT8 | MASTER_VALUE, .config.minmax = { 0, VTX_SETTINGS_POWER_COUNT }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, power) }, + { "vtx_power", VAR_UINT8 | MASTER_VALUE, .config.minmax = { VTX_SETTINGS_MIN_POWER, VTX_SETTINGS_POWER_COUNT }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, power) }, #ifdef VTX_SETTINGS_FREQCMD { "vtx_freq", VAR_UINT16 | MASTER_VALUE, .config.minmax = { 0, VTX_SETTINGS_MAX_FREQUENCY_MHZ }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, freq) }, #endif diff --git a/src/main/io/vtx_rtc6705.c b/src/main/io/vtx_rtc6705.c index faf3d793e3..c786772c70 100644 --- a/src/main/io/vtx_rtc6705.c +++ b/src/main/io/vtx_rtc6705.c @@ -30,6 +30,7 @@ #include "cms/cms.h" #include "cms/cms_types.h" +#include "common/maths.h" #include "common/utils.h" #include "config/parameter_group.h" @@ -52,15 +53,9 @@ bool canUpdateVTX(void); #define WAIT_FOR_VTX while (!canUpdateVTX()) {} #if defined(CMS) || defined(VTX_COMMON) -#ifdef RTC6705_POWER_PIN const char * const rtc6705PowerNames[VTX_RTC6705_POWER_COUNT] = { "---", "25 ", "200", }; -#else -const char * const rtc6705PowerNames[VTX_RTC6705_POWER_COUNT] = { - "25 ", "200", -}; -#endif #endif #ifdef VTX_COMMON @@ -110,7 +105,7 @@ void vtxRTC6705Process(uint32_t now) if (!configured) { vtxRTC6705.band = vtxSettingsConfig()->band; vtxRTC6705.channel = vtxSettingsConfig()->channel; - vtxRTC6705.powerIndex = vtxSettingsConfig()->power; + vtxRTC6705.powerIndex = MAX(vtxSettingsConfig()->power, VTX_RTC6705_MIN_POWER); #ifdef RTC6705_POWER_PIN if (vtxRTC6705.powerIndex > 0) { @@ -186,7 +181,7 @@ void vtxRTC6705SetPowerByIndex(uint8_t index) } } #else - vtxRTC6705.powerIndex = index; + vtxRTC6705.powerIndex = MAX(index, VTX_RTC6705_MIN_POWER); rtc6705SetRFPower(index); #endif } diff --git a/src/main/io/vtx_rtc6705.h b/src/main/io/vtx_rtc6705.h index 39f99dff2a..5e8157e69f 100644 --- a/src/main/io/vtx_rtc6705.h +++ b/src/main/io/vtx_rtc6705.h @@ -30,12 +30,13 @@ #define VTX_RTC6705_BAND_COUNT (VTX_RTC6705_MAX_BAND - VTX_RTC6705_MIN_BAND + 1) #define VTX_RTC6705_CHANNEL_COUNT (VTX_RTC6705_MAX_CHANNEL - VTX_RTC6705_MIN_CHANNEL + 1) -#ifdef RTC6705_POWER_PIN #define VTX_RTC6705_POWER_COUNT 3 #define VTX_RTC6705_DEFAULT_POWER 1 + +#if defined(RTC6705_POWER_PIN) +#define VTX_RTC6705_MIN_POWER 0 #else -#define VTX_RTC6705_POWER_COUNT 2 -#define VTX_RTC6705_DEFAULT_POWER 0 +#define VTX_RTC6705_MIN_POWER 1 #endif extern const char * const rtc6705PowerNames[VTX_RTC6705_POWER_COUNT]; diff --git a/src/main/io/vtx_settings_config.h b/src/main/io/vtx_settings_config.h index cfd4d78732..4417dd879b 100644 --- a/src/main/io/vtx_settings_config.h +++ b/src/main/io/vtx_settings_config.h @@ -34,6 +34,7 @@ #define VTX_SETTINGS_POWER_COUNT 5 #define VTX_SETTINGS_DEFAULT_POWER 1 +#define VTX_SETTINGS_MIN_POWER 0 #define VTX_SETTINGS_CONFIG #define VTX_SETTINGS_FREQCMD @@ -43,6 +44,7 @@ #define VTX_SETTINGS_POWER_COUNT VTX_RTC6705_POWER_COUNT #define VTX_SETTINGS_DEFAULT_POWER VTX_RTC6705_DEFAULT_POWER +#define VTX_SETTINGS_MIN_POWER VTX_RTC6705_MIN_POWER #define VTX_SETTINGS_CONFIG #endif