1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 12:55:19 +03:00

Fixed vtx_low_power_disarm

This commit is contained in:
Curtis Bangert 2017-11-11 21:07:41 -05:00
parent 1c5c7476c1
commit f35ec19b15
2 changed files with 39 additions and 3 deletions

View file

@ -493,7 +493,11 @@ static void osdDrawSingleElement(uint8_t item)
{ {
const char vtxBandLetter = vtx58BandLetter[vtxSettingsConfig()->band]; const char vtxBandLetter = vtx58BandLetter[vtxSettingsConfig()->band];
const char *vtxChannelName = vtx58ChannelNames[vtxSettingsConfig()->channel]; const char *vtxChannelName = vtx58ChannelNames[vtxSettingsConfig()->channel];
tfp_sprintf(buff, "%c:%s:%d", vtxBandLetter, vtxChannelName, vtxSettingsConfig()->power); uint8_t vtxPower = vtxSettingsConfig()->power;
if (vtxSettingsConfig()->lowPowerDisarm) {
vtxCommonGetPowerIndex(&vtxPower);
}
tfp_sprintf(buff, "%c:%s:%d", vtxBandLetter, vtxChannelName, vtxPower);
break; break;
} }
#endif #endif

View file

@ -16,6 +16,7 @@
*/ */
#include <stdint.h> #include <stdint.h>
#include <string.h>
#include "platform.h" #include "platform.h"
@ -50,6 +51,7 @@ PG_RESET_TEMPLATE(vtxSettingsConfig_t, vtxSettingsConfig,
typedef enum { typedef enum {
VTX_PARAM_BANDCHAN = 0, VTX_PARAM_BANDCHAN = 0,
VTX_PARAM_POWER, VTX_PARAM_POWER,
VTX_PARAM_CONFIRM,
VTX_PARAM_COUNT VTX_PARAM_COUNT
} vtxScheduleParams_e; } vtxScheduleParams_e;
@ -61,6 +63,8 @@ void vtxInit(void)
uint8_t index = 0; uint8_t index = 0;
vtxParamSchedule[index++] = VTX_PARAM_BANDCHAN; vtxParamSchedule[index++] = VTX_PARAM_BANDCHAN;
vtxParamSchedule[index++] = VTX_PARAM_POWER; vtxParamSchedule[index++] = VTX_PARAM_POWER;
vtxParamSchedule[index++] = VTX_PARAM_CONFIRM;
vtxParamScheduleCount = index; vtxParamScheduleCount = index;
// sync frequency in parameter group when band/channel are specified // sync frequency in parameter group when band/channel are specified
@ -102,10 +106,12 @@ static bool vtxProcessFrequency(void) {
static bool vtxProcessPower(void) { static bool vtxProcessPower(void) {
uint8_t vtxPower; uint8_t vtxPower;
uint8_t newPower = vtxSettingsConfig()->power; uint8_t newPower;
if (vtxCommonGetPowerIndex(&vtxPower)) { if (vtxCommonGetPowerIndex(&vtxPower)) {
if (!ARMING_FLAG(ARMED) && vtxSettingsConfig()->lowPowerDisarm) { if (!ARMING_FLAG(ARMED) && vtxSettingsConfig()->lowPowerDisarm) {
newPower = VTX_SETTINGS_MIN_POWER; newPower = VTX_SETTINGS_DEFAULT_POWER;
} else {
newPower = vtxSettingsConfig()->power;
} }
if (vtxPower != newPower) { if (vtxPower != newPower) {
vtxCommonSetPowerByIndex(newPower); vtxCommonSetPowerByIndex(newPower);
@ -115,6 +121,29 @@ static bool vtxProcessPower(void) {
return false; return false;
} }
static bool vtxProcessStateUpdate(void) {
const vtxSettingsConfig_t vtxSettingsState = {
.band = vtxSettingsConfig()->band,
.channel = vtxSettingsConfig()->channel,
.power = vtxSettingsConfig()->power,
.freq = vtxSettingsConfig()->freq,
.lowPowerDisarm = vtxSettingsConfig()->lowPowerDisarm,
};
vtxSettingsConfig_t vtxState = vtxSettingsState;
if (vtxSettingsState.band) {
vtxCommonGetBandAndChannel(&vtxState.band, &vtxState.channel);
#if defined(VTX_SETTINGS_FREQCMD)
} else {
vtxCommonGetFrequency(&vtxState.freq);
#endif
}
vtxCommonGetPowerIndex(&vtxState.power);
return (bool) memcmp(&vtxSettingsState, &vtxState, sizeof(vtxSettingsConfig_t));
}
void vtxProcessSchedule(timeUs_t currentTimeUs) void vtxProcessSchedule(timeUs_t currentTimeUs)
{ {
static timeUs_t lastCycleTimeUs; static timeUs_t lastCycleTimeUs;
@ -138,6 +167,9 @@ void vtxProcessSchedule(timeUs_t currentTimeUs)
case VTX_PARAM_POWER: case VTX_PARAM_POWER:
vtxUpdatePending = vtxProcessPower(); vtxUpdatePending = vtxProcessPower();
break; break;
case VTX_PARAM_CONFIRM:
vtxUpdatePending = vtxProcessStateUpdate();
break;
default: default:
break; break;
} }