Various fixes around Companion trainer mode (#7116)
[opentx.git] / radio / src / targets / taranis / CMakeLists.txt
blob6715cc46a8e65d36f7d3190740f51fb0623478a4
1 option(SHUTDOWN_CONFIRMATION "Shutdown confirmation" OFF)
2 option(LCD_DUAL_BUFFER "Dual LCD Buffer" OFF)
3 option(PXX1 "PXX1 protocol support" ON)
4 option(PXX2 "PXX2 protocol support" OFF)
5 option(INTERNAL_MODULE_PPM "Support for PPM internal module" OFF)
6 option(AUTOUPDATE "Auto update internal chips from SD" OFF)
8 if(PCB STREQUAL X9E)
9   option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
10   option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" OFF)
11   set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
12   set(STICKS "STANDARD" CACHE STRING "Sticks type (STANDARD/HORUS)")
13   set(CPU_TYPE STM32F4)
14   set(CPU_TYPE_FULL STM32F407xE)  # for size report
15   set(LINKER_SCRIPT targets/taranis/stm32f4_flash.ld)
16   add_definitions(-DSTM32F40_41xxx)
17   set(HAPTIC YES)
18   set(LUA_EXPORT lua_export_x9e)
19   set(FLAVOUR x9e)
20   add_definitions(-DPCBX9E -DPCBX9)
21   add_definitions(-DEEPROM_VARIANT=0x8000)
22   add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
23   set(FIRMWARE_TARGET_SRC
24     ${FIRMWARE_TARGET_SRC}
25     top_lcd_driver.cpp
26     startup_stm32f40_41xxx.s
27     )
28   set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp)
29   if(STICKS STREQUAL HORUS)
30     add_definitions(-DHORUS_STICKS)
31   endif()
32   set(GUI_DIR 212x64)
33   set(NAVIGATION_TYPE x9d)
34   set(BITMAPS_TARGET taranis_bitmaps)
35   set(FONTS_TARGET taranis_fonts)
36   set(LCD_DRIVER lcd_driver_spi.cpp)
37   set(GVAR_SCREEN model_gvars.cpp)
38   set(STATUS_LEDS NO)
39 elseif(PCB STREQUAL X9D+)
40   set(HAPTIC YES)
41   set(LUA_EXPORT lua_export_x9d)
42   add_definitions(-DPCBX9DP -DPCBX9)
43   add_definitions(-DEEPROM_VARIANT=0)
44   set(GUI_DIR 212x64)
45   set(NAVIGATION_TYPE x9d)
46   set(BITMAPS_TARGET taranis_bitmaps)
47   set(FONTS_TARGET taranis_fonts)
48   set(LCD_DRIVER lcd_driver_spi.cpp)
49   set(GVAR_SCREEN model_gvars.cpp)
50   set(PCBREV 2014 CACHE STRING "PCB Revision")
51   add_definitions(-DPCBREV=${PCBREV})
52   if (${PCBREV} STREQUAL 2019)
53     option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)
54     option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON)
55     set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
56     set(CPU_TYPE STM32F4)
57     set(CPU_TYPE_FULL STM32F407xE)  # for size report
58     set(FIRMWARE_TARGET_SRC
59       ${FIRMWARE_TARGET_SRC}
60       startup_stm32f40_41xxx.s
61       )
62     set(LINKER_SCRIPT targets/taranis/stm32f4_flash.ld)
63     add_definitions(-DSTM32F40_41xxx)
64     add_definitions(-DSOFTWARE_VOLUME -DPWR_BUTTON_${PWR_BUTTON} -DHARDWARE_POWER_MANAGEMENT_UNIT)
65     set(STATUS_LEDS YES)
66     set(PXX2 ON)
67     set(PXX_FREQUENCY "HIGH")
68     set(FLAVOUR x9d+2019)
69   else()
70     option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
71     option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" OFF)
72     set(CPU_TYPE STM32F2)
73     set(CPU_TYPE_FULL STM32F205xE)  # for size report
74     set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
75     set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp)
76     set(STATUS_LEDS NO)
77     set(FLAVOUR x9d+)
78   endif()
79 elseif(PCB STREQUAL X9D)
80   option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
81   option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" OFF)
82   set(CPU_TYPE STM32F2)
83   set(CPU_TYPE_FULL STM32F205xE)  # for size report
84   set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
85   option(HAPTIC "Haptic support" OFF)
86   set(LUA_EXPORT lua_export_x9d)
87   set(FLAVOUR x9d)
88   add_definitions(-DPCBX9D -DPCBX9)
89   add_definitions(-DEEPROM_VARIANT=0)
90   set(GUI_DIR 212x64)
91   set(NAVIGATION_TYPE x9d)
92   set(BITMAPS_TARGET taranis_bitmaps)
93   set(FONTS_TARGET taranis_fonts)
94   set(LCD_DRIVER lcd_driver_aspi.cpp)
95   set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp)
96   set(GVAR_SCREEN model_gvars.cpp)
97   set(STATUS_LEDS NO)
98 elseif(PCB STREQUAL X7)
99   set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
100   set(CPU_TYPE STM32F2)
101   set(CPU_TYPE_FULL STM32F205xE)  # for size report
102   set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
103   set(HAPTIC YES)
104   if(PCBREV STREQUAL T12)
105     set(LUA_EXPORT lua_export_t12)
106     set(FLAVOUR t12)
107     set(NAVIGATION_TYPE 9x)
108     add_definitions(-DRADIO_T12)
109     add_definitions(-DEEPROM_VARIANT=0x4001)
110     option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" OFF)
111   else()
112     option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
113     option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" OFF)
114     set(LUA_EXPORT lua_export_x7)
115     set(FLAVOUR x7)
116     set(NAVIGATION_TYPE x7)
117     add_definitions(-DRADIO_X7)
118     add_definitions(-DEEPROM_VARIANT=0x4000)
119   endif()
120   add_definitions(-DPCBX7 -DSOFTWARE_VOLUME)
121   add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
122   set(GUI_DIR 128x64)
123   set(BITMAPS_TARGET 9x_bitmaps)
124   set(FONTS_TARGET 9x_fonts_1bit)
125   set(LCD_DRIVER lcd_driver_spi.cpp)
126   set(GVAR_SCREEN model_gvars.cpp)
127   set(STATUS_LEDS YES)
128 elseif(PCB STREQUAL X9LITE)
129   option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)
130   option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON)
131   set(PXX_FREQUENCY "HIGH")
132   set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
133   set(CPU_TYPE STM32F2)
134   set(CPU_TYPE_FULL STM32F205xE)  # for size report
135   set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
136   set(HAPTIC YES)
137   set(LUA_EXPORT lua_export_x9lite)
138   set(FLAVOUR x9lite)
139   add_definitions(-DBOARD_NAME="x9lite")
140   add_definitions(-DPCBX9LITE -DPCBX9 -DSOFTWARE_VOLUME -DHARDWARE_POWER_MANAGEMENT_UNIT)
141   add_definitions(-DEEPROM_VARIANT=0x0800)
142   add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
143   set(PXX2 ON)
144   set(GUI_DIR 128x64)
145   set(NAVIGATION_TYPE x7)
146   set(BITMAPS_TARGET 9x_bitmaps)
147   set(FONTS_TARGET 9x_fonts_1bit)
148   set(LCD_DRIVER lcd_driver_spi.cpp)
149   set(GVAR_SCREEN model_gvars.cpp)
150   set(STATUS_LEDS YES)
151 elseif(PCB STREQUAL X9LITES)
152   option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)
153   option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON)
154   set(PXX_FREQUENCY "HIGH")
155   set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
156   set(CPU_TYPE STM32F2)
157   set(CPU_TYPE_FULL STM32F205xE)  # for size report
158   set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
159   set(HAPTIC YES)
160   set(LUA_EXPORT lua_export_x9lites)
161   set(FLAVOUR x9lites)
162   add_definitions(-DBOARD_NAME="x9lites")
163   add_definitions(-DPCBX9LITES -DPCBX9LITE -DPCBX9 -DSOFTWARE_VOLUME -DHARDWARE_POWER_MANAGEMENT_UNIT)
164   add_definitions(-DEEPROM_VARIANT=0x0800)
165   add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
166   set(PXX2 ON)
167   set(GUI_DIR 128x64)
168   set(NAVIGATION_TYPE x7)
169   set(BITMAPS_TARGET 9x_bitmaps)
170   set(FONTS_TARGET 9x_fonts_1bit)
171   set(LCD_DRIVER lcd_driver_spi.cpp)
172   set(GVAR_SCREEN model_gvars.cpp)
173   set(STATUS_LEDS YES)
174 elseif(PCB STREQUAL XLITE)
175   option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
176   option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" OFF)
177   set(PXX_FREQUENCY "HIGH" CACHE STRING "PXX frequency (LOW / HIGH)") # always use HIGH except on some prototype boards
178   set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
179   set(CPU_TYPE STM32F2)
180   set(CPU_TYPE_FULL STM32F205xE)  # for size report
181   set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
182   set(HAPTIC YES)
183   set(LUA_EXPORT lua_export_xlite)
184   set(FLAVOUR xlite)
185   add_definitions(-DPCBXLITE -DSOFTWARE_VOLUME -DSTICKS_PWM)
186   add_definitions(-DEEPROM_VARIANT=0x2000)
187   add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
188   set(PXX2 ON)
189   set(GUI_DIR 128x64)
190   set(NAVIGATION_TYPE xlite)
191   set(BITMAPS_TARGET 9x_bitmaps)
192   set(FONTS_TARGET 9x_fonts_1bit)
193   set(LCD_DRIVER lcd_driver_spi.cpp)
194   set(GVAR_SCREEN model_gvars.cpp)
195   set(STATUS_LEDS YES)
196 elseif(PCB STREQUAL XLITES)
197   option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)
198   option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON)
199   set(PXX_FREQUENCY "HIGH")
200   set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
201   set(CPU_TYPE STM32F2)
202   set(CPU_TYPE_FULL STM32F205xE)  # for size report
203   set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
204   set(HAPTIC YES)
205   set(LUA_EXPORT lua_export_xlites)
206   set(FLAVOUR xlites)
207   add_definitions(-DPCBXLITES -DPCBXLITE -DSOFTWARE_VOLUME -DSTICKS_PWM -DHARDWARE_POWER_MANAGEMENT_UNIT)
208   add_definitions(-DEEPROM_VARIANT=0x1000)
209   add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
210   set(GUI_DIR 128x64)
211   set(NAVIGATION_TYPE xlite)
212   set(BITMAPS_TARGET 9x_bitmaps)
213   set(FONTS_TARGET 9x_fonts_1bit)
214   set(LCD_DRIVER lcd_driver_spi.cpp)
215   set(GVAR_SCREEN model_gvars.cpp)
216   set(STATUS_LEDS YES)
217   set(PXX2 ON)
218 endif()
220 if(PCB STREQUAL XLITES)
221   add_definitions(-DGYRO)
222   set(TARGET_SRC
223     ${TARGET_SRC}
224     ../common/arm/stm32/lsm6ds_driver.cpp
225     )
226   set(SRC
227     ${SRC}
228     gyro.cpp
229     )
230 endif()
232 if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES OR PCB STREQUAL X9LITE OR PCB STREQUAL X9LITES OR (PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019))
233   add_definitions(-DINTERNAL_MODULE_SERIAL)
234   if(PXX_FREQUENCY STREQUAL HIGH)
235     add_definitions(-DPXX_FREQUENCY_HIGH)
236   endif()
237   set(TARGET_SRC
238     ${TARGET_SRC}
239     ../common/arm/stm32/intmodule_serial_driver.cpp
240     )
241 elseif(NOT (PCB STREQUAL X7 AND PCBREV STREQUAL T12))
242   set(TARGET_SRC
243     ${TARGET_SRC}
244     intmodule_pulses_driver.cpp
245     )
246 endif()
248 if(PCB STREQUAL X9E OR (PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019) OR (PCB STREQUAL X7 AND NOT (PCBREV STREQUAL T12)) OR PCB STREQUAL X9LITE OR PCB STREQUAL X9LITES)
249   set(TARGET_SRC
250     ${TARGET_SRC}
251     ../common/arm/stm32/rotary_encoder_driver.cpp
252     )
253 endif()
255 if(PCB STREQUAL X9E OR (PCB STREQUAL X7 AND NOT PCBREV STREQUAL T12) OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES OR (PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019) OR PCB STREQUAL X9LITES)
256   add_definitions(-DBLUETOOTH)
257   set(TARGET_SRC
258     ${TARGET_SRC}
259     ../common/arm/stm32/bluetooth_driver.cpp
260     )
261   set(SRC
262     ${SRC}
263     bluetooth.cpp
264     )
265 endif()
267 if(AUTOUPDATE)
268   add_definitions(-DAUTOUPDATE)
269 endif()
271 set(HSE_VALUE 12000000)
272 set(SDCARD YES)
273 set(EEPROM EEPROM_RLC)
274 set(TARGET_DIR taranis)
275 set(PPM_LIMITS_SYMETRICAL YES)
277 if(SPLASH STREQUAL OFF)
278   message(FATAL_ERROR "Option SPLASH=OFF not supported on Taranis")
279 endif()
281 add_definitions(-DPCBTARANIS)
282 add_definitions(-DAUDIO -DVOICE -DRTCLOCK)
284 set(SRC
285   ${SRC}
286   io/frsky_firmware_update.cpp
287   io/multi_firmware_update.cpp
288   )
290 set(GUI_SRC
291   ${GUI_SRC}
292   model_input_edit.cpp
293   model_mix_edit.cpp
294   model_display.cpp
295   radio_diagkeys.cpp
296   radio_diaganas.cpp
297   view_channels.cpp
298   view_telemetry.cpp
299   view_about.cpp
300   bmp.cpp
301   )
303 if(STATUS_LEDS)
304   set(LED_DRIVER led_driver.cpp)
305 endif()
307 set(SRC
308   ${SRC}
309   sbus.cpp
310   )
312 set(TARGET_SRC
313   ${TARGET_SRC}
314   ${LED_DRIVER}
315   backlight_driver.cpp
316   extmodule_driver.cpp
317   trainer_driver.cpp
318   ../common/arm/stm32/timers_driver.cpp
319   ../common/arm/stm32/audio_dac_driver.cpp
320   ../common/arm/stm32/adc_driver.cpp
321   ../common/arm/stm32/heartbeat_driver.cpp
322   )
324 if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
325   set(TARGET_SRC
326     ${TARGET_SRC}
327     ../common/arm/stm32/sticks_pwm_driver.cpp
328     )
329 endif()
331 set(FIRMWARE_TARGET_SRC
332   ${FIRMWARE_TARGET_SRC}
333   ${LCD_DRIVER}
334   board.cpp
335   i2c_driver.cpp
336   pwr_driver.cpp
337   ../common/arm/loadboot.cpp
338   )
340 if(LCD_DUAL_BUFFER)
341   add_definitions(-DLCD_DUAL_BUFFER)
342 endif()
344 if(INTERNAL_MODULE_PXX1)
345   add_definitions(-DHARDWARE_INTERNAL_MODULE)
346   add_definitions(-DINTERNAL_MODULE_PXX1)
347 endif()
349 if(INTERNAL_MODULE_PXX2)
350   set(PXX2 ON)
351   add_definitions(-DHARDWARE_INTERNAL_MODULE)
352   add_definitions(-DINTERNAL_MODULE_PXX2)
353 endif()
355 if(INTERNAL_MODULE_MULTI)
356   add_definitions(-DHARDWARE_INTERNAL_MODULE)
357   add_definitions(-DINTERNAL_MODULE_MULTI)
358   set(TARGET_SRC
359     ${TARGET_SRC}
360     ../common/arm/stm32/intmodule_serial_driver.cpp
361     )
362 endif()
364 if(INTERNAL_MODULE_PPM)
365   add_definitions(-DHARDWARE_INTERNAL_MODULE)
366   add_definitions(-DINTERNAL_MODULE_PPM)
367 endif()
369 set(RADIO_DEPENDENCIES ${RADIO_DEPENDENCIES} ${BITMAPS_TARGET})