From 23b31736b7abb849eef4c29673ec3fbd845216b3 Mon Sep 17 00:00:00 2001 From: Anders Hoglund Date: Mon, 18 Dec 2017 23:14:50 +0100 Subject: [PATCH] Moved Spektrum VTX control stuff to separate source files. --- make/source.mk | 1 + src/main/io/spektrum_vtx_control.c | 187 +++++++++++++++++++++++++++++ src/main/io/spektrum_vtx_control.h | 90 ++++++++++++++ src/main/rx/spektrum.c | 181 ++-------------------------- src/main/rx/spektrum.h | 67 ----------- 5 files changed, 288 insertions(+), 238 deletions(-) create mode 100644 src/main/io/spektrum_vtx_control.c create mode 100644 src/main/io/spektrum_vtx_control.h 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);