diff --git a/make/source.mk b/make/source.mk
index 4b0614f58..a9e08a75d 100644
--- a/make/source.mk
+++ b/make/source.mk
@@ -115,6 +115,7 @@ FC_SRC = \
rx/sbus.c \
rx/sbus_channels.c \
rx/spektrum.c \
+ io/spektrum_vtx_control.c \
rx/sumd.c \
rx/sumh.c \
rx/xbus.c \
diff --git a/src/main/io/spektrum_vtx_control.c b/src/main/io/spektrum_vtx_control.c
new file mode 100644
index 000000000..94b53b7b6
--- /dev/null
+++ b/src/main/io/spektrum_vtx_control.c
@@ -0,0 +1,187 @@
+/*
+ * This file is part of Cleanflight.
+ *
+ * Cleanflight is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Cleanflight is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Cleanflight. If not, see .
+ */
+
+
+#include "platform.h"
+#if defined(USE_SPEKTRUM_VTX_CONTROL) && defined(VTX_COMMON)
+
+#include
+
+#include "fc/config.h"
+#include "drivers/vtx_common.h"
+#include "io/vtx.h"
+#include "io/vtx_string.h"
+
+#include "io/spektrum_vtx_control.h"
+
+// We can not use the common set/get-frequncy API.
+// Some VTX devices do not support it.
+//#define USE_VTX_COMMON_FREQ_API
+
+#ifdef USE_VTX_COMMON_FREQ_API
+const uint16_t SpektrumVtxfrequencyTable[SPEKTRUM_VTX_BAND_COUNT][SPEKTRUM_VTX_CHAN_COUNT] =
+ {
+ { 5740, 5760, 5780, 5800, 5820, 5840, 5860, 5880 }, // FatShark
+ { 5658, 5695, 5732, 5769, 5806, 5843, 5880, 5917 }, // RaceBand
+ { 5705, 5685, 5665, 5645, 5885, 5905, 5925, 5945 }, // Boscam E
+ { 5733, 5752, 5771, 5790, 5809, 5828, 5847, 5866 }, // Boscam B
+ { 5865, 5845, 5825, 5805, 5785, 5765, 5745, 5725 }, // Boscam A
+ };
+#else
+// Translation table, Spektrum bands to BF internal vtx_common bands
+const uint8_t spek2commonBand[]= {
+ VTX_COMMON_BAND_FS,
+ VTX_COMMON_BAND_RACE,
+ VTX_COMMON_BAND_E,
+ VTX_COMMON_BAND_B,
+ VTX_COMMON_BAND_A,
+};
+#endif
+
+// RF Power Index translation tables. No generic power API available.....
+
+// Tramp "---", 25, 200, 400. 600 mW
+const uint8_t vtxTrampPi[] = { // Spektrum Spec Tx menu Tx sends To VTX Watt
+ VTX_TRAMP_POWER_OFF, // Off INHIBIT 0 0 -
+ VTX_TRAMP_POWER_OFF, // 1 - 14mW - - - -
+ VTX_TRAMP_POWER_25, // 15 - 25mW 15 - 25mW 2 1 25mW
+ VTX_TRAMP_POWER_100, // 26 - 99mW 26 - 99mW 3 2 100mW Slightly outside range
+ VTX_TRAMP_POWER_200, // 100 - 299mW 100 - 200mW 4 3 200mW
+ VTX_TRAMP_POWER_400, // 300 - 600mW 300 - 600mW 5 4 400mW
+ VTX_TRAMP_POWER_600, // 601 - max 601+ mW 6 5 600mW Slightly outside range
+ VTX_TRAMP_POWER_200 // Manual - - - -
+};
+
+// RTC6705 "---", 25 or 200 mW
+const uint8_t vtxRTC6705Pi[] = {
+ VTX_6705_POWER_OFF, // Off
+ VTX_6705_POWER_OFF, // 1 - 14mW
+ VTX_6705_POWER_25, // 15 - 25mW
+ VTX_6705_POWER_25, // 26 - 99mW
+ VTX_6705_POWER_200, // 100 - 299mW
+ VTX_6705_POWER_200, // 300 - 600mW
+ VTX_6705_POWER_200, // 601 - max
+ VTX_6705_POWER_200 // Manual
+};
+
+// SmartAudio "---", 25, 200, 500. 800 mW
+const uint8_t vtxSaPi[] = {
+ VTX_SA_POWER_OFF, // Off
+ VTX_SA_POWER_OFF, // 1 - 14mW
+ VTX_SA_POWER_25, // 15 - 25mW
+ VTX_SA_POWER_25, // 26 - 99mW
+ VTX_SA_POWER_200, // 100 - 299mW
+ VTX_SA_POWER_500, // 300 - 600mW
+ VTX_SA_POWER_800, // 601 - max
+ VTX_SA_POWER_200 // Manual
+};
+
+uint8_t convertSpektrumVtxPowerIndex(uint8_t sPower)
+{
+ uint8_t devicePower = 0;
+
+ switch (vtxCommonGetDeviceType()) {
+ case VTXDEV_RTC6705:
+ devicePower = vtxRTC6705Pi[sPower];
+ break;
+
+ case VTXDEV_SMARTAUDIO:
+ devicePower = vtxSaPi[sPower];
+ break;
+
+ case VTXDEV_TRAMP:
+ devicePower = vtxTrampPi[sPower];
+ break;
+
+ case VTXDEV_UNKNOWN:
+ case VTXDEV_UNSUPPORTED:
+ default:
+ break;
+
+ }
+ return devicePower;
+}
+
+void spektrumHandleVtxControl(uint32_t vtxControl)
+{
+ stru_vtx vtx;
+
+ vtx.pitMode = (vtxControl & SPEKTRUM_VTX_PIT_MODE_MASK) >> SPEKTRUM_VTX_PIT_MODE_SHIFT;;
+ vtx.region = (vtxControl & SPEKTRUM_VTX_REGION_MASK) >> SPEKTRUM_VTX_REGION_SHIFT;
+ vtx.power = (vtxControl & SPEKTRUM_VTX_POWER_MASK) >> SPEKTRUM_VTX_POWER_SHIFT;
+ vtx.band = (vtxControl & SPEKTRUM_VTX_BAND_MASK) >> SPEKTRUM_VTX_BAND_SHIFT;
+ vtx.channel = (vtxControl & SPEKTRUM_VTX_CHANNEL_MASK) >> SPEKTRUM_VTX_CHANNEL_SHIFT;
+
+ const vtxSettingsConfig_t prevSettings = {
+ .band = vtxSettingsConfig()->band,
+ .channel = vtxSettingsConfig()->channel,
+ .freq = vtxSettingsConfig()->freq,
+ .power = vtxSettingsConfig()->power,
+ .lowPowerDisarm = vtxSettingsConfig()->lowPowerDisarm,
+ };
+ vtxSettingsConfig_t newSettings = prevSettings;
+
+#ifdef USE_VTX_COMMON_FREQ_API
+ uint16_t freq = SpektrumVtxfrequencyTable[vtx.band][vtx.channel];
+ if (vtxCommonDeviceRegistered()) {
+ if (prevSettings.freq != freq) {
+ newSettings.band = VTX_COMMON_BAND_USER;
+ newSettings.channel = vtx.channel;
+ newSettings.freq = freq;
+ }
+ }
+
+#else
+ // Convert to the internal Common Band index
+ uint8_t band = spek2commonBand[vtx.band];
+ uint8_t channel = vtx.channel +1; // 0 based to 1 based
+ if (vtxCommonDeviceRegistered()) {
+ if ((prevSettings.band != band) || (prevSettings.channel != channel)) {
+ newSettings.band = band;
+ newSettings.channel = channel;
+ newSettings.freq = vtx58_Bandchan2Freq(band, channel);
+ }
+ }
+#endif
+
+ // Seems to be no unified internal VTX API std for popwer levels/indexes, VTX device brand specific.
+ uint8_t power = convertSpektrumVtxPowerIndex(vtx.power);
+ if (vtxCommonDeviceRegistered()) {
+ if (prevSettings.power != power) {
+ newSettings.power = power;
+ }
+ }
+
+ // Everyone seems to agree on what PIT ON/OFF means
+ uint8_t currentPitMode = 0;
+ if (vtxCommonDeviceRegistered()) {
+ vtxCommonGetPitMode(¤tPitMode);
+ if (currentPitMode != vtx.pitMode) {
+ vtxCommonSetPitMode(vtx.pitMode);
+ }
+ }
+
+ if(memcmp(&prevSettings,&newSettings,sizeof(vtxSettingsConfig_t))) {
+ vtxSettingsConfigMutable()->band = newSettings.band;
+ vtxSettingsConfigMutable()->channel = newSettings.channel;
+ vtxSettingsConfigMutable()->power = newSettings.power;
+ vtxSettingsConfigMutable()->freq = newSettings.freq;
+ saveConfigAndNotify();
+ }
+}
+
+#endif // USE_SPEKTRUM_VTX_CONTROL && VTX_COMMON
diff --git a/src/main/io/spektrum_vtx_control.h b/src/main/io/spektrum_vtx_control.h
new file mode 100644
index 000000000..9c7f0be25
--- /dev/null
+++ b/src/main/io/spektrum_vtx_control.h
@@ -0,0 +1,90 @@
+/*
+ * This file is part of Cleanflight.
+ *
+ * Cleanflight is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Cleanflight is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Cleanflight. If not, see .
+ */
+
+
+
+//VTX control frame bits and pieces
+#define SPEKTRUM_VTX_CONTROL_FRAME_MASK 0xf000f000
+#define SPEKTRUM_VTX_CONTROL_FRAME 0xe000e000
+
+#define SPEKTRUM_VTX_CONTROL_1 (SPEK_FRAME_SIZE - 4)
+#define SPEKTRUM_VTX_CONTROL_2 (SPEK_FRAME_SIZE - 3)
+#define SPEKTRUM_VTX_CONTROL_3 (SPEK_FRAME_SIZE - 2)
+#define SPEKTRUM_VTX_CONTROL_4 (SPEK_FRAME_SIZE - 1)
+
+#define SPEKTRUM_VTX_BAND_MASK 0x00e00000
+#define SPEKTRUM_VTX_CHANNEL_MASK 0x000f0000
+#define SPEKTRUM_VTX_PIT_MODE_MASK 0x00000010
+#define SPEKTRUM_VTX_REGION_MASK 0x00000008
+#define SPEKTRUM_VTX_POWER_MASK 0x00000007
+
+#define SPEKTRUM_VTX_BAND_SHIFT 21
+#define SPEKTRUM_VTX_CHANNEL_SHIFT 16
+#define SPEKTRUM_VTX_PIT_MODE_SHIFT 4
+#define SPEKTRUM_VTX_REGION_SHIFT 3
+#define SPEKTRUM_VTX_POWER_SHIFT 0
+
+#define SPEKTRUM_VTX_BAND_COUNT 5
+#define SPEKTRUM_VTX_CHAN_COUNT 8
+
+/*
+Channels vs Band according to spektrum spec.
+ 0 1 2 3 4 5 6 7
+5740 5760 5780 5800 5820 5840 5860 5880 FatShark
+5658 5695 5732 5769 5806 5843 5880 5917 Race
+5705 5685 5665 5645 5885 5905 5925 5945 Band E
+5733 5752 5771 5790 5809 5828 5847 5866 Band B
+5865 5845 5825 5805 5785 5765 5745 5725 Band A
+*/
+
+// Band translation to BF internal vtx_common needed
+// Spektrum order, zero based.
+#define SPEKTRUM_VTX_BAND_FS 0
+#define SPEKTRUM_VTX_BAND_RACE 1
+#define SPEKTRUM_VTX_BAND_E 2
+#define SPEKTRUM_VTX_BAND_B 3
+#define SPEKTRUM_VTX_BAND_A 4
+
+// Spektrum Max power index
+#define SPEKTRUM_VTX_POWER_OFF 0
+#define SPEKTRUM_VTX_POWER_14 1
+#define SPEKTRUM_VTX_POWER_25 2
+#define SPEKTRUM_VTX_POWER_99 3
+#define SPEKTRUM_VTX_POWER_299 4
+#define SPEKTRUM_VTX_POWER_600 5
+#define SPEKTRUM_VTX_POWER_MAXIT 6
+#define SPEKTRUM_VTX_POWER_MAN 7
+
+#define SPEKTRUM_VTX_REGION_USA 0
+#define SPEKTRUM_VTX_REGION_EU 1
+
+#define SPEKTRUM_VTX_PITMODE_OFF 0 // Power on, race
+#define SPEKTRUM_VTX_PITMODE_ON 1 // Power off, pit
+
+typedef struct
+{
+ uint8_t band;
+ uint8_t channel;
+ uint8_t power;
+ uint8_t region;
+ uint8_t pitMode;
+} stru_vtx;
+
+void spektrumHandleVtxControl(uint32_t vtxControl);
+
+
+
diff --git a/src/main/rx/spektrum.c b/src/main/rx/spektrum.c
index 41e99d57a..5366cf64e 100644
--- a/src/main/rx/spektrum.c
+++ b/src/main/rx/spektrum.c
@@ -15,15 +15,13 @@
* along with Cleanflight. If not, see .
*/
-#include
-#include
-#include
-#include "string.h"
#include "platform.h"
-#include "common/maths.h"
-
#ifdef USE_SERIAL_RX
+#include
+
+#include "common/maths.h"
+
#include "build/debug.h"
#include "drivers/io.h"
@@ -31,15 +29,16 @@
#include "drivers/light_led.h"
#include "drivers/system.h"
#include "drivers/time.h"
-#include "drivers/vtx_common.h"
#include "io/serial.h"
-#include "io/vtx.h"
-#include "io/vtx_string.h"
#include "fc/config.h"
#include "fc/fc_dispatch.h"
+#if defined(USE_SPEKTRUM_VTX_CONTROL) && defined(VTX_COMMON)
+#include "io/spektrum_vtx_control.h"
+#endif
+
#ifdef USE_TELEMETRY
#include "telemetry/telemetry.h"
#endif
@@ -161,166 +160,6 @@ static int8_t dBm2range (int8_t dBm)
}
#endif
-#if defined(USE_SPEKTRUM_VTX_CONTROL) && defined(VTX_COMMON)
-
-// We can not use the common set/get-frequncy API.
-// Some VTX devices do not support it.
-//#define USE_VTX_COMMON_FREQ_API
-
-#ifdef USE_VTX_COMMON_FREQ_API
- const uint16_t SpektrumVtxfrequencyTable[SPEKTRUM_VTX_BAND_COUNT][SPEKTRUM_VTX_CHAN_COUNT] =
- {
- { 5740, 5760, 5780, 5800, 5820, 5840, 5860, 5880 }, // FatShark
- { 5658, 5695, 5732, 5769, 5806, 5843, 5880, 5917 }, // RaceBand
- { 5705, 5685, 5665, 5645, 5885, 5905, 5925, 5945 }, // Boscam E
- { 5733, 5752, 5771, 5790, 5809, 5828, 5847, 5866 }, // Boscam B
- { 5865, 5845, 5825, 5805, 5785, 5765, 5745, 5725 }, // Boscam A
- };
-#else
- // Translation table, Spektrum bands to BF internal vtx_common bands
- const uint8_t spek2commonBand[]= {
- VTX_COMMON_BAND_FS,
- VTX_COMMON_BAND_RACE,
- VTX_COMMON_BAND_E,
- VTX_COMMON_BAND_B,
- VTX_COMMON_BAND_A,
- };
-#endif
-
- // RF Power Index translation tables. No generic power API available.....
-
- // Tramp "---", 25, 200, 400. 600 mW
-const uint8_t vtxTrampPi[] = { // Spektrum Spec Tx menu Tx sends To VTX Wand
- VTX_TRAMP_POWER_OFF, // Off INHIBIT 0 0 -
- VTX_TRAMP_POWER_OFF, // 1 - 14mW - - - -
- VTX_TRAMP_POWER_25, // 15 - 25mW 15 - 25mW 2 1 25mW
- VTX_TRAMP_POWER_100, // 26 - 99mW 26 - 99mW 3 2 100mW Slightly outside range
- VTX_TRAMP_POWER_200, // 100 - 299mW 100 - 200mW 4 3 200mW
- VTX_TRAMP_POWER_400, // 300 - 600mW 300 - 600mW 5 4 400mW
- VTX_TRAMP_POWER_600, // 601 - max 601+ mW 6 5 600mW Slightly outside range
- VTX_TRAMP_POWER_200 // Manual - - - -
- };
-
- // RTC6705 "---", 25 or 200 mW
- const uint8_t vtxRTC6705Pi[] = {
- VTX_6705_POWER_OFF, // Off
- VTX_6705_POWER_OFF, // 1 - 14mW
- VTX_6705_POWER_25, // 15 - 25mW
- VTX_6705_POWER_25, // 26 - 99mW
- VTX_6705_POWER_200, // 100 - 299mW
- VTX_6705_POWER_200, // 300 - 600mW
- VTX_6705_POWER_200, // 601 - max
- VTX_6705_POWER_200 // Manual
- };
-
- // SmartAudio "---", 25, 200, 500. 800 mW
- const uint8_t vtxSaPi[] = {
- VTX_SA_POWER_OFF, // Off
- VTX_SA_POWER_OFF, // 1 - 14mW
- VTX_SA_POWER_25, // 15 - 25mW
- VTX_SA_POWER_25, // 26 - 99mW
- VTX_SA_POWER_200, // 100 - 299mW
- VTX_SA_POWER_500, // 300 - 600mW
- VTX_SA_POWER_800, // 601 - max
- VTX_SA_POWER_200 // Manual
- };
-
- uint8_t convertSpektrumVtxPowerIndex(uint8_t sPower)
- {
- uint8_t devicePower = 0;
-
- switch (vtxCommonGetDeviceType()) {
- case VTXDEV_RTC6705:
- devicePower = vtxRTC6705Pi[sPower];
- break;
-
- case VTXDEV_SMARTAUDIO:
- devicePower = vtxSaPi[sPower];
- break;
-
- case VTXDEV_TRAMP:
- devicePower = vtxTrampPi[sPower];
- break;
-
- case VTXDEV_UNKNOWN:
- case VTXDEV_UNSUPPORTED:
- default:
- break;
-
- }
- return devicePower;
- }
-
- void handleSpektrumVtxControl(uint32_t vtxControl)
- {
- stru_vtx vtx;
-
- vtx.pitMode = (vtxControl & SPEKTRUM_VTX_PIT_MODE_MASK) >> SPEKTRUM_VTX_PIT_MODE_SHIFT;;
- vtx.region = (vtxControl & SPEKTRUM_VTX_REGION_MASK) >> SPEKTRUM_VTX_REGION_SHIFT;
- vtx.power = (vtxControl & SPEKTRUM_VTX_POWER_MASK) >> SPEKTRUM_VTX_POWER_SHIFT;
- vtx.band = (vtxControl & SPEKTRUM_VTX_BAND_MASK) >> SPEKTRUM_VTX_BAND_SHIFT;
- vtx.channel = (vtxControl & SPEKTRUM_VTX_CHANNEL_MASK) >> SPEKTRUM_VTX_CHANNEL_SHIFT;
-
- const vtxSettingsConfig_t prevSettings = {
- .band = vtxSettingsConfig()->band,
- .channel = vtxSettingsConfig()->channel,
- .freq = vtxSettingsConfig()->freq,
- .power = vtxSettingsConfig()->power,
- .lowPowerDisarm = vtxSettingsConfig()->lowPowerDisarm,
- };
- vtxSettingsConfig_t newSettings = prevSettings;
-
-#ifdef USE_VTX_COMMON_FREQ_API
- uint16_t freq = SpektrumVtxfrequencyTable[vtx.band][vtx.channel];
- if (vtxCommonDeviceRegistered()) {
- if (prevSettings.freq != freq) {
- newSettings.band = VTX_COMMON_BAND_USER;
- newSettings.channel = vtx.channel;
- newSettings.freq = freq;
- }
- }
-
-#else
- // Convert to the internal Common Band index
- uint8_t band = spek2commonBand[vtx.band];
- uint8_t channel = vtx.channel +1; // 0 based to 1 based
- if (vtxCommonDeviceRegistered()) {
- if ((prevSettings.band != band) || (prevSettings.channel != channel)) {
- newSettings.band = band;
- newSettings.channel = channel;
- newSettings.freq = vtx58_Bandchan2Freq(band, channel);
- }
- }
-#endif
-
- // Seems to be no unified internal VTX API std for popwer levels/indexes, VTX device brand specific.
- uint8_t power = convertSpektrumVtxPowerIndex(vtx.power);
- if (vtxCommonDeviceRegistered()) {
- if (prevSettings.power != power) {
- newSettings.power = power;
- }
- }
-
- // Everyone seems to agree on what PIT ON/OFF means
- uint8_t currentPitMode = 0;
- if (vtxCommonDeviceRegistered()) {
- vtxCommonGetPitMode(¤tPitMode);
- if (currentPitMode != vtx.pitMode) {
- vtxCommonSetPitMode(vtx.pitMode);
- }
- }
-
- if(memcmp(&prevSettings,&newSettings,sizeof(vtxSettingsConfig_t))) {
- vtxSettingsConfigMutable()->band = newSettings.band;
- vtxSettingsConfigMutable()->channel = newSettings.channel;
- vtxSettingsConfigMutable()->power = newSettings.power;
- vtxSettingsConfigMutable()->freq = newSettings.freq;
- saveConfigAndNotify();
- }
- }
-
-#endif // USE_SPEKTRUM_VTX_CONTROL && VTX_COMMON
-
// Receive ISR callback
static void spektrumDataReceive(uint16_t c, void *data)
@@ -469,9 +308,9 @@ static uint8_t spektrumFrameStatus(rxRuntimeConfig_t *rxRuntimeConfig)
(spekFrame[SPEKTRUM_VTX_CONTROL_3] << 8) |
(spekFrame[SPEKTRUM_VTX_CONTROL_4] << 0) );
- // Handle VTX control frame.
+ // Handle VTX control frame,
if ( (vtxControl & SPEKTRUM_VTX_CONTROL_FRAME_MASK) == SPEKTRUM_VTX_CONTROL_FRAME ) {
- handleSpektrumVtxControl(vtxControl);
+ spektrumHandleVtxControl(vtxControl);
}
#endif // USE_SPEKTRUM_VTX_CONTROL && VTX_COMMON
diff --git a/src/main/rx/spektrum.h b/src/main/rx/spektrum.h
index a691d6f4f..9febfff04 100644
--- a/src/main/rx/spektrum.h
+++ b/src/main/rx/spektrum.h
@@ -44,73 +44,6 @@ typedef struct
} stru_dbm_table;
-//VTX control frame bits and pieces
-#define SPEKTRUM_VTX_CONTROL_FRAME_MASK 0xf000f000
-#define SPEKTRUM_VTX_CONTROL_FRAME 0xe000e000
-
-#define SPEKTRUM_VTX_CONTROL_1 (SPEK_FRAME_SIZE - 4)
-#define SPEKTRUM_VTX_CONTROL_2 (SPEK_FRAME_SIZE - 3)
-#define SPEKTRUM_VTX_CONTROL_3 (SPEK_FRAME_SIZE - 2)
-#define SPEKTRUM_VTX_CONTROL_4 (SPEK_FRAME_SIZE - 1)
-
-#define SPEKTRUM_VTX_BAND_MASK 0x00e00000
-#define SPEKTRUM_VTX_CHANNEL_MASK 0x000f0000
-#define SPEKTRUM_VTX_PIT_MODE_MASK 0x00000010
-#define SPEKTRUM_VTX_REGION_MASK 0x00000008
-#define SPEKTRUM_VTX_POWER_MASK 0x00000007
-
-#define SPEKTRUM_VTX_BAND_SHIFT 21
-#define SPEKTRUM_VTX_CHANNEL_SHIFT 16
-#define SPEKTRUM_VTX_PIT_MODE_SHIFT 4
-#define SPEKTRUM_VTX_REGION_SHIFT 3
-#define SPEKTRUM_VTX_POWER_SHIFT 0
-
-#define SPEKTRUM_VTX_BAND_COUNT 5
-#define SPEKTRUM_VTX_CHAN_COUNT 8
-
-/*
-Channels vs Band according to spektrum spec.
- 0 1 2 3 4 5 6 7
-5740 5760 5780 5800 5820 5840 5860 5880 FatShark
-5658 5695 5732 5769 5806 5843 5880 5917 Race
-5705 5685 5665 5645 5885 5905 5925 5945 Band E
-5733 5752 5771 5790 5809 5828 5847 5866 Band B
-5865 5845 5825 5805 5785 5765 5745 5725 Band A
-*/
-
-// Band translation to BF internal vtx_common needed
-// Spektrum order, zero based.
-#define SPEKTRUM_VTX_BAND_FS 0
-#define SPEKTRUM_VTX_BAND_RACE 1
-#define SPEKTRUM_VTX_BAND_E 2
-#define SPEKTRUM_VTX_BAND_B 3
-#define SPEKTRUM_VTX_BAND_A 4
-
-// Spektrum Max power index
-#define SPEKTRUM_VTX_POWER_OFF 0
-#define SPEKTRUM_VTX_POWER_14 1
-#define SPEKTRUM_VTX_POWER_25 2
-#define SPEKTRUM_VTX_POWER_99 3
-#define SPEKTRUM_VTX_POWER_299 4
-#define SPEKTRUM_VTX_POWER_600 5
-#define SPEKTRUM_VTX_POWER_MAXIT 6
-#define SPEKTRUM_VTX_POWER_MAN 7
-
-#define SPEKTRUM_VTX_REGION_USA 0
-#define SPEKTRUM_VTX_REGION_EU 1
-
-#define SPEKTRUM_VTX_PITMODE_OFF 0 // Power on, race
-#define SPEKTRUM_VTX_PITMODE_ON 1 // Power off, pit
-
-typedef struct
-{
- uint8_t band;
- uint8_t channel;
- uint8_t power;
- uint8_t region;
- uint8_t pitMode;
-} stru_vtx;
-
void spektrumBind(rxConfig_t *rxConfig);
bool spektrumInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);