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 // Touch up configuration
25 #include "build/version.h"
27 // Targets with built-in vtx do not need external vtx
28 #if defined(USE_VTX_RTC6705) && !defined(VTX_RTC6705_OPTIONAL)
29 #undef USE_VTX_SMARTAUDIO
37 #ifndef USE_ESC_SENSOR
38 #undef USE_ESC_SENSOR_TELEMETRY
41 // XXX Followup implicit dependencies among DASHBOARD, display_xxx and USE_I2C.
42 // XXX This should eventually be cleaned up.
44 #undef USE_I2C_OLED_DISPLAY
48 #define USE_I2C_OLED_DISPLAY
52 // XXX Remove USE_BARO_BMP280 and USE_BARO_MS5611 if USE_I2C is not defined.
53 // XXX This should go away buy editing relevant target.h files
55 #if defined(USE_BARO_BMP280)
56 #undef USE_BARO_BMP280
58 #if defined(USE_BARO_MS5611)
59 #undef USE_BARO_MS5611
63 #if !defined(USE_BARO) && !defined(USE_GPS)
67 #if !defined(USE_SERIAL_RX)
68 #undef USE_SERIALRX_CRSF
69 #undef USE_SERIALRX_IBUS
70 #undef USE_SERIALRX_JETIEXBUS
71 #undef USE_SERIALRX_SBUS
72 #undef USE_SERIALRX_SPEKTRUM
73 #undef USE_SERIALRX_SUMD
74 #undef USE_SERIALRX_SUMH
75 #undef USE_SERIALRX_XBUS
76 #undef USE_SERIALRX_FPORT
79 #if !defined(USE_TELEMETRY)
80 #undef USE_CRSF_CMS_TELEMETRY
81 #undef USE_TELEMETRY_CRSF
82 #undef USE_TELEMETRY_FRSKY_HUB
83 #undef USE_TELEMETRY_HOTT
84 #undef USE_TELEMETRY_IBUS
85 #undef USE_TELEMETRY_IBUS_EXTENDED
86 #undef USE_TELEMETRY_JETIEXBUS
87 #undef USE_TELEMETRY_LTM
88 #undef USE_TELEMETRY_MAVLINK
89 #undef USE_TELEMETRY_SMARTPORT
90 #undef USE_TELEMETRY_SRXL
91 #undef USE_SERIALRX_FPORT
94 #if !defined(USE_SERIALRX_CRSF)
95 #undef USE_TELEMETRY_CRSF
98 #if !defined(USE_TELEMETRY_CRSF) || !defined(USE_CMS)
99 #undef USE_CRSF_CMS_TELEMETRY
102 #if !defined(USE_SERIALRX_JETIEXBUS)
103 #undef USE_TELEMETRY_JETIEXBUS
106 #if !defined(USE_TELEMETRY_IBUS)
107 #undef USE_TELEMETRY_IBUS_EXTENDED
110 // If USE_SERIALRX_SPEKTRUM was dropped by a target, drop all related options
111 #ifndef USE_SERIALRX_SPEKTRUM
112 #undef USE_SPEKTRUM_BIND
113 #undef USE_SPEKTRUM_BIND_PLUG
114 #undef USE_SPEKTRUM_REAL_RSSI
115 #undef USE_SPEKTRUM_FAKE_RSSI
116 #undef USE_SPEKTRUM_RSSI_PERCENT_CONVERSION
117 #undef USE_SPEKTRUM_VTX_CONTROL
118 #undef USE_SPEKTRUM_VTX_TELEMETRY
119 #undef USE_SPEKTRUM_CMS_TELEMETRY
120 #undef USE_TELEMETRY_SRXL
123 #if defined(USE_SERIALRX_SBUS) || defined(USE_SERIALRX_FPORT)
124 #define USE_SBUS_CHANNELS
127 #if !defined(USE_TELEMETRY_SMARTPORT) && !defined(USE_TELEMETRY_CRSF)
128 #undef USE_MSP_OVER_TELEMETRY
131 /* If either VTX_CONTROL or VTX_COMMON is undefined then remove common code and device drivers */
132 #if !defined(USE_VTX_COMMON) || !defined(USE_VTX_CONTROL)
133 #undef USE_VTX_COMMON
134 #undef USE_VTX_CONTROL
136 #undef USE_VTX_SMARTAUDIO
139 #if defined(USE_RX_FRSKY_SPI_D) || defined(USE_RX_FRSKY_SPI_X)
140 #define USE_RX_CC2500
141 #define USE_RX_FRSKY_SPI
144 #if defined(USE_RX_SFHSS_SPI)
145 #define USE_RX_CC2500
148 // Burst dshot to default off if not configured explicitly by target
149 #ifndef ENABLE_DSHOT_DMAR
150 #define ENABLE_DSHOT_DMAR false
153 // Some target doesn't define USE_ADC which USE_ADC_INTERNAL depends on
155 #undef USE_ADC_INTERNAL
158 #if (!defined(USE_SDCARD) && !defined(USE_FLASHFS)) || !defined(USE_BLACKBOX)
162 #if !defined(USE_VCP)
163 #undef USE_USB_CDC_HID
167 #if defined(USE_USB_CDC_HID) || defined(USE_USB_MSC)
168 #define USE_USB_ADVANCED_PROFILES
172 #if defined(USE_FLASH_W25M512)
173 #define USE_FLASH_W25M
174 #define USE_FLASH_M25P16
177 #if defined(USE_FLASH_M25P16)
178 #define USE_FLASH_CHIP
181 #if defined(USE_MAX7456)
185 #if !defined(USE_OSD)
186 #undef USE_RX_LINK_QUALITY_INFO
187 #undef USE_OSD_PROFILES
188 #undef USE_OSD_STICK_OVERLAY
191 #if defined(USE_GPS_RESCUE)
195 // Generate USE_SPI_GYRO or USE_I2C_GYRO
196 #if defined(USE_GYRO_L3G4200D) || defined(USE_GYRO_MPU3050) || defined(USE_GYRO_MPU6000) || defined(USE_GYRO_MPU6050) || defined(USE_GYRO_MPU6500)
200 #if defined(USE_GYRO_SPI_ICM20689) || defined(USE_GYRO_SPI_MPU6000) || defined(USE_GYRO_SPI_MPU6500) || defined(USE_GYRO_SPI_MPU9250) || defined(USE_GYRO_L3GD20)
204 // CX10 is a special case of SPI RX which requires XN297
205 #if defined(USE_RX_CX10)
209 #ifdef USE_UNIFIED_TARGET
210 #define USE_CONFIGURATION_STATE
212 // Setup crystal frequency for backward compatibility
213 // Should be set to zero for generic targets and set with CLI variable set system_hse_value.
214 #define SYSTEM_HSE_VALUE 0
216 #ifdef TARGET_XTAL_MHZ
217 #define SYSTEM_HSE_VALUE TARGET_XTAL_MHZ
219 #define SYSTEM_HSE_VALUE (HSE_VALUE/1000000U)
221 #endif // USE_UNIFIED_TARGET
223 // Number of pins that needs pre-init
225 #ifndef SPI_PREINIT_COUNT
226 #define SPI_PREINIT_COUNT 16 // 2 x 8 (GYROx2, BARO, MAG, MAX, FLASHx2, RX)
230 #if (!defined(USE_FLASHFS) || !defined(USE_RTC_TIME) || !defined(USE_USB_MSC))
231 #undef USE_PERSISTENT_MSC_RTC
234 #if !defined(USE_SERIAL_4WAY_BLHELI_BOOTLOADER) && !defined(USE_SERIAL_4WAY_SK_BOOTLOADER)
235 #undef USE_SERIAL_4WAY_BLHELI_INTERFACE
236 #elif !defined(USE_SERIAL_4WAY_BLHELI_INTERFACE) && (defined(USE_SERIAL_4WAY_BLHELI_BOOTLOADER) || defined(USE_SERIAL_4WAY_SK_BOOTLOADER))
237 #define USE_SERIAL_4WAY_BLHELI_INTERFACE
240 #if !defined(USE_LED_STRIP)
241 #undef USE_LED_STRIP_STATUS_MODE
244 #if defined(USE_LED_STRIP) && !defined(USE_LED_STRIP_STATUS_MODE)
245 #define USE_WS2811_SINGLE_COLOUR
248 #if defined(SIMULATOR_BUILD) || defined(UNIT_TEST)
249 // This feature uses 'arm_math.h', which does not exist for x86.
250 #undef USE_GYRO_DATA_ANALYSE
254 #undef USE_DSHOT_TELEMETRY
255 #undef USE_RPM_FILTER
259 #undef USE_CMS_FAILSAFE_MENU
262 #ifndef USE_DSHOT_TELEMETRY
263 #undef USE_RPM_FILTER
266 #if !defined(USE_BOARD_INFO)
270 #if !defined(USE_ACC)
271 #undef USE_GPS_RESCUE
272 #undef USE_ACRO_TRAINER