Fix compile errors if USE_DSHOT not defined
[betaflight.git] / src / main / target / common_post.h
blob63905480335181a138ac3980ee235c6f520890d1
1 /*
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)
8 * any later version.
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
23 #pragma once
25 #include "build/version.h"
27 #if defined(USE_VTX_RTC6705_SOFTSPI)
28 #define USE_VTX_RTC6705
29 #endif
31 #ifndef USE_DSHOT
32 #undef USE_ESC_SENSOR
33 #endif
35 #ifndef USE_ESC_SENSOR
36 #undef USE_ESC_SENSOR_TELEMETRY
37 #endif
39 // XXX Followup implicit dependencies among DASHBOARD, display_xxx and USE_I2C.
40 // XXX This should eventually be cleaned up.
41 #ifndef USE_I2C
42 #undef USE_I2C_OLED_DISPLAY
43 #undef USE_DASHBOARD
44 #else
45 #ifdef USE_DASHBOARD
46 #define USE_I2C_OLED_DISPLAY
47 #endif
48 #endif
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
52 #if !defined(USE_I2C)
53 #if defined(USE_BARO_BMP280)
54 #undef USE_BARO_BMP280
55 #endif
56 #if defined(USE_BARO_MS5611)
57 #undef USE_BARO_MS5611
58 #endif
59 #endif
61 #if !defined(USE_BARO) && !defined(USE_GPS)
62 #undef USE_VARIO
63 #endif
65 #if defined(USE_BARO) && !defined(BARO_EOC_PIN)
66 #define BARO_EOC_PIN NONE
67 #endif
70 #if !defined(USE_SERIAL_RX)
71 #undef USE_SERIALRX_CRSF
72 #undef USE_SERIALRX_IBUS
73 #undef USE_SERIALRX_JETIEXBUS
74 #undef USE_SERIALRX_SBUS
75 #undef USE_SERIALRX_SPEKTRUM
76 #undef USE_SERIALRX_SUMD
77 #undef USE_SERIALRX_SUMH
78 #undef USE_SERIALRX_XBUS
79 #undef USE_SERIALRX_FPORT
80 #endif
82 #if !defined(USE_TELEMETRY)
83 #undef USE_CRSF_CMS_TELEMETRY
84 #undef USE_TELEMETRY_CRSF
85 #undef USE_TELEMETRY_FRSKY_HUB
86 #undef USE_TELEMETRY_HOTT
87 #undef USE_TELEMETRY_IBUS
88 #undef USE_TELEMETRY_IBUS_EXTENDED
89 #undef USE_TELEMETRY_JETIEXBUS
90 #undef USE_TELEMETRY_LTM
91 #undef USE_TELEMETRY_MAVLINK
92 #undef USE_TELEMETRY_SMARTPORT
93 #undef USE_TELEMETRY_SRXL
94 #undef USE_SERIALRX_FPORT
95 #endif
97 #if !defined(USE_SERIALRX_CRSF)
98 #undef USE_TELEMETRY_CRSF
99 #undef USE_CRSF_LINK_STATISTICS
100 #undef USE_RX_RSSI_DBM
101 #endif
103 #if !defined(USE_TELEMETRY_CRSF) || !defined(USE_CMS)
104 #undef USE_CRSF_CMS_TELEMETRY
105 #endif
107 #if !defined(USE_SERIALRX_JETIEXBUS)
108 #undef USE_TELEMETRY_JETIEXBUS
109 #endif
111 #if !defined(USE_TELEMETRY_IBUS)
112 #undef USE_TELEMETRY_IBUS_EXTENDED
113 #endif
115 // If USE_SERIALRX_SPEKTRUM was dropped by a target, drop all related options
116 #ifndef USE_SERIALRX_SPEKTRUM
117 #undef USE_SPEKTRUM_BIND
118 #undef USE_SPEKTRUM_BIND_PLUG
119 #undef USE_SPEKTRUM_REAL_RSSI
120 #undef USE_SPEKTRUM_FAKE_RSSI
121 #undef USE_SPEKTRUM_RSSI_PERCENT_CONVERSION
122 #undef USE_SPEKTRUM_VTX_CONTROL
123 #undef USE_SPEKTRUM_VTX_TELEMETRY
124 #undef USE_SPEKTRUM_CMS_TELEMETRY
125 #undef USE_TELEMETRY_SRXL
126 #endif
128 #if defined(USE_SERIALRX_SBUS) || defined(USE_SERIALRX_FPORT)
129 #define USE_SBUS_CHANNELS
130 #endif
132 #if !defined(USE_TELEMETRY_SMARTPORT) && !defined(USE_TELEMETRY_CRSF)
133 #undef USE_MSP_OVER_TELEMETRY
134 #endif
136 /* If either VTX_CONTROL or VTX_COMMON is undefined then remove common code and device drivers */
137 #if !defined(USE_VTX_COMMON) || !defined(USE_VTX_CONTROL)
138 #undef USE_VTX_COMMON
139 #undef USE_VTX_CONTROL
140 #undef USE_VTX_TRAMP
141 #undef USE_VTX_SMARTAUDIO
142 #undef USE_VTX_TABLE
143 #endif
145 #if defined(USE_RX_FRSKY_SPI_D) || defined(USE_RX_FRSKY_SPI_X)
146 #define USE_RX_CC2500
147 #define USE_RX_FRSKY_SPI
148 #endif
150 #if defined(USE_RX_SFHSS_SPI)
151 #define USE_RX_CC2500
152 #endif
154 #if !defined(USE_RX_CC2500)
155 #undef USE_RX_CC2500_SPI_PA_LNA
156 #endif
158 #if !defined(USE_RX_CC2500_SPI_PA_LNA)
159 #undef USE_RX_CC2500_SPI_DIVERSITY
160 #endif
162 // Burst dshot to default off if not configured explicitly by target
163 #ifndef ENABLE_DSHOT_DMAR
164 #define ENABLE_DSHOT_DMAR false
165 #endif
167 // Some target doesn't define USE_ADC which USE_ADC_INTERNAL depends on
168 #ifndef USE_ADC
169 #undef USE_ADC_INTERNAL
170 #endif
172 #if (!defined(USE_SDCARD) && !defined(USE_FLASHFS)) || !defined(USE_BLACKBOX)
173 #undef USE_USB_MSC
174 #endif
176 #if !defined(USE_VCP)
177 #undef USE_USB_CDC_HID
178 #undef USE_USB_MSC
179 #endif
181 #if defined(USE_USB_CDC_HID) || defined(USE_USB_MSC)
182 #define USE_USB_ADVANCED_PROFILES
183 #endif
186 #if defined(USE_FLASH_W25M512)
187 #define USE_FLASH_W25M
188 #define USE_FLASH_M25P16
189 #define USE_FLASH_W25M
190 #endif
192 #if defined(USE_FLASH_W25M02G)
193 #define USE_FLASH_W25N01G
194 #define USE_FLASH_W25M
195 #endif
197 #if defined(USE_FLASH_M25P16) || defined(USE_FLASH_W25N01G)
198 #define USE_FLASH_CHIP
199 #endif
201 #if defined(USE_MAX7456)
202 #define USE_OSD
203 #endif
205 #if !defined(USE_OSD)
206 #undef USE_RX_LINK_QUALITY_INFO
207 #undef USE_OSD_PROFILES
208 #undef USE_OSD_STICK_OVERLAY
209 #endif
211 #if defined(USE_GPS_RESCUE)
212 #define USE_GPS
213 #endif
215 // Generate USE_SPI_GYRO or USE_I2C_GYRO
216 #if defined(USE_GYRO_L3G4200D) || defined(USE_GYRO_MPU3050) || defined(USE_GYRO_MPU6000) || defined(USE_GYRO_MPU6050) || defined(USE_GYRO_MPU6500)
217 #define USE_I2C_GYRO
218 #endif
220 #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)
221 #define USE_SPI_GYRO
222 #endif
224 // CX10 is a special case of SPI RX which requires XN297
225 #if defined(USE_RX_CX10)
226 #define USE_RX_XN297
227 #endif
229 // Setup crystal frequency on F4 for backward compatibility
230 // Should be set to zero for generic targets to ensure USB is working
231 // when unconfigured for targets with non-standard crystal.
232 // Can be set at runtime with with CLI parameter 'system_hse_value'.
233 #if !defined(STM32F4) || defined(USE_UNIFIED_TARGET)
234 #define SYSTEM_HSE_VALUE 0
235 #else
236 #ifdef TARGET_XTAL_MHZ
237 #define SYSTEM_HSE_VALUE TARGET_XTAL_MHZ
238 #else
239 #define SYSTEM_HSE_VALUE (HSE_VALUE/1000000U)
240 #endif
241 #endif // !STM32F4 || USE_UNIFIED_TARGET
243 // Number of pins that needs pre-init
244 #ifdef USE_SPI
245 #ifndef SPI_PREINIT_COUNT
246 #define SPI_PREINIT_COUNT 16 // 2 x 8 (GYROx2, BARO, MAG, MAX, FLASHx2, RX)
247 #endif
248 #endif
250 #ifndef USE_BLACKBOX
251 #undef USE_USB_MSC
252 #endif
254 #if (!defined(USE_FLASHFS) || !defined(USE_RTC_TIME) || !defined(USE_USB_MSC) || !defined(USE_PERSISTENT_OBJECTS))
255 #undef USE_PERSISTENT_MSC_RTC
256 #endif
258 #if !defined(USE_SERIAL_4WAY_BLHELI_BOOTLOADER) && !defined(USE_SERIAL_4WAY_SK_BOOTLOADER)
259 #undef USE_SERIAL_4WAY_BLHELI_INTERFACE
260 #elif !defined(USE_SERIAL_4WAY_BLHELI_INTERFACE) && (defined(USE_SERIAL_4WAY_BLHELI_BOOTLOADER) || defined(USE_SERIAL_4WAY_SK_BOOTLOADER))
261 #define USE_SERIAL_4WAY_BLHELI_INTERFACE
262 #endif
264 #if !defined(USE_PWM_OUTPUT)
265 #undef USE_SERIAL_4WAY_BLHELI_INTERFACE // implementation requires USE_PWM_OUTPUT to find motor outputs.
266 #endif
268 #if !defined(USE_LED_STRIP)
269 #undef USE_LED_STRIP_STATUS_MODE
270 #endif
272 #if defined(USE_LED_STRIP) && !defined(USE_LED_STRIP_STATUS_MODE)
273 #define USE_WS2811_SINGLE_COLOUR
274 #endif
276 #if defined(SIMULATOR_BUILD) || defined(UNIT_TEST)
277 // This feature uses 'arm_math.h', which does not exist for x86.
278 #undef USE_GYRO_DATA_ANALYSE
279 #endif
281 #ifndef USE_CMS
282 #undef USE_CMS_FAILSAFE_MENU
283 #endif
285 #ifndef USE_DSHOT
286 #undef USE_DSHOT_TELEMETRY
287 #undef USE_DSHOT_BITBANG
288 #endif
290 #ifndef USE_DSHOT_TELEMETRY
291 #undef USE_RPM_FILTER
292 #undef USE_DSHOT_TELEMETRY_STATS
293 #endif
295 #if !defined(USE_BOARD_INFO)
296 #undef USE_SIGNATURE
297 #endif
299 #if !defined(USE_ACC)
300 #undef USE_GPS_RESCUE
301 #undef USE_ACRO_TRAINER
302 #endif
304 #if (!defined(USE_GPS_RESCUE) || !defined(USE_CMS_FAILSAFE_MENU))
305 #undef USE_CMS_GPS_RESCUE_MENU
306 #endif
308 #ifndef USE_BEEPER
309 #undef BEEPER_PIN
310 #undef BEEPER_PWM_HZ
311 #endif
313 #if defined(USE_DSHOT) || defined(USE_LED_STRIP) || defined(USE_TRANSPONDER)
314 #define USE_TIMER_DMA
315 #else
316 #undef USE_DMA_SPEC
317 #endif
319 #if !defined(USE_DMA_SPEC)
320 #undef USE_TIMER_MGMT
321 #endif
323 #if defined(USE_TIMER_MGMT)
324 #undef USED_TIMERS
325 #else
326 #undef USE_UNIFIED_TARGET
327 #endif
329 #if !defined(USE_RANGEFINDER)
330 #undef USE_RANGEFINDER_HCSR04
331 #undef USE_RANGEFINDER_SRF10
332 #undef USE_RANGEFINDER_HCSR04_I2C
333 #undef USE_RANGEFINDER_VL53L0X
334 #undef USE_RANGEFINDER_UIB
335 #undef USE_RANGEFINDER_TF
336 #endif
338 #ifndef USE_GPS_RESCUE
339 #undef USE_CMS_GPS_RESCUE_MENU
340 #endif
342 // TODO: Remove this once HAL support is fixed for ESCSERIAL
343 #ifdef STM32F7
344 #undef USE_ESCSERIAL
345 #endif
347 #if defined(CONFIG_IN_RAM) || defined(CONFIG_IN_FILE) || defined(CONFIG_IN_EXTERNAL_FLASH) || defined(CONFIG_IN_SDCARD)
348 #ifndef EEPROM_SIZE
349 #define EEPROM_SIZE 4096
350 #endif
351 extern uint8_t eepromData[EEPROM_SIZE];
352 #define __config_start (*eepromData)
353 #define __config_end (*ARRAYEND(eepromData))
354 #else
355 #ifndef CONFIG_IN_FLASH
356 #define CONFIG_IN_FLASH
357 #endif
358 extern uint8_t __config_start; // configured via linker script when building binaries.
359 extern uint8_t __config_end;
360 #endif
362 #if defined(USE_EXST) && !defined(RAMBASED)
363 #define USE_FLASH_BOOT_LOADER
364 #endif
366 #if !defined(USE_RPM_FILTER)
367 #undef USE_DYN_IDLE
368 #endif
370 #ifndef USE_ITERM_RELAX
371 #undef USE_ABSOLUTE_CONTROL
372 #endif
374 #if defined(USE_CUSTOM_DEFAULTS)
375 #define USE_CUSTOM_DEFAULTS_ADDRESS
376 #endif