diff --git a/cmake/Bitmaps.cmake b/cmake/Bitmaps.cmake index b5cfcc651..5fe6d5263 100644 --- a/cmake/Bitmaps.cmake +++ b/cmake/Bitmaps.cmake @@ -15,11 +15,8 @@ endmacro(add_bitmaps_target) macro(add_truetype_font_target radio name font size bold) set(target ${RADIO_SRC_DIRECTORY}/fonts/${radio}/font_${name}) - add_custom_command( - OUTPUT ${target}.png - OUTPUT ${target}.specs + add_custom_target(ttf_${radio}_${name} COMMAND ${RADIO_DIRECTORY}/util/font2png.py ${font} ${size} ${bold} ${target} WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY} ) - add_custom_target(ttf_${radio}_${name} DEPENDS ${target}.png ${target}.specs) endmacro(add_truetype_font_target) \ No newline at end of file diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 7e30b4b5d..41cd7ce1a 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -60,9 +60,10 @@ if(PCB STREQUAL HORUS) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} horus_bitmaps) set(LUA_EXPORT lua_export_horus) set(FLAVOUR horus) + set(VIRTUAL_INPUTS YES) add_definitions(-DPCBHORUS -DCOLORLCD -DSTM32F429_439xx -DPPM_PIN_HW_SERIAL) add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK) - add_definitions(-DVIRTUALINPUTS -DLUAINPUTS -DXCURVES -DVARIO) + add_definitions(-DLUAINPUTS -DXCURVES -DVARIO) include_directories(${RADIO_SRC_DIRECTORY}/fonts/horus) set(GUI_SRC ${GUI_SRC} @@ -131,6 +132,7 @@ elseif(PCB STREQUAL TARANIS) set(GUI_DIR taranis) set(TARGET_DIR taranis) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} taranis_bitmaps) + set(VIRTUAL_INPUTS YES) add_definitions(-DPCBTARANIS) add_definitions(-DAUDIO -DVOICE -DRTCLOCK) add_definitions(-DDBLKEYS -DVIRTUALINPUTS -DLUAINPUTS -DXCURVES -DVARIO) @@ -417,7 +419,6 @@ if(ARCH STREQUAL ARM) telemetry/frsky.cpp telemetry/frsky_d_arm.cpp telemetry/frsky_sport.cpp - telemetry/telemetry.cpp crc16.cpp vario.cpp ) @@ -460,7 +461,7 @@ if(ARCH STREQUAL ARM) crossfire.cpp ) else() - option(EXT "Telemetry extension" OFF) + option(EXT "Telemetry protocol" OFF) # TODO rename this EXT option to TELEMETRY option(AUDIO "Audio support" OFF) option(VOICE "Voice support" OFF) option(GRAPHICS "Additional graphics" ON) @@ -507,7 +508,7 @@ else() set(SRC ${SRC} telemetry/jeti.cpp) elseif(EXT STREQUAL MAVLINK) add_definitions(-DMAVLINK) - include_directories(${THIRDPARTY} targets/common_avr) + include_directories(${THIRDPARTY_DIR} gui/${GUI_DIR} targets/common_avr) set(SRC ${SRC} telemetry/mavlink.cpp targets/common_avr/serial_driver.cpp) set(GUI_SRC ${GUI_SRC} view_mavlink.cpp) math(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${MAVLINK_VARIANT}) @@ -526,6 +527,7 @@ else() option(VARIO "Vario support" ON) add_definitions(-DFRSKY) set(SRC ${SRC} telemetry/frsky.cpp telemetry/frsky_d.cpp) + set(FIRMWARE_SRC ${FIRMWARE_SRC} targets/common_avr/telemetry_driver.cpp) set(GUI_SRC ${GUI_SRC} view_telemetry.cpp) if(FRSKY_HUB) add_definitions(-DFRSKY_HUB) @@ -603,6 +605,18 @@ set(GUI_SRC view_statistics.cpp ) +if(VIRTUAL_INPUTS) + add_definitions(-DVIRTUALINPUTS) +else() + option(TEMPLATES "Model Templates Menu" ON) +endif() + +if(TEMPLATES) + add_definitions(-DTEMPLATES) + set(SRC ${SRC} templates.cpp) + set(GUI_SRC ${GUI_SRC} menu_model_templates.cpp) +endif() + if(LUA) add_definitions(-DLUA) include_directories(${LUA_DIR}) @@ -663,7 +677,6 @@ if(JITTER_FILTER) add_definitions(-DJITTER_FILTER) endif() - if(SDCARD STREQUAL YES) add_definitions(-DSDCARD) include_directories(${FATFS_DIR} ${FATFS_DIR}/option) @@ -754,7 +767,7 @@ set(SRC ${SRC} ${FIRMWARE_SRC}) set(WARNING_FLAGS "-Wall -Wno-strict-aliasing -Wformat -Wreturn-type -Wunused -Wuninitialized -Wunknown-pragmas -Wno-switch -Wtype-limits") # trick to remove the -rdynamic and --out-implib issues -set(CMAKE_EXECUTABLE_SUFFIX "") +set(CMAKE_EXECUTABLE_SUFFIX ".elf") set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") set(CMAKE_COMMON_FLAGS "") @@ -778,27 +791,21 @@ if(ARCH STREQUAL ARM) if(PCB STREQUAL TARANIS) add_subdirectory(targets/${TARGET_DIR}/bootloader) - add_custom_command( - OUTPUT bootloader.bin bootloader.lbm - COMMAND arm-none-eabi-objcopy -O binary targets/${TARGET_DIR}/bootloader/bootloader.elf bootloader.bin - COMMAND python ${RADIO_DIRECTORY}/util/bin2lbm.py bootloader.bin bootloader.lbm - DEPENDS bootloader.elf - ) - add_custom_target(bootloader DEPENDS bootloader.lbm) + include_directories(${CMAKE_CURRENT_BINARY_DIR}/targets/${TARGET_DIR}/bootloader) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} bootloader) else() # We fetch Mike's bootloader as it is not included inside OpenTX file(DOWNLOAD https://github.com/MikeBland/OpenRcBootloader/releases/download/V1.9/${BOOTLOADER} ${CMAKE_CURRENT_BINARY_DIR}/bootloader.lbm) endif() - add_executable(firmware.elf ${SRC} ${FIRMWARE_HEADERS}) - add_dependencies(firmware.elf ${FIRMWARE_DEPENDENCIES}) + add_executable(firmware ${SRC} ${FIRMWARE_HEADERS}) + add_dependencies(firmware ${FIRMWARE_DEPENDENCIES}) - add_custom_target(firmware.bin + add_custom_command( + TARGET firmware POST_BUILD COMMAND arm-none-eabi-objcopy -O binary firmware.elf firmware.bin - DEPENDS firmware.elf WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - ) + ) else() cmake_force_c_compiler(avr-gcc GNU) cmake_force_cxx_compiler(avr-gcc GNU) @@ -815,31 +822,22 @@ else() file(WRITE ${ALLSRC} "${ALLSRC_CONTENT}") - add_executable(firmware.elf ${ALLSRC}) - add_dependencies(firmware.elf ${FIRMWARE_DEPENDENCIES}) + add_executable(firmware ${ALLSRC}) + add_dependencies(firmware ${FIRMWARE_DEPENDENCIES}) - add_custom_target(firmware.hex + add_custom_command( + TARGET firmware POST_BUILD COMMAND avr-objcopy -O ihex -R .eeprom firmware.elf firmware.hex - DEPENDS firmware.elf + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) - add_custom_target(firmware.bin - COMMAND avr-objcopy -O binary firmware.elf firmware.bin - DEPENDS firmware.elf - ) - - add_custom_target(firmware - COMMAND avr-size --mcu=${MCU} --format=avr firmware.elf - DEPENDS firmware.hex + add_custom_target(firmware.lss + COMMAND avr-objdump -h -S firmware.elf > firmware.lss + DEPENDS firmware + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) endif() -add_custom_target(firmware.lss - COMMAND avr-objdump -h -S firmware.elf > firmware.lss - DEPENDS firmware.elf - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - ) - if(CPU_FAMILY STREQUAL STM32) add_custom_target(flash COMMAND dfu-util --alt 0 --dfuse-address 0x08000000 -D firmware.bin diff --git a/radio/src/fonts/horus/CMakeLists.txt b/radio/src/fonts/horus/CMakeLists.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/radio/src/gui/9x/menus.h b/radio/src/gui/9x/menus.h index 172a66552..af3fd8272 100644 --- a/radio/src/gui/9x/menus.h +++ b/radio/src/gui/9x/menus.h @@ -560,4 +560,6 @@ void drawFunction(FnFuncP fn, uint8_t offset=0); uint8_t switchToMix(uint8_t source); +void deleteExpoMix(uint8_t expo, uint8_t idx); + #endif // _MENUS_H_ diff --git a/radio/src/gui/9x/view_mavlink.cpp b/radio/src/gui/9x/view_mavlink.cpp index 69b7ce9b9..21261b747 100644 --- a/radio/src/gui/9x/view_mavlink.cpp +++ b/radio/src/gui/9x/view_mavlink.cpp @@ -23,10 +23,9 @@ * Contains the menu specific code for Mavlink support. */ -#include "9x/view_mavlink.h" - -// Globals declaration +#include "view_mavlink.h" +#define VIEW_MAVLINK_2ND_COLUMN (LCD_W-6*FW-3-MENUS_SCROLLBAR_WIDTH) /*! \brief Top Mavlink Menu definition * \details Registers button events and handles that info. Buttons select menus, @@ -494,13 +493,13 @@ void menuTelemetryMavlinkSetup(uint8_t event) { switch(k) { case ITEM_MAVLINK_RC_RSSI_SCALE: lcd_putsLeft(y, STR_MAVLINK_RC_RSSI_SCALE_LABEL); - lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, (25 + g_model.mavlink.rc_rssi_scale * 5), attr|LEFT); + lcdDrawNumber(VIEW_MAVLINK_2ND_COLUMN, y, (25 + g_model.mavlink.rc_rssi_scale * 5), attr|LEFT); lcdDrawChar(lcdLastPos, y, '%'); if (attr) CHECK_INCDEC_MODELVAR(event, g_model.mavlink.rc_rssi_scale, 0, 15); break; case ITEM_MAVLINK_PC_RSSI_EN: g_model.mavlink.pc_rssi_en = editCheckBox(g_model.mavlink.pc_rssi_en, - RADIO_SETUP_2ND_COLUMN, + VIEW_MAVLINK_2ND_COLUMN, y, STR_MAVLINK_PC_RSSI_EN_LABEL, attr, diff --git a/radio/src/targets/taranis/bootloader/CMakeLists.txt b/radio/src/targets/taranis/bootloader/CMakeLists.txt index 1253c3afa..f5152390c 100644 --- a/radio/src/targets/taranis/bootloader/CMakeLists.txt +++ b/radio/src/targets/taranis/bootloader/CMakeLists.txt @@ -67,5 +67,12 @@ add_definitions(-DBOOT -DUSB_MASS_STORAGE) set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/targets/taranis/stm32_ramboot.ld -Wl,-Map=bootloader.map,--cref,--no-warn-mismatch,--gc-sections") -add_executable(bootloader.elf ${BOOTLOADER_SRC}) -add_dependencies(bootloader.elf taranis_fonts firmware_translations) +add_executable(bootloader ${BOOTLOADER_SRC}) +add_dependencies(bootloader taranis_fonts firmware_translations) + +add_custom_command( + TARGET bootloader POST_BUILD + COMMAND arm-none-eabi-objcopy -O binary bootloader.elf bootloader.bin + COMMAND python ${RADIO_DIRECTORY}/util/bin2lbm.py bootloader.bin bootloader.lbm +) + diff --git a/radio/src/tests/mixer.cpp b/radio/src/tests/mixer.cpp index e252ad6f7..8d21d4f32 100644 --- a/radio/src/tests/mixer.cpp +++ b/radio/src/tests/mixer.cpp @@ -35,6 +35,7 @@ */ #include "gtests.h" +#include "../templates.h" #define CHECK_NO_MOVEMENT(channel, value, duration) \ for (int i=1; i<=(duration); i++) { \ diff --git a/radio/util/commit-tests.sh b/radio/util/commit-tests.sh index 7bcc91176..41a189d55 100755 --- a/radio/util/commit-tests.sh +++ b/radio/util/commit-tests.sh @@ -7,72 +7,75 @@ set -x mkdir build cd build -# OpenTX on Taranis and Companion +# Companion rm -rf * -cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=TARANIS -DHELI=YES -DLUA=YES -DWARNINGS_AS_ERRORS=YES .. +cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=TARANIS .. make -j2 -make -j2 firmware.bin + +# OpenTX on 9X stock with FrSky telemetry +rm -rf * +cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=9X -DHELI=YES -DEXT=FRSKY .. +make -j2 firmware make -j2 simu -make -j2 gtests && ./gtests +make -j2 gtests ; ./gtests + +# OpenTX on 9X stock with Mavlink telemetry +rm -rf * +cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=9X -DHELI=YES -DEXT=MAVLINK .. +make -j2 firmware + +# OpenTX on Mega2560 +# rm -rf * +#cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=MEGA2560 -DHELI=YES .. +#make -j2 firmware +#make -j2 simu +#make -j2 gtests ; ./gtests + +# OpenTX on Mega2560 with Mavlink telemetry +# rm -rf * +#cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=MEGA2560 -DEXT=MAVLINK -DHELI=YES .. +#make -j2 firmware +#make -j2 simu +#make -j2 gtests ; ./gtests + +# OpenTX on gruvin9x board +# rm -rf * +#cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=GRUVIN9X -DHELI=YES .. +#make -j2 firmware +#make -j2 simu +#make -j2 gtests ; ./gtests + +# OpenTX on Sky9x +rm -rf * +cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=SKY9X -DHELI=YES .. +make -j2 firmware +make -j2 simu +make -j2 gtests ; ./gtests + +# OpenTX on Taranis +rm -rf * +cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=TARANIS -DHELI=YES -DLUA=YES -DWARNINGS_AS_ERRORS=YES .. +make -j2 firmware +make -j2 simu +make -j2 gtests ; ./gtests # OpenTX on Taranis X9E rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=TARANIS -DPCBREV=REV9E -DHELI=YES -DLUA=YES -DWARNINGS_AS_ERRORS=YES .. -make -j2 firmware.bin +make -j2 firmware make -j2 simu -make -j2 gtests && ./gtests +make -j2 gtests ; ./gtests # OpenTX on Taranis Plus rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=TARANIS -DPCBREV=REVPLUS -DHELI=YES -DLUA=YES -DWARNINGS_AS_ERRORS=YES .. -make -j2 firmware.bin +make -j2 firmware make -j2 simu -make -j2 gtests && ./gtests +make -j2 gtests ; ./gtests # OpenTX on Horus rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug -DPCB=HORUS -DHELI=NO -DUSB=SERIAL -DCLI=YES -DDEBUG=YES .. -make -j2 firmware.bin +make -j2 firmware make -j2 simu -#make -j2 gtests && ./gtests - - -# Old, not yet converted - - -cd ../radio/src/ - - -# OpenTX on 9X stock -make clean -make PCB=9X EXT=FRSKY HELI=YES -make simu PCB=9X EXT=FRSKY HELI=YES -make gtests EXT=FRSKY HELI=YES -./gtests - - -# OpenTX on 9X stock with MAVLINK -make clean -make PCB=9X EXT=MAVLINK HELI=YES - - -# OpenTX on Sky9x -make clean -make PCB=SKY9X HELI=YES WARNINGS_AS_ERRORS=YES -make simu PCB=SKY9X HELI=YES -make gtests PCB=SKY9X HELI=YES -./gtests - -# OpenTX on Gruvin9x -make clean -make PCB=GRUVIN9X EXT=FRSKY SDCARD=YES -make simu PCB=GRUVIN9X EXT=FRSKY SDCARD=YES - -# OpenTX on MEGA2560 -make clean -make PCB=MEGA2560 - -# OpenTX on MEGA2560 with MAVLINK -make clean -make PCB=MEGA2560 EXT=MAVLINK - +#make -j2 gtests ; ./gtests