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:
parent
1c5c7476c1
commit
f35ec19b15
2 changed files with 39 additions and 3 deletions
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue