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 #if defined(USE_VTX_RTC6705_SOFTSPI)
28 #define USE_VTX_RTC6705
35 #ifndef USE_ESC_SENSOR
36 #undef USE_ESC_SENSOR_TELEMETRY
39 // XXX Followup implicit dependencies among DASHBOARD, display_xxx and USE_I2C.
40 // XXX This should eventually be cleaned up.
42 #undef USE_I2C_OLED_DISPLAY
46 #define USE_I2C_OLED_DISPLAY
50 // XXX Remove USE_BARO_BMP280 and USE_BARO_MS5611 if USE_I2C is not defined.
51 // XXX This should go away buy editing relevant target.h files
53 #if defined(USE_BARO_BMP280)
54 #undef USE_BARO_BMP280
56 #if defined(USE_BARO_MS5611)
57 #undef USE_BARO_MS5611
62 #undef USE_MAG_DATA_READY_SIGNAL
63 #undef USE_MAG_HMC5883
64 #undef USE_MAG_SPI_HMC5883
65 #undef USE_MAG_QMC5883
66 #undef USE_MAG_LIS3MDL
68 #undef USE_MAG_SPI_AK8963
71 #if !defined(USE_BARO) && !defined(USE_GPS)
75 #if defined(USE_BARO) && !defined(BARO_EOC_PIN)
76 #define BARO_EOC_PIN NONE
80 #if !defined(USE_SERIAL_RX)
81 #undef USE_SERIALRX_CRSF
82 #undef USE_SERIALRX_IBUS
83 #undef USE_SERIALRX_JETIEXBUS
84 #undef USE_SERIALRX_SBUS
85 #undef USE_SERIALRX_SPEKTRUM
86 #undef USE_SERIALRX_SUMD
87 #undef USE_SERIALRX_SUMH
88 #undef USE_SERIALRX_XBUS
89 #undef USE_SERIALRX_FPORT
92 #if !defined(USE_TELEMETRY)
93 #undef USE_CRSF_CMS_TELEMETRY
94 #undef USE_TELEMETRY_CRSF
95 #undef USE_TELEMETRY_FRSKY_HUB
96 #undef USE_TELEMETRY_HOTT
97 #undef USE_TELEMETRY_IBUS
98 #undef USE_TELEMETRY_IBUS_EXTENDED
99 #undef USE_TELEMETRY_JETIEXBUS
100 #undef USE_TELEMETRY_LTM
101 #undef USE_TELEMETRY_MAVLINK
102 #undef USE_TELEMETRY_SMARTPORT
103 #undef USE_TELEMETRY_SRXL
104 #undef USE_SERIALRX_FPORT
107 #if !defined(USE_SERIALRX_CRSF)
108 #undef USE_TELEMETRY_CRSF
109 #undef USE_CRSF_LINK_STATISTICS
110 #undef USE_RX_RSSI_DBM
113 #if !defined(USE_TELEMETRY_CRSF) || !defined(USE_CMS)
114 #undef USE_CRSF_CMS_TELEMETRY
117 #if !defined(USE_SERIALRX_JETIEXBUS)
118 #undef USE_TELEMETRY_JETIEXBUS
121 #if !defined(USE_TELEMETRY_IBUS)
122 #undef USE_TELEMETRY_IBUS_EXTENDED
125 // If USE_SERIALRX_SPEKTRUM was dropped by a target, drop all related options
126 #ifndef USE_SERIALRX_SPEKTRUM
127 #undef USE_SPEKTRUM_BIND
128 #undef USE_SPEKTRUM_BIND_PLUG
129 #undef USE_SPEKTRUM_REAL_RSSI
130 #undef USE_SPEKTRUM_FAKE_RSSI
131 #undef USE_SPEKTRUM_RSSI_PERCENT_CONVERSION
132 #undef USE_SPEKTRUM_VTX_CONTROL
133 #undef USE_SPEKTRUM_VTX_TELEMETRY
134 #undef USE_SPEKTRUM_CMS_TELEMETRY
135 #undef USE_TELEMETRY_SRXL
138 #if defined(USE_SERIALRX_SBUS) || defined(USE_SERIALRX_FPORT)
139 #define USE_SBUS_CHANNELS
142 #if !defined(USE_TELEMETRY_SMARTPORT) && !defined(USE_TELEMETRY_CRSF)
143 #undef USE_MSP_OVER_TELEMETRY
146 /* If either VTX_CONTROL or VTX_COMMON is undefined then remove common code and device drivers */
147 #if !defined(USE_VTX_COMMON) || !defined(USE_VTX_CONTROL)
148 #undef USE_VTX_COMMON
149 #undef USE_VTX_CONTROL
151 #undef USE_VTX_SMARTAUDIO
155 #if defined(USE_RX_FRSKY_SPI_D) || defined(USE_RX_FRSKY_SPI_X) || defined(USE_RX_REDPINE_SPI)
156 #define USE_RX_CC2500
157 #define USE_RX_FRSKY_SPI
160 #if defined(USE_RX_SFHSS_SPI)
161 #define USE_RX_CC2500
164 #if !defined(USE_RX_CC2500)
165 #undef USE_RX_CC2500_SPI_PA_LNA
168 #if !defined(USE_RX_CC2500_SPI_PA_LNA)
169 #undef USE_RX_CC2500_SPI_DIVERSITY
172 // Burst dshot to default off if not configured explicitly by target
173 #ifndef ENABLE_DSHOT_DMAR
174 #define ENABLE_DSHOT_DMAR DSHOT_DMAR_OFF
177 // Some target doesn't define USE_ADC which USE_ADC_INTERNAL depends on
179 #undef USE_ADC_INTERNAL
182 #if defined(USE_FLASH_W25M512)
183 #define USE_FLASH_W25M
184 #define USE_FLASH_M25P16
185 #define USE_FLASH_W25M
188 #if defined(USE_FLASH_W25M02G)
189 #define USE_FLASH_W25N01G
190 #define USE_FLASH_W25M
193 #if defined(USE_FLASH_M25P16) || defined(USE_FLASH_W25N01G)
194 #define USE_FLASH_CHIP
197 #ifndef USE_FLASH_CHIP
201 #if (!defined(USE_SDCARD) && !defined(USE_FLASHFS)) || !defined(USE_BLACKBOX)
205 #if !defined(USE_SDCARD)
206 #undef USE_SDCARD_SDIO
207 #undef USE_SDCARD_SPI
210 #if !defined(USE_VCP)
211 #undef USE_USB_CDC_HID
215 #if defined(USE_USB_CDC_HID) || defined(USE_USB_MSC)
216 #define USE_USB_ADVANCED_PROFILES
219 #if defined(USE_MAX7456)
223 #if !defined(USE_OSD)
224 #undef USE_RX_LINK_QUALITY_INFO
225 #undef USE_OSD_PROFILES
226 #undef USE_OSD_STICK_OVERLAY
229 #if defined(USE_GPS_RESCUE)
233 // Generate USE_SPI_GYRO or USE_I2C_GYRO
234 #if defined(USE_GYRO_L3G4200D) || defined(USE_GYRO_MPU3050) || defined(USE_GYRO_MPU6000) || defined(USE_GYRO_MPU6050) || defined(USE_GYRO_MPU6500)
238 #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)
242 // CX10 is a special case of SPI RX which requires XN297
243 #if defined(USE_RX_CX10)
247 // Setup crystal frequency on F4 for backward compatibility
248 // Should be set to zero for generic targets to ensure USB is working
249 // when unconfigured for targets with non-standard crystal.
250 // Can be set at runtime with with CLI parameter 'system_hse_value'.
251 #if !defined(STM32F4) || defined(USE_UNIFIED_TARGET)
252 #define SYSTEM_HSE_VALUE 0
254 #ifdef TARGET_XTAL_MHZ
255 #define SYSTEM_HSE_VALUE TARGET_XTAL_MHZ
257 #define SYSTEM_HSE_VALUE (HSE_VALUE/1000000U)
259 #endif // !STM32F4 || USE_UNIFIED_TARGET
261 // Number of pins that needs pre-init
263 #ifndef SPI_PREINIT_COUNT
264 #define SPI_PREINIT_COUNT 16 // 2 x 8 (GYROx2, BARO, MAG, MAX, FLASHx2, RX)
272 #if (!defined(USE_FLASHFS) || !defined(USE_RTC_TIME) || !defined(USE_USB_MSC) || !defined(USE_PERSISTENT_OBJECTS))
273 #undef USE_PERSISTENT_MSC_RTC
276 #if !defined(USE_SERIAL_4WAY_BLHELI_BOOTLOADER) && !defined(USE_SERIAL_4WAY_SK_BOOTLOADER)
277 #undef USE_SERIAL_4WAY_BLHELI_INTERFACE
278 #elif !defined(USE_SERIAL_4WAY_BLHELI_INTERFACE) && (defined(USE_SERIAL_4WAY_BLHELI_BOOTLOADER) || defined(USE_SERIAL_4WAY_SK_BOOTLOADER))
279 #define USE_SERIAL_4WAY_BLHELI_INTERFACE
282 #if !defined(USE_PWM_OUTPUT)
283 #undef USE_SERIAL_4WAY_BLHELI_INTERFACE // implementation requires USE_PWM_OUTPUT to find motor outputs.
286 #if !defined(USE_LED_STRIP)
287 #undef USE_LED_STRIP_STATUS_MODE
290 #if defined(USE_LED_STRIP) && !defined(USE_LED_STRIP_STATUS_MODE)
291 #define USE_WS2811_SINGLE_COLOUR
294 #if defined(SIMULATOR_BUILD) || defined(UNIT_TEST)
295 // This feature uses 'arm_math.h', which does not exist for x86.
296 #undef USE_GYRO_DATA_ANALYSE
300 #undef USE_CMS_FAILSAFE_MENU
304 #undef USE_DSHOT_TELEMETRY
305 #undef USE_DSHOT_BITBANG
308 #ifndef USE_DSHOT_TELEMETRY
309 #undef USE_RPM_FILTER
310 #undef USE_DSHOT_TELEMETRY_STATS
313 #if !defined(USE_BOARD_INFO)
317 #if !defined(USE_ACC)
318 #undef USE_GPS_RESCUE
319 #undef USE_ACRO_TRAINER
322 #if (!defined(USE_GPS_RESCUE) || !defined(USE_CMS_FAILSAFE_MENU))
323 #undef USE_CMS_GPS_RESCUE_MENU
331 #if defined(USE_DSHOT) || defined(USE_LED_STRIP) || defined(USE_TRANSPONDER)
332 #define USE_TIMER_DMA
337 #if !defined(USE_DMA_SPEC)
338 #undef USE_TIMER_MGMT
341 #if defined(USE_TIMER_MGMT)
344 #undef USE_UNIFIED_TARGET
347 #if !defined(USE_RANGEFINDER)
348 #undef USE_RANGEFINDER_HCSR04
349 #undef USE_RANGEFINDER_SRF10
350 #undef USE_RANGEFINDER_HCSR04_I2C
351 #undef USE_RANGEFINDER_VL53L0X
352 #undef USE_RANGEFINDER_UIB
353 #undef USE_RANGEFINDER_TF
356 #ifndef USE_GPS_RESCUE
357 #undef USE_CMS_GPS_RESCUE_MENU
360 // TODO: Remove this once HAL support is fixed for ESCSERIAL
365 #if defined(CONFIG_IN_RAM) || defined(CONFIG_IN_FILE) || defined(CONFIG_IN_EXTERNAL_FLASH) || defined(CONFIG_IN_SDCARD)
367 #define EEPROM_SIZE 4096
369 extern uint8_t eepromData
[EEPROM_SIZE
];
370 #define __config_start (*eepromData)
371 #define __config_end (*ARRAYEND(eepromData))
373 #ifndef CONFIG_IN_FLASH
374 #define CONFIG_IN_FLASH
376 extern uint8_t __config_start
; // configured via linker script when building binaries.
377 extern uint8_t __config_end
;
380 #if defined(USE_EXST) && !defined(RAMBASED)
381 #define USE_FLASH_BOOT_LOADER
384 #if !defined(USE_RPM_FILTER)
388 #ifndef USE_ITERM_RELAX
389 #undef USE_ABSOLUTE_CONTROL
392 #if defined(USE_CUSTOM_DEFAULTS)
393 #define USE_CUSTOM_DEFAULTS_ADDRESS
396 #if !defined(USE_EXTI)
398 #undef USE_RANGEFINDER_HCSR04
401 #if defined(USE_RX_SPI) || defined (USE_SERIALRX_SRXL2)