mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 01:35:41 +03:00
VTX improvements from iNav.
This commit is contained in:
parent
43e6ea31da
commit
b4db764b46
8 changed files with 54 additions and 11 deletions
|
@ -1363,11 +1363,13 @@ static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
|
|||
case MSP_VTX_CONFIG:
|
||||
{
|
||||
const vtxDevice_t *vtxDevice = vtxCommonDevice();
|
||||
uint8_t pitmode=0;
|
||||
uint8_t pitmode = 0;
|
||||
vtxDevType_e vtxType = VTXDEV_UNKNOWN;
|
||||
uint8_t deviceIsReady = 0;
|
||||
if (vtxDevice) {
|
||||
vtxCommonGetPitMode(vtxDevice, &pitmode);
|
||||
vtxType = vtxCommonGetDeviceType(vtxDevice);
|
||||
deviceIsReady = vtxCommonDeviceIsReady(vtxDevice) ? 1 : 0;
|
||||
}
|
||||
sbufWriteU8(dst, vtxType);
|
||||
sbufWriteU8(dst, vtxSettingsConfig()->band);
|
||||
|
@ -1375,6 +1377,8 @@ static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
|
|||
sbufWriteU8(dst, vtxSettingsConfig()->power);
|
||||
sbufWriteU8(dst, pitmode);
|
||||
sbufWriteU16(dst, vtxSettingsConfig()->freq);
|
||||
sbufWriteU8(dst, deviceIsReady);
|
||||
sbufWriteU8(dst, vtxSettingsConfig()->lowPowerDisarm);
|
||||
// future extensions here...
|
||||
}
|
||||
break;
|
||||
|
@ -2026,18 +2030,19 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
|
|||
vtxType = vtxCommonGetDeviceType(vtxDevice);
|
||||
}
|
||||
uint16_t newFrequency = sbufReadU16(src);
|
||||
if (newFrequency <= VTXCOMMON_MSP_BANDCHAN_CHKVAL) { //value is band and channel
|
||||
if (newFrequency <= VTXCOMMON_MSP_BANDCHAN_CHKVAL) { // Value is band and channel
|
||||
const uint8_t newBand = (newFrequency / 8) + 1;
|
||||
const uint8_t newChannel = (newFrequency % 8) + 1;
|
||||
vtxSettingsConfigMutable()->band = newBand;
|
||||
vtxSettingsConfigMutable()->channel = newChannel;
|
||||
vtxSettingsConfigMutable()->freq = vtx58_Bandchan2Freq(newBand, newChannel);
|
||||
} else { //value is frequency in MHz
|
||||
} else if (newFrequency <= VTX_SETTINGS_MAX_FREQUENCY_MHZ) { // Value is frequency in MHz
|
||||
vtxSettingsConfigMutable()->band = 0;
|
||||
vtxSettingsConfigMutable()->channel = 0;
|
||||
vtxSettingsConfigMutable()->freq = newFrequency;
|
||||
}
|
||||
|
||||
if (sbufBytesRemaining(src) > 1) {
|
||||
if (sbufBytesRemaining(src) >= 2) {
|
||||
vtxSettingsConfigMutable()->power = sbufReadU8(src);
|
||||
if (vtxType != VTXDEV_UNKNOWN) {
|
||||
// Delegate pitmode to vtx directly
|
||||
|
@ -2047,6 +2052,10 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
|
|||
if (currentPitmode != newPitmode) {
|
||||
vtxCommonSetPitMode(vtxDevice, newPitmode);
|
||||
}
|
||||
|
||||
if (sbufBytesRemaining(src)) {
|
||||
vtxSettingsConfigMutable()->lowPowerDisarm = sbufReadU8(src);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -381,6 +381,12 @@ static const char * const lookupTableDynamicFilterRange[] = {
|
|||
};
|
||||
#endif // USE_GYRO_DATA_ANALYSE
|
||||
|
||||
#ifdef USE_VTX_COMMON
|
||||
static const char * const lookupTableVtxLowPowerDisarm[] = {
|
||||
"OFF", "ON", "UNTIL_FIRST_ARM"
|
||||
};
|
||||
#endif
|
||||
|
||||
#define LOOKUP_TABLE_ENTRY(name) { name, ARRAYLEN(name) }
|
||||
|
||||
const lookupTableEntry_t lookupTables[] = {
|
||||
|
@ -474,7 +480,9 @@ const lookupTableEntry_t lookupTables[] = {
|
|||
LOOKUP_TABLE_ENTRY(lookupTableDynamicFftLocation),
|
||||
LOOKUP_TABLE_ENTRY(lookupTableDynamicFilterRange),
|
||||
#endif // USE_GYRO_DATA_ANALYSE
|
||||
|
||||
#ifdef USE_VTX_COMMON
|
||||
LOOKUP_TABLE_ENTRY(lookupTableVtxLowPowerDisarm),
|
||||
#endif
|
||||
};
|
||||
|
||||
#undef LOOKUP_TABLE_ENTRY
|
||||
|
@ -1040,7 +1048,7 @@ const clivalue_t valueTable[] = {
|
|||
{ "vtx_band", VAR_UINT8 | MASTER_VALUE, .config.minmax = { VTX_SETTINGS_NO_BAND, 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 = { VTX_SETTINGS_MIN_POWER, VTX_SETTINGS_POWER_COUNT-1 }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, power) },
|
||||
{ "vtx_low_power_disarm", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, lowPowerDisarm) },
|
||||
{ "vtx_low_power_disarm", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_VTX_LOW_POWER_DISARM }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, lowPowerDisarm) },
|
||||
#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) },
|
||||
{ "vtx_pit_mode_freq", VAR_UINT16 | MASTER_VALUE, .config.minmax = { 0, VTX_SETTINGS_MAX_FREQUENCY_MHZ }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, pitModeFreq) },
|
||||
|
|
|
@ -116,7 +116,9 @@ typedef enum {
|
|||
TABLE_DYNAMIC_FFT_LOCATION,
|
||||
TABLE_DYNAMIC_FILTER_RANGE,
|
||||
#endif // USE_GYRO_DATA_ANALYSE
|
||||
|
||||
#ifdef USE_VTX_COMMON
|
||||
TABLE_VTX_LOW_POWER_DISARM,
|
||||
#endif
|
||||
LOOKUP_TABLE_COUNT
|
||||
} lookupTableIndex_e;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue