diff --git a/src/main/cli/settings.c b/src/main/cli/settings.c index 9e6c0ddbf2..ed0c3e86b9 100644 --- a/src/main/cli/settings.c +++ b/src/main/cli/settings.c @@ -1715,7 +1715,7 @@ const clivalue_t valueTable[] = { { "vtx_channel", VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, VTX_TABLE_MAX_CHANNELS }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, channel) }, { "vtx_power", VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, VTX_TABLE_MAX_POWER_LEVELS - 1 }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, power) }, { "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) }, - { "vtx_softserial_alt", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, softserialAlt) }, + { "vtx_serial_alt", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, serialAlt) }, #ifdef VTX_SETTINGS_FREQCMD { "vtx_freq", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, VTX_SETTINGS_MAX_FREQUENCY_MHZ }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, freq) }, { "vtx_pit_mode_freq", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, VTX_SETTINGS_MAX_FREQUENCY_MHZ }, PG_VTX_SETTINGS_CONFIG, offsetof(vtxSettingsConfig_t, pitModeFreq) }, diff --git a/src/main/io/vtx.c b/src/main/io/vtx.c index 57fb0d18aa..47528a2ba4 100644 --- a/src/main/io/vtx.c +++ b/src/main/io/vtx.c @@ -63,7 +63,11 @@ void pgResetFn_vtxSettingsConfig(vtxSettingsConfig_t *vtxSettingsConfig) #endif vtxSettingsConfig->pitModeFreq = VTX_TABLE_DEFAULT_PITMODE_FREQ; vtxSettingsConfig->lowPowerDisarm = VTX_LOW_POWER_DISARM_OFF; - vtxSettingsConfig->softserialAlt = 0; +#ifdef AT32F4 + vtxSettingsConfig->serialAlt = 0; +#else + vtxSettingsConfig->serialAlt = 1; +#endif } typedef enum { diff --git a/src/main/io/vtx.h b/src/main/io/vtx.h index 2ccde3c86a..537279eea8 100644 --- a/src/main/io/vtx.h +++ b/src/main/io/vtx.h @@ -39,7 +39,7 @@ typedef struct vtxSettingsConfig_s { uint16_t freq; // sets freq in MHz if band=0 uint16_t pitModeFreq; // sets out-of-range pitmode frequency uint8_t lowPowerDisarm; // min power while disarmed, from vtxLowerPowerDisarm_e - uint8_t softserialAlt; // prepend 0xff before sending frame even with SOFTSERIAL + uint8_t serialAlt; // prepend 0xff before sending frame even with [SOFT]SERIAL } vtxSettingsConfig_t; PG_DECLARE(vtxSettingsConfig_t, vtxSettingsConfig); diff --git a/src/main/io/vtx_smartaudio.c b/src/main/io/vtx_smartaudio.c index df3a48fc6c..8cfcd9e760 100644 --- a/src/main/io/vtx_smartaudio.c +++ b/src/main/io/vtx_smartaudio.c @@ -495,15 +495,12 @@ static void saSendFrame(uint8_t *buf, int len) bool prepend00; switch (serialType(smartAudioSerialPort->identifier)) { case SERIALTYPE_SOFTSERIAL: - prepend00 = vtxSettingsConfig()->softserialAlt; - break; case SERIALTYPE_UART: case SERIALTYPE_LPUART: // decide HW uarts by MCU type -#ifdef AT32F4 - prepend00 = false; -#else - prepend00 = true; -#endif + // AT32F4 has a bug in the UART peripheral that causes it to + // not send the first byte of a transmission if the first byte + // is 0x00. This is not a problem for other MCUs. + prepend00 = vtxSettingsConfig()->serialAlt; break; default: prepend00 = false;