2 * This file is part of Cleanflight and Betaflight.
4 * Cleanflight and Betaflight are free software. You can redistribute
5 * this software and/or modify this software under the terms of the
6 * GNU General Public License as published by the Free Software
7 * Foundation, either version 3 of the License, or (at your option)
10 * Cleanflight and Betaflight are distributed in the hope that they
11 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
12 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 * See the GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this software.
18 * If not, see <http://www.gnu.org/licenses/>.
21 //VTX control frame bits and pieces
22 #define SPEKTRUM_VTX_CONTROL_FRAME_MASK 0xf000f000
23 #define SPEKTRUM_VTX_CONTROL_FRAME 0xe000e000
25 #define SPEKTRUM_VTX_CONTROL_1 (SPEK_FRAME_SIZE - 4)
26 #define SPEKTRUM_VTX_CONTROL_2 (SPEK_FRAME_SIZE - 3)
27 #define SPEKTRUM_VTX_CONTROL_3 (SPEK_FRAME_SIZE - 2)
28 #define SPEKTRUM_VTX_CONTROL_4 (SPEK_FRAME_SIZE - 1)
29 #define SPEKTRUM_VTX_CONTROL_SIZE 4
31 #define SPEKTRUM_VTX_BAND_MASK 0x00e00000
32 #define SPEKTRUM_VTX_CHANNEL_MASK 0x000f0000
33 #define SPEKTRUM_VTX_PIT_MODE_MASK 0x00000010
34 #define SPEKTRUM_VTX_REGION_MASK 0x00000008
35 #define SPEKTRUM_VTX_POWER_MASK 0x00000007
37 #define SPEKTRUM_VTX_BAND_SHIFT 21
38 #define SPEKTRUM_VTX_CHANNEL_SHIFT 16
39 #define SPEKTRUM_VTX_PIT_MODE_SHIFT 4
40 #define SPEKTRUM_VTX_REGION_SHIFT 3
41 #define SPEKTRUM_VTX_POWER_SHIFT 0
43 #define SPEKTRUM_VTX_BAND_COUNT 5
44 #define SPEKTRUM_VTX_CHAN_COUNT 8
47 Channels vs Band according to spektrum spec.
49 5740 5760 5780 5800 5820 5840 5860 5880 FatShark
50 5658 5695 5732 5769 5806 5843 5880 5917 Race
51 5705 5685 5665 5645 5885 5905 5925 5945 Band E
52 5733 5752 5771 5790 5809 5828 5847 5866 Band B
53 5865 5845 5825 5805 5785 5765 5745 5725 Band A
56 // Band translation to BF internal vtx_common needed
57 // Spektrum order, zero based.
58 #define SPEKTRUM_VTX_BAND_FS 0
59 #define SPEKTRUM_VTX_BAND_RACE 1
60 #define SPEKTRUM_VTX_BAND_E 2
61 #define SPEKTRUM_VTX_BAND_B 3
62 #define SPEKTRUM_VTX_BAND_A 4
63 #define SPEKTRUM_VTX_BAND_COUNT 5
65 // Spektrum Max power index
66 #define SPEKTRUM_VTX_POWER_OFF 0
67 #define SPEKTRUM_VTX_POWER_14 1
68 #define SPEKTRUM_VTX_POWER_25 2
69 #define SPEKTRUM_VTX_POWER_99 3
70 #define SPEKTRUM_VTX_POWER_299 4
71 #define SPEKTRUM_VTX_POWER_600 5
72 #define SPEKTRUM_VTX_POWER_MAXIT 6
73 #define SPEKTRUM_VTX_POWER_MAN 7
74 #define SPEKTRUM_VTX_POWER_COUNT 8
76 #define SPEKTRUM_VTX_REGION_USA 0
77 #define SPEKTRUM_VTX_REGION_EU 1
78 #define SPEKTRUM_VTX_REGION_NONE 0xff
80 #define SPEKTRUM_VTX_PITMODE_OFF 0 // Power on, race
81 #define SPEKTRUM_VTX_PITMODE_ON 1 // Power off, pit
94 extern const uint16_t SpektrumVtxfrequencyTable
[SPEKTRUM_VTX_BAND_COUNT
][SPEKTRUM_VTX_CHAN_COUNT
];
95 extern const uint8_t spek2commonBand
[SPEKTRUM_VTX_BAND_COUNT
];
96 extern const uint8_t vtxTrampPi
[SPEKTRUM_VTX_POWER_COUNT
];
97 extern const uint8_t vtxRTC6705Pi
[SPEKTRUM_VTX_POWER_COUNT
];
98 extern const uint8_t vtxSaPi
[SPEKTRUM_VTX_POWER_COUNT
];
99 extern uint8_t SpektrumRegion
;
101 void spektrumHandleVtxControl(uint32_t vtxControl
);
102 void spektrumVtxControl(void);