1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-22 07:45:12 +03:00

Switch to CMake continued

This commit is contained in:
Bertrand Songis 2015-12-22 23:59:47 +01:00
parent 88841f63ca
commit 0c78c60dc9
13 changed files with 470 additions and 326 deletions

View file

@ -3,7 +3,6 @@ option(HELI "Heli menu" ON)
option(FLIGHT_MODES "Flight Modes" ON) option(FLIGHT_MODES "Flight Modes" ON)
option(CURVES "Curves" ON) option(CURVES "Curves" ON)
option(GVARS "Global variables") option(GVARS "Global variables")
option(LUA "Lua scripts")
option(GUI "GUI enabled" ON) option(GUI "GUI enabled" ON)
option(SPLASH "Splash enabled" ON) option(SPLASH "Splash enabled" ON)
option(PPM_UNIT "PPM display unit (US/PERCENT_PREC1/PERCENT_PREC0)" PERCENT_PREC0) option(PPM_UNIT "PPM display unit (US/PERCENT_PREC1/PERCENT_PREC0)" PERCENT_PREC0)
@ -26,30 +25,34 @@ set(FATFS_DIR ${THIRDPARTY_DIR}/FatFs)
set(RADIO_BIN_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) set(RADIO_BIN_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_subdirectory(translations) add_subdirectory(translations)
add_subdirectory(bitmaps/9x) add_subdirectory(bitmaps)
add_subdirectory(bitmaps/taranis)
add_subdirectory(bitmaps/horus)
add_subdirectory(lua) add_subdirectory(lua)
set(GVARS_VARIANT 1)
set(FRSKY_VARIANT 2)
set(3POS_VARIANT 4)
set(MAVLINK_VARIANT 8)
set(M2561_VARIANT 16384)
set(M128_VARIANT 32768)
set(FIRMWARE_DEPENDENCIES firmware_translations) set(FIRMWARE_DEPENDENCIES firmware_translations)
if(PCB STREQUAL HORUS) if(PCB STREQUAL HORUS)
include_directories(${RADIO_SRC_DIRECTORY}/fonts/horus)
set(CPU_TYPE STM32F4) set(CPU_TYPE STM32F4)
set(HSE_VALUE 12000000) set(HSE_VALUE 12000000)
set(SDCARD YES)
set(EEPROM SDCARD)
set(HAPTIC YES)
set(GUI_DIR horus) set(GUI_DIR horus)
set(TARGET_DIR horus) set(TARGET_DIR horus)
set(SDCARD YES)
set(LINKER_SCRIPT targets/horus/stm32f4_flash.ld) set(LINKER_SCRIPT targets/horus/stm32f4_flash.ld)
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} horus_bitmaps) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} horus_bitmaps)
set(LUA_EXPORT lua_export_horus) set(LUA_EXPORT lua_export_horus)
add_definitions(-DFLAVOUR="horus") set(FLAVOUR horus)
add_definitions(-DPCBHORUS -DCOLORLCD -DSTM32F429_439xx) add_definitions(-DPCBHORUS -DCOLORLCD -DSTM32F429_439xx)
add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK) add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK)
add_definitions(-DVIRTUALINPUTS -DLUAINPUTS -DXCURVES -DVARIO) add_definitions(-DVIRTUALINPUTS -DLUAINPUTS -DXCURVES -DVARIO)
set(EEPROM SDCARD) include_directories(${RADIO_SRC_DIRECTORY}/fonts/horus)
set(HAPTIC YES)
set(SRC ${SRC} bmp.cpp debug.cpp)
set(GUI_SRC set(GUI_SRC
${GUI_SRC} ${GUI_SRC}
curves.cpp curves.cpp
@ -59,7 +62,7 @@ if(PCB STREQUAL HORUS)
view_text.cpp view_text.cpp
view_telemetry.cpp # TODO remove it view_telemetry.cpp # TODO remove it
) )
set(SRC ${SRC} targets/taranis/rtc_driver.cpp) set(SRC ${SRC} bmp.cpp targets/taranis/rtc_driver.cpp)
set(TARGET_SRC ${TARGET_SRC} board_horus.cpp) set(TARGET_SRC ${TARGET_SRC} board_horus.cpp)
set(FIRMWARE_TARGET_SRC set(FIRMWARE_TARGET_SRC
${FIRMWARE_TARGET_SRC} ${FIRMWARE_TARGET_SRC}
@ -96,37 +99,37 @@ elseif(PCB STREQUAL TARANIS)
if(PCBREV STREQUAL REV9E) if(PCBREV STREQUAL REV9E)
set(CPU_TYPE STM32F4) set(CPU_TYPE STM32F4)
set(LINKER_SCRIPT targets/taranis/stm32f4_flash.ld) set(LINKER_SCRIPT targets/taranis/stm32f4_flash.ld)
add_definitions(-DSTM32F40_41xxx -DEEPROM_VARIANT=32768)
add_definitions(-DREVPLUS -DREV9E)
add_definitions(-DFLAVOUR="taranis-x9e")
set(HAPTIC YES) set(HAPTIC YES)
set(LUA_EXPORT lua_export_taranis_x9e) set(LUA_EXPORT lua_export_taranis_x9e)
set(FLAVOUR taranis-x9e)
add_definitions(-DSTM32F40_41xxx -DREVPLUS -DREV9E)
add_definitions(-DEEPROM_VARIANT=32768)
elseif(PCBREV STREQUAL REVPLUS) elseif(PCBREV STREQUAL REVPLUS)
set(CPU_TYPE STM32F2) set(CPU_TYPE STM32F2)
set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld) set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
add_definitions(-DEEPROM_VARIANT=0)
add_definitions(-DREVPLUS)
add_definitions(-DFLAVOUR="taranis-plus")
set(HAPTIC YES) set(HAPTIC YES)
set(LUA_EXPORT lua_export_taranis) set(LUA_EXPORT lua_export_taranis)
set(FLAVOUR taranis-plus)
add_definitions(-DREVPLUS)
add_definitions(-DEEPROM_VARIANT=0)
else() else()
set(CPU_TYPE STM32F2) set(CPU_TYPE STM32F2)
set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld) set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
add_definitions(-DEEPROM_VARIANT=0)
add_definitions(-DFLAVOUR="taranis")
set(HAPTIC NO) set(HAPTIC NO)
set(LUA_EXPORT lua_export_taranis) set(LUA_EXPORT lua_export_taranis)
set(FLAVOUR taranis)
add_definitions(-DEEPROM_VARIANT=0)
endif() endif()
set(HSE_VALUE 12000000) set(HSE_VALUE 12000000)
add_definitions(-DPCBTARANIS) set(SDCARD YES)
add_definitions(-DAUDIO -DVOICE -DRTCLOCK)
add_definitions(-DDBLKEYS -DVIRTUALINPUTS -DLUAINPUTS -DXCURVES -DVARIO)
set(EEPROM EEPROM_RLC) set(EEPROM EEPROM_RLC)
set(GUI_DIR taranis) set(GUI_DIR taranis)
set(TARGET_DIR taranis) set(TARGET_DIR taranis)
set(SDCARD YES)
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} taranis_bitmaps) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} taranis_bitmaps)
set(SRC ${SRC} bmp.cpp debug.cpp) add_definitions(-DPCBTARANIS)
add_definitions(-DAUDIO -DVOICE -DRTCLOCK)
add_definitions(-DDBLKEYS -DVIRTUALINPUTS -DLUAINPUTS -DXCURVES -DVARIO)
set(SRC ${SRC} bmp.cpp)
set(GUI_SRC ${GUI_SRC} menu_general_diagkeys.cpp menu_general_diaganas.cpp menu_general_hardware.cpp view_channels.cpp view_telemetry.cpp view_text.cpp view_about.cpp) set(GUI_SRC ${GUI_SRC} menu_general_diagkeys.cpp menu_general_diaganas.cpp menu_general_hardware.cpp view_channels.cpp view_telemetry.cpp view_text.cpp view_about.cpp)
set(TARGET_SRC ${TARGET_SRC} board_taranis.cpp rtc_driver.cpp) set(TARGET_SRC ${TARGET_SRC} board_taranis.cpp rtc_driver.cpp)
set(FIRMWARE_TARGET_SRC set(FIRMWARE_TARGET_SRC
@ -146,13 +149,26 @@ elseif(PCB STREQUAL TARANIS)
if(TARANIS_INTERNAL_PPM) if(TARANIS_INTERNAL_PPM)
add_definitions(-DTARANIS_INTERNAL_PPM) add_definitions(-DTARANIS_INTERNAL_PPM)
endif() endif()
elseif(PCB STREQUAL 9X OR PCB STREQUAL 9XR)
set(ARCH AVR)
set(MCU atmega64)
string(TOLOWER ${PCB} FLAVOUR)
set(EEPROM_VARIANT_NEEDED ON)
set(EEPROM_VARIANT 0)
set(EEPROM EEPROM_RLC)
set(GUI_DIR 9x)
set(TARGET_DIR 9x)
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} 9x_bitmaps)
add_definitions(-DPCBSTD -DPCB${PCB} -DCPUM64)
set(TARGET_SRC ${TARGET_SRC} board_stock.cpp)
set(GUI_SRC ${GUI_SRC} menu_general_diagkeys.cpp menu_general_diaganas.cpp)
else() else()
message(FATAL_ERROR "Unknown PCB '${PCB}'") message(FATAL_ERROR "Unknown PCB '${PCB}'")
endif() endif()
if(CPU_TYPE STREQUAL STM32F4) if(CPU_TYPE STREQUAL STM32F4)
set(MCU cortex-m4)
set(CPU_FAMILY STM32) set(CPU_FAMILY STM32)
set(MCU cortex-m4)
set(STM32LIB_DIR ${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries) set(STM32LIB_DIR ${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries)
include_directories(${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/inc) include_directories(${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/inc)
include_directories(${STM32LIB_DIR}/CMSIS/Device/ST/STM32F4xx/Include) include_directories(${STM32LIB_DIR}/CMSIS/Device/ST/STM32F4xx/Include)
@ -165,8 +181,8 @@ if(CPU_TYPE STREQUAL STM32F4)
endif() endif()
if(CPU_TYPE STREQUAL STM32F2) if(CPU_TYPE STREQUAL STM32F2)
set(MCU cortex-m3)
set(CPU_FAMILY STM32) set(CPU_FAMILY STM32)
set(MCU cortex-m3)
set(STM32LIB_DIR ${THIRDPARTY_DIR}/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries) set(STM32LIB_DIR ${THIRDPARTY_DIR}/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries)
include_directories(${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/inc) include_directories(${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/inc)
include_directories(${STM32LIB_DIR}/CMSIS/Device/ST/STM32F2xx/Include) include_directories(${STM32LIB_DIR}/CMSIS/Device/ST/STM32F2xx/Include)
@ -189,6 +205,7 @@ if(CPU_TYPE STREQUAL STM32F2)
endif() endif()
if(CPU_FAMILY STREQUAL STM32) if(CPU_FAMILY STREQUAL STM32)
option(LUA "Lua scripts")
option(USB "USB option (JOYSTICK/MASSSTORAGE/SERIAL)" JOYSTICK) option(USB "USB option (JOYSTICK/MASSSTORAGE/SERIAL)" JOYSTICK)
set(ARCH ARM) set(ARCH ARM)
set(STM32USB_DIR ${THIRDPARTY_DIR}/STM32_USB-Host-Device_Lib_V2.1.0/Libraries) set(STM32USB_DIR ${THIRDPARTY_DIR}/STM32_USB-Host-Device_Lib_V2.1.0/Libraries)
@ -208,15 +225,6 @@ if(CPU_FAMILY STREQUAL STM32)
STM32_USB_Device_Library/Core/src/usbd_req.c STM32_USB_Device_Library/Core/src/usbd_req.c
) )
set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} usb_bsp.c usbd_desc.c usbd_usr.cpp) set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} usb_bsp.c usbd_desc.c usbd_usr.cpp)
if(${EEPROM} STREQUAL SDCARD)
set(SRC ${SRC} storage/storage_common.cpp storage/sdcard_raw.cpp)
elseif(${EEPROM} STREQUAL EEPROM_RLC)
set(SRC ${SRC} storage/storage_common.cpp storage/eeprom_common.cpp storage/eeprom_rlc.cpp storage/eeprom_conversions.cpp)
add_definitions(-DEEPROM -DEEPROM_RLC)
else()
set(SRC ${SRC} storage/storage_common.cpp storage/eeprom_common.cpp storage/eeprom_raw.cpp storage/eeprom_conversions.cpp)
add_definitions(-DEEPROM)
endif()
if(USB STREQUAL SERIAL) if(USB STREQUAL SERIAL)
add_definitions(-DUSB_SERIAL) add_definitions(-DUSB_SERIAL)
set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} usbd_cdc.cpp) set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} usbd_cdc.cpp)
@ -235,6 +243,9 @@ if(CPU_FAMILY STREQUAL STM32)
add_definitions(-DUSB_JOYSTICK) add_definitions(-DUSB_JOYSTICK)
set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} usbd_hid_joystick.c) set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} usbd_hid_joystick.c)
endif() endif()
if(GVARS)
set(GUI_SRC ${GUI_SRC} menu_model_gvars.cpp)
endif()
set(FIRMWARE_SRC set(FIRMWARE_SRC
${FIRMWARE_SRC} ${FIRMWARE_SRC}
serial.cpp serial.cpp
@ -266,9 +277,9 @@ endif()
if(ARCH STREQUAL ARM) if(ARCH STREQUAL ARM)
option(TIMERS "Timers count" 2) option(TIMERS "Timers count" 2)
option(SPORT_FILE_LOG "S.PORT Logs on SD card" OFF) option(SPORT_FILE_LOG "S.PORT Logs on SD card" OFF)
option(TRACE_SD_CARD "SD Logs" OFF) option(TRACE_SD_CARD "Traces SD enabled" OFF)
option(TRACE_FATFS "FatFS Logs" OFF) option(TRACE_FATFS "Traces FatFS enabled" OFF)
option(TRACE_AUDIO "Audio Logs" OFF) option(TRACE_AUDIO "Traces audio enabled" OFF)
option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF) option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF)
option(SUPPORT_D16_EU_ONLY "XJT module only supports D16-EU and LR12-EU" OFF) # TODO rename to XJT_EU_ONLY option(SUPPORT_D16_EU_ONLY "XJT module only supports D16-EU and LR12-EU" OFF) # TODO rename to XJT_EU_ONLY
if(TIMERS EQUAL 3) if(TIMERS EQUAL 3)
@ -350,128 +361,117 @@ if(ARCH STREQUAL ARM)
dsm2_arm.cpp dsm2_arm.cpp
crossfire.cpp crossfire.cpp
) )
else()
option(EXT "Telemetry extension" OFF)
option(AUDIO "Audio support" OFF)
option(VOICE "Voice support" OFF)
option(GRAPHICS "Additional graphics" ON)
option(BOLD "Bold font" ON)
option(BATTGRAPH "Battery graph" OFF)
set(PULSES_SRC pulses_avr.cpp)
set(SRC ${SRC} main_avr.cpp)
set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} lcd_driver.cpp)
set(FIRMWARE_SRC ${FIRMWARE_SRC} targets/common_avr/adc_driver.cpp)
if(AUDIO)
add_definitions(-DAUDIO)
set(SRC ${SRC} audio_avr.cpp)
set(BUZZER OFF)
else()
set(BUZZER ON)
endif()
if(BUZZER)
add_definitions(-DBUZZER)
set(SRC ${SRC} buzzer.cpp)
endif()
if(VOICE)
add_definitions(-DVOICE)
set(TARGET_SRC ${TARGET_SRC} voice.cpp)
endif()
if(GRAPHICS)
add_definitions(-DGRAPHICS)
endif()
if(BOLD)
add_definitions(-DBOLD_FONT)
endif()
if(${EXT} STREQUAL OFF)
add_definitions(-DEXTSTD)
elseif(EXT STREQUAL ARDUPILOT)
add_definitions(-DARDUPILOT)
set(SRC ${SRC} telemetry/ardupilot.cpp)
elseif(EXT STREQUAL NMEA)
add_definitions(-DNMEA)
set(SRC ${SRC} telemetry/nmea.cpp)
elseif(EXT STREQUAL JETI)
add_definitions(-DJETI)
set(SRC ${SRC} telemetry/jeti.cpp)
elseif(EXT STREQUAL MAVLINK)
add_definitions(-DMAVLINK)
include_directories(${THIRDPARTY} 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})
elseif(EXT STREQUAL TELEMETREZ)
add_definitions(-DTELEMETREZ)
set(SRC ${SRC} telemetry/jeti.cpp)
elseif(EXT STREQUAL FRSKY_SPORT)
add_definitions(-DFRSKY_SPORT)
set(SRC ${SRC} crc16.cpp telemetry/frsky_sport.cpp)
endif()
if(EXT STREQUAL FRSKY OR EXT STREQUAL FRSKY_SPORT OR EXT STREQUAL TELEMETREZ)
option(FRSKY_HUB "FrSky Hub support" ON)
option(WS_HOW_HIGH "Winged Shadow sensors support" ON)
option(GAUGES "Telemetry gauges" OFF)
option(GPS "GPS support" ON)
option(VARIO "Vario support" ON)
add_definitions(-DFRSKY)
set(SRC ${SRC} telemetry/frsky.cpp telemetry/frsky_d.cpp)
set(GUI_SRC ${GUI_SRC} view_telemetry.cpp)
if(FRSKY_HUB)
add_definitions(-DFRSKY_HUB)
endif()
if(WS_HOW_HIGH)
add_definitions(-DWS_HOW_HIGH)
endif()
if(GAUGES)
add_definitions(-DGAUGES)
endif()
if(GPS)
add_definitions(-DGPS)
endif()
if(VARIO)
add_definitions(-DVARIO)
set(SRC ${SRC} vario.cpp)
endif()
MATH(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${FRSKY_VARIANT})
endif()
add_definitions(-DTIMERS=2)
if(EEPROM_VARIANT_NEEDED)
add_definitions(-DEEPROM_VARIANT=${EEPROM_VARIANT})
endif()
endif() endif()
set(SRC ${SRC} debug.cpp)
if(${EEPROM} STREQUAL SDCARD)
set(SRC ${SRC} storage/storage_common.cpp storage/sdcard_raw.cpp)
elseif(${EEPROM} STREQUAL EEPROM_RLC)
set(SRC ${SRC} storage/storage_common.cpp storage/eeprom_common.cpp storage/eeprom_rlc.cpp)
add_definitions(-DEEPROM -DEEPROM_RLC)
else()
set(SRC ${SRC} storage/storage_common.cpp storage/eeprom_common.cpp storage/eeprom_raw.cpp)
add_definitions(-DEEPROM)
endif()
if(NOT ${EEPROM} STREQUAL SDCARD AND ARCH STREQUAL ARM)
set(SRC ${SRC} storage/eeprom_conversions.cpp)
endif()
add_definitions(-DFLAVOUR="${FLAVOUR}")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/bitmaps/${GUI_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR}/bitmaps/${GUI_DIR})
if(NOT LUA STREQUAL OFF)
add_definitions(-DLUA)
include_directories(${LUA_DIR})
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} ${LUA_EXPORT})
if(LUA STREQUAL ON)
add_definitions(-DLUA_MODEL_SCRIPTS)
set(GUI_SRC ${GUI_SRC} menu_model_custom_scripts.cpp)
endif()
set(SRC ${SRC} lua/interface.cpp lua/api_general.cpp lua/api_lcd.cpp lua/api_model.cpp)
set(LUA_SRC
lapi.c
lcode.c
lctype.c
ldebug.c
ldo.c
ldump.c
lfunc.c
lgc.c
llex.c
lmem.c
lobject.c
lopcodes.c
lparser.c
lstate.c
lstring.c
ltable.c
lrotable.c
ltm.c
lundump.c
lvm.c
lzio.c
lbaselib.c
linit.c
lmathlib.c
lbitlib.c
loadlib.c
lauxlib.c
ltablib.c
lcorolib.c
liolib.c
lstrlib.c
)
foreach(FILE ${LUA_SRC})
set(SRC ${SRC} ${LUA_DIR}/${FILE})
endforeach()
endif()
if(HELI)
add_definitions(-DHELI)
set(GUI_SRC ${GUI_SRC} menu_model_heli.cpp)
endif()
if(FLIGHT_MODES)
add_definitions(-DFLIGHT_MODES)
set(GUI_SRC ${GUI_SRC} menu_model_flightmodes.cpp)
endif()
if(CURVES)
add_definitions(-DCURVES)
set(GUI_SRC ${GUI_SRC} menu_model_curves.cpp)
endif()
if(GVARS)
add_definitions(-DGVARS)
set(GUI_SRC ${GUI_SRC} menu_model_gvars.cpp)
endif()
if(FAI STREQUAL YES)
add_definitions(-DFAI)
elseif(FAI STREQUAL CHOICE)
add_definitions(-DFAI_CHOICE)
endif()
if(AUTOSOURCE)
add_definitions(-DAUTOSOURCE)
endif()
if(AUTOSWITCH)
add_definitions(-DAUTOSWITCH)
endif()
if(SDCARD STREQUAL YES)
add_definitions(-DSDCARD)
set(SRC ${SRC} sdcard.cpp rtc.cpp logs.cpp)
set(GUI_SRC ${GUI_SRC} menu_general_sdmanager.cpp)
include_directories(${FATFS_DIR} ${FATFS_DIR}/option)
endif()
if(SHUTDOWN_CONFIRMATION)
add_definitions(-DSHUTDOWN_CONFIRMATION)
endif()
if(PPM_UNIT STREQUAL US)
add_definitions(-DPPM_UNIT_US)
elseif(PPM_UNIT STREQUAL PERCENT_PREC1)
add_definitions(-DPPM_UNIT_PERCENT_PREC1)
else()
add_definitions(-DPPM_UNIT_PERCENT_PREC0)
endif()
if(PPM_CENTER_ADJUSTABLE)
add_definitions(-DPPM_CENTER_ADJUSTABLE)
endif()
if(PPM_LIMITS_SYMETRICAL)
add_definitions(-DPPM_LIMITS_SYMETRICAL)
endif()
if(OVERRIDE_CHANNEL_FUNCTION)
add_definitions(-DOVERRIDE_CHANNEL_FUNCTION)
endif()
if(DANGEROUS_MODULE_FUNCTIONS)
add_definitions(-DDANGEROUS_MODULE_FUNCTIONS)
endif()
set(GUI_SRC set(GUI_SRC
${GUI_SRC} ${GUI_SRC}
lcd.cpp lcd.cpp
@ -503,6 +503,97 @@ set(GUI_SRC
view_statistics.cpp view_statistics.cpp
) )
if(LUA)
add_definitions(-DLUA)
include_directories(${LUA_DIR})
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} ${LUA_EXPORT})
if(LUA STREQUAL ON)
add_definitions(-DLUA_MODEL_SCRIPTS)
set(GUI_SRC ${GUI_SRC} menu_model_custom_scripts.cpp)
endif()
set(SRC ${SRC} lua/interface.cpp lua/api_general.cpp lua/api_lcd.cpp lua/api_model.cpp)
set(LUA_SRC lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lparser.c
lstate.c lstring.c ltable.c lrotable.c ltm.c lundump.c lvm.c lzio.c linit.c
lbaselib.c lmathlib.c lbitlib.c loadlib.c lauxlib.c ltablib.c lcorolib.c liolib.c lstrlib.c
)
foreach(FILE ${LUA_SRC})
set(SRC ${SRC} ${LUA_DIR}/${FILE})
endforeach()
endif()
if(HELI)
add_definitions(-DHELI)
set(GUI_SRC ${GUI_SRC} menu_model_heli.cpp)
endif()
if(FLIGHT_MODES)
add_definitions(-DFLIGHT_MODES)
set(GUI_SRC ${GUI_SRC} menu_model_flightmodes.cpp)
endif()
if(CURVES)
add_definitions(-DCURVES)
set(GUI_SRC ${GUI_SRC} menu_model_curves.cpp)
endif()
if(GVARS)
add_definitions(-DGVARS)
MATH(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${GVARS_VARIANT})
endif()
if(FAI STREQUAL YES)
add_definitions(-DFAI)
elseif(FAI STREQUAL CHOICE)
add_definitions(-DFAI_CHOICE)
endif()
if(AUTOSOURCE)
add_definitions(-DAUTOSOURCE)
endif()
if(AUTOSWITCH)
add_definitions(-DAUTOSWITCH)
endif()
if(SDCARD STREQUAL YES)
add_definitions(-DSDCARD)
include_directories(${FATFS_DIR} ${FATFS_DIR}/option)
set(SRC ${SRC} sdcard.cpp rtc.cpp logs.cpp)
set(GUI_SRC ${GUI_SRC} menu_general_sdmanager.cpp)
endif()
if(SHUTDOWN_CONFIRMATION)
add_definitions(-DSHUTDOWN_CONFIRMATION)
endif()
if(PPM_UNIT STREQUAL US)
add_definitions(-DPPM_UNIT_US)
elseif(PPM_UNIT STREQUAL PERCENT_PREC1)
add_definitions(-DPPM_UNIT_PERCENT_PREC1)
else()
add_definitions(-DPPM_UNIT_PERCENT_PREC0)
endif()
if(PPM_CENTER_ADJUSTABLE)
add_definitions(-DPPM_CENTER_ADJUSTABLE)
endif()
if(PPM_LIMITS_SYMETRICAL)
add_definitions(-DPPM_LIMITS_SYMETRICAL)
endif()
if(OVERRIDE_CHANNEL_FUNCTION)
add_definitions(-DOVERRIDE_CHANNEL_FUNCTION)
endif()
if(DANGEROUS_MODULE_FUNCTIONS)
add_definitions(-DDANGEROUS_MODULE_FUNCTIONS)
endif()
if(SPLASH)
add_definitions(-DSPLASH)
endif()
set(SRC set(SRC
${SRC} ${SRC}
opentx.cpp opentx.cpp
@ -516,10 +607,6 @@ set(SRC
trainer_input.cpp trainer_input.cpp
) )
if(SPLASH)
add_definitions(-DSPLASH)
endif()
if(GUI) if(GUI)
add_definitions(-DGUI) add_definitions(-DGUI)
set(SRC set(SRC
@ -535,7 +622,7 @@ if(GUI)
endif() endif()
foreach(FILE ${TARGET_SRC}) foreach(FILE ${TARGET_SRC})
set(SRC ${SRC} targets/${TARGET_DIR}/${FILE}) set(SRC targets/${TARGET_DIR}/${FILE} ${SRC})
endforeach() endforeach()
foreach(FILE ${FIRMWARE_TARGET_SRC}) foreach(FILE ${FIRMWARE_TARGET_SRC})
@ -546,24 +633,73 @@ foreach(FILE ${PULSES_SRC})
set(SRC ${SRC} pulses/${FILE}) set(SRC ${SRC} pulses/${FILE})
endforeach() endforeach()
add_definitions(-DCORRECT_NEGATIVE_SHIFTS)
add_subdirectory(targets/simu) add_subdirectory(targets/simu)
include(CMakeForceCompiler) set(SRC ${SRC} ${FIRMWARE_SRC})
cmake_force_c_compiler(arm-none-eabi-gcc GNU)
cmake_force_cxx_compiler(arm-none-eabi-gcc GNU)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
include(CMakeForceCompiler)
set(WARNING_FLAGS "-Wall -Wno-strict-aliasing -Wformat -Wreturn-type -Wunused -Wuninitialized -Wunknown-pragmas -Wno-switch -Wtype-limits")
# trick to remove the -rdynamic issue
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
set(CMAKE_SYSTEM_NAME Generic) if(ARCH STREQUAL ARM)
set(CMAKE_SYSTEM_VERSION 1) cmake_force_c_compiler(arm-none-eabi-gcc GNU)
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -o <OBJECT> <SOURCE>") cmake_force_cxx_compiler(arm-none-eabi-gcc GNU)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=opentx.lst -DRUN_FROM_FLASH=1 -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -Wall -fno-exceptions -Wno-strict-aliasing -Wformat -Wreturn-type -Wunused -Wuninitialized -Wunknown-pragmas -Wno-switch -Wtype-limits -fdata-sections -ffunction-sections") set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -Wimplicit") set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS}") set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -o <OBJECT> <SOURCE>")
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=opentx.map,--cref,--no-warn-mismatch,--gc-sections")
add_executable(firmware ${SRC} ${FIRMWARE_SRC}) set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=opentx.lst -DRUN_FROM_FLASH=1 -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}")
add_dependencies(firmware ${FIRMWARE_DEPENDENCIES}) set(CMAKE_C_FLAGS "${COMMON_FLAGS} -Wimplicit")
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -nostartfiles -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=opentx.map,--cref,--no-warn-mismatch,--gc-sections")
add_executable(firmware.bin ${SRC})
add_dependencies(firmware.bin ${FIRMWARE_DEPENDENCIES})
else()
cmake_force_c_compiler(avr-gcc GNU)
cmake_force_cxx_compiler(avr-gcc GNU)
set(CMAKE_CXX_FLAGS "-mmcu=${MCU} -DF_CPU=16000000UL -O${OPT} -gdwarf-2 -fno-exceptions -flto -fwhole-program -fno-inline-small-functions -mstrict-X ${WARNING_FLAGS}")
include_directories(storage gui/${GUI_DIR})
set(ALLSRC ${PROJECT_BINARY_DIR}/allsrc.cpp)
foreach(FILE ${SRC})
file(READ ${FILE} FILE_CONTENT)
set(ALLSRC_CONTENT "${ALLSRC_CONTENT}# 1 \"${FILE}\"\n${FILE_CONTENT}")
endforeach()
file(WRITE ${ALLSRC} "${ALLSRC_CONTENT}")
add_executable(firmware.elf ${ALLSRC})
add_dependencies(firmware.elf ${FIRMWARE_DEPENDENCIES})
add_custom_target(firmware.hex
COMMAND avr-objcopy -O ihex -R .eeprom firmware.elf firmware.hex
DEPENDS firmware.elf
)
add_custom_target(firmware.bin
COMMAND avr-objcopy -O binary firmware.elf firmware.hex
DEPENDS firmware.elf
)
add_custom_target(firmware
COMMAND avr-size --mcu=${MCU} --format=avr firmware.elf
DEPENDS firmware.hex
)
endif()
add_custom_target(firmware.lss
COMMAND avr-objdump -h -S firmware.elf > firmware.lss
DEPENDS firmware.elf
)

View file

@ -0,0 +1,3 @@
add_subdirectory(9x)
add_subdirectory(taranis)
add_subdirectory(horus)

View file

@ -34,16 +34,29 @@
* *
*/ */
#include "../9x/lcd.h" #include "lcd.h"
#include "../9x/menus.h" #include "menus.h"
extern const pm_uchar sticks[] PROGMEM;
#define NUM_BODY_LINES (LCD_LINES-1) #define NUM_BODY_LINES (LCD_LINES-1)
#define MENU_HEADER_HEIGHT FH #define MENU_HEADER_HEIGHT FH
#define MENU_INIT_VPOS 0 #define MENU_INIT_VPOS 0
#define DEFAULT_SCROLLBAR_X (LCD_W-1) #define DEFAULT_SCROLLBAR_X (LCD_W-1)
#define WCHART (LCD_H/2)
#define X0 (LCD_W-WCHART-2)
#define Y0 (LCD_H/2)
#if LCD_W >= 212
#define MIXES_2ND_COLUMN (18*FW)
#else
#define MIXES_2ND_COLUMN (12*FW)
#endif
void displaySplash(); void displaySplash();
void displayScreenIndex(uint8_t index, uint8_t count, uint8_t attr); void displayScreenIndex(uint8_t index, uint8_t count, uint8_t attr);
void drawStick(coord_t centrex, int16_t xval, int16_t yval);
#if !defined(CPUM64) #if !defined(CPUM64)
void drawVerticalScrollbar(coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t count, uint8_t visible); void drawVerticalScrollbar(coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t count, uint8_t visible);

View file

@ -209,8 +209,10 @@ void putsTelemetryChannelValue(coord_t x, coord_t y, uint8_t channel, lcdint_t v
#if defined(CPUARM) #if defined(CPUARM)
#define putstime_t int32_t #define putstime_t int32_t
#define FlightModesType uint16_t
#else #else
#define putstime_t int16_t #define putstime_t int16_t
#define FlightModesType uint8_t
#endif #endif
void putsRtcTime(coord_t x, coord_t y, LcdFlags att); void putsRtcTime(coord_t x, coord_t y, LcdFlags att);

View file

@ -36,40 +36,6 @@
#include "../../opentx.h" #include "../../opentx.h"
void menuGeneralSetup(uint8_t event);
void menuGeneralSdManager(uint8_t event);
void menuGeneralCustomFunctions(uint8_t event);
void menuGeneralTrainer(uint8_t event);
void menuGeneralVersion(uint8_t event);
void menuGeneralDiagKeys(uint8_t event);
void menuGeneralDiagAna(uint8_t event);
void menuGeneralHardware(uint8_t event);
void menuGeneralCalib(uint8_t event);
enum EnumTabDiag {
e_Setup,
CASE_SDCARD(e_Sd)
CASE_CPUARM(e_GeneralCustomFunctions)
e_Trainer,
e_Vers,
e_Keys,
e_Ana,
CASE_CPUARM(e_Hardware)
e_Calib
};
const MenuHandlerFunc menuTabGeneral[] PROGMEM = {
menuGeneralSetup,
CASE_SDCARD(menuGeneralSdManager)
CASE_CPUARM(menuGeneralCustomFunctions)
menuGeneralTrainer,
menuGeneralVersion,
menuGeneralDiagKeys,
menuGeneralDiagAna,
CASE_CPUARM(menuGeneralHardware)
menuGeneralCalib
};
#if defined(CPUARM) #if defined(CPUARM)
void menuGeneralCustomFunctions(uint8_t event) void menuGeneralCustomFunctions(uint8_t event)
{ {

View file

@ -39,57 +39,6 @@
#include "gui/9x/view_mavlink.h" #include "gui/9x/view_mavlink.h"
#endif #endif
// TODO elsewhere!
#define WCHART (LCD_H/2)
#define X0 (LCD_W-WCHART-2)
#define Y0 (LCD_H/2)
enum EnumTabModel {
e_ModelSelect,
e_ModelSetup,
CASE_HELI(e_Heli)
CASE_FLIGHT_MODES(e_FlightModesAll)
e_InputsAll,
e_MixAll,
e_Limits,
CASE_CURVES(e_CurvesAll)
e_LogicalSwitches,
e_CustomFunctions,
CASE_FRSKY(e_Telemetry)
CASE_MAVLINK(e_MavSetup)
CASE_TEMPLATES(e_Templates)
};
void menuModelSelect(uint8_t event);
void menuModelSetup(uint8_t event);
void menuModelHeli(uint8_t event);
void menuModelFlightModesAll(uint8_t event);
void menuModelExposAll(uint8_t event);
void menuModelMixAll(uint8_t event);
void menuModelLimits(uint8_t event);
void menuModelCurvesAll(uint8_t event);
void menuModelCurveOne(uint8_t event);
void menuModelGVars(uint8_t event);
void menuModelLogicalSwitches(uint8_t event);
void menuModelCustomFunctions(uint8_t event);
void menuModelTelemetry(uint8_t event);
void menuModelTemplates(uint8_t event);
void menuModelExpoOne(uint8_t event);
extern uint8_t s_curveChan;
#if defined(CPUARM)
#define FlightModesType uint16_t
#else
#define FlightModesType uint8_t
#endif
#if LCD_W >= 212
#define MIXES_2ND_COLUMN (18*FW)
#else
#define MIXES_2ND_COLUMN (12*FW)
#endif
uint8_t editDelay(const coord_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) uint8_t editDelay(const coord_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay)
{ {
lcd_putsLeft(y, str); lcd_putsLeft(y, str);
@ -97,29 +46,10 @@ uint8_t editDelay(const coord_t y, const uint8_t event, const uint8_t attr, cons
if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX); if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX);
return delay; return delay;
} }
#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay)
const MenuHandlerFunc menuTabModel[] PROGMEM = { uint8_t s_copyMode = 0;
menuModelSelect, int8_t s_copySrcRow;
menuModelSetup, int8_t s_copyTgtOfs;
CASE_HELI(menuModelHeli)
CASE_FLIGHT_MODES(menuModelFlightModesAll)
menuModelExposAll,
menuModelMixAll,
menuModelLimits,
CASE_CURVES(menuModelCurvesAll)
menuModelLogicalSwitches,
menuModelCustomFunctions,
CASE_FRSKY(menuModelTelemetry)
CASE_MAVLINK(menuTelemetryMavlinkSetup)
CASE_TEMPLATES(menuModelTemplates)
};
#define COPY_MODE 1
#define MOVE_MODE 2
static uint8_t s_copyMode = 0;
static int8_t s_copySrcRow;
static int8_t s_copyTgtOfs;
#if defined(CPUM64) #if defined(CPUM64)
#define editNameCursorPos menuHorizontalPosition #define editNameCursorPos menuHorizontalPosition
@ -211,9 +141,7 @@ void editName(coord_t x, coord_t y, char *name, uint8_t size, uint8_t event, uin
} }
} }
#if defined(CPUM64) #if !defined(CPUM64)
#define editSingleName(x, y, label, name, size, event, active) editName(x, y, name, size, event, active)
#else
void editSingleName(coord_t x, coord_t y, const pm_char *label, char *name, uint8_t size, uint8_t event, uint8_t active) void editSingleName(coord_t x, coord_t y, const pm_char *label, char *name, uint8_t size, uint8_t event, uint8_t active)
{ {
lcd_putsLeft(y, label); lcd_putsLeft(y, label);
@ -221,4 +149,4 @@ void editSingleName(coord_t x, coord_t y, const pm_char *label, char *name, uint
} }
#endif #endif
static uint8_t s_currIdx; uint8_t s_currIdx;

View file

@ -35,7 +35,6 @@
#include "../../opentx.h" #include "../../opentx.h"
void displayFlightModes(coord_t x, coord_t y, FlightModesType value) void displayFlightModes(coord_t x, coord_t y, FlightModesType value)
{ {
uint8_t p = MAX_FLIGHT_MODES; uint8_t p = MAX_FLIGHT_MODES;

View file

@ -53,23 +53,6 @@ enum LogicalSwitchFields {
#define CSW_3RD_COLUMN (13*FW-6) #define CSW_3RD_COLUMN (13*FW-6)
#define CSW_4TH_COLUMN (18*FW+2) #define CSW_4TH_COLUMN (18*FW+2)
#if defined(CPUARM)
#define INCDEC_DECLARE_VARS(f) uint8_t incdecFlag = (f); IsValueAvailable isValueAvailable = NULL
#define INCDEC_SET_FLAG(f) incdecFlag = (f)
#define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn
#define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable)
#elif defined(CPUM64)
#define INCDEC_DECLARE_VARS(f)
#define INCDEC_SET_FLAG(f)
#define INCDEC_ENABLE_CHECK(fn)
#define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL)
#else
#define INCDEC_DECLARE_VARS(f) uint8_t incdecFlag = (f)
#define INCDEC_SET_FLAG(f) incdecFlag = (f)
#define INCDEC_ENABLE_CHECK(fn)
#define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag)
#endif
#if defined(CPUARM) #if defined(CPUARM)
void putsEdgeDelayParam(coord_t x, coord_t y, LogicalSwitchData *cs, uint8_t lattr, uint8_t rattr) void putsEdgeDelayParam(coord_t x, coord_t y, LogicalSwitchData *cs, uint8_t lattr, uint8_t rattr)
{ {

View file

@ -68,9 +68,7 @@ extern uint8_t noHighlightCounter;
void menu_lcd_onoff(coord_t x, coord_t y, uint8_t value, LcdFlags attr); void menu_lcd_onoff(coord_t x, coord_t y, uint8_t value, LcdFlags attr);
typedef void (*MenuHandlerFunc)(uint8_t event); typedef void (* MenuHandlerFunc)(uint8_t event);
extern const MenuHandlerFunc menuTabModel[];
extern const MenuHandlerFunc menuTabGeneral[];
extern MenuHandlerFunc menuHandlers[5]; extern MenuHandlerFunc menuHandlers[5];
extern uint8_t menuVerticalPositions[4]; extern uint8_t menuVerticalPositions[4];
@ -93,18 +91,95 @@ void drawPotsBars();
void doMainScreenGraphics(); void doMainScreenGraphics();
void menuFirstCalib(uint8_t event); void menuFirstCalib(uint8_t event);
void onMainViewMenu(const char *result); void onMainViewMenu(const char * result);
void menuMainView(uint8_t event); void menuMainView(uint8_t event);
void menuGeneralDiagAna(uint8_t event);
#if defined(FRSKY)
void menuTelemetryFrsky(uint8_t event); void menuTelemetryFrsky(uint8_t event);
#endif void menuTelemetryMavlinkSetup(uint8_t event);
void menuGeneralSetup(uint8_t event);
void menuGeneralCalib(uint8_t event);
void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext); void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext);
enum EnumTabDiag {
e_Setup,
CASE_SDCARD(e_Sd)
CASE_CPUARM(e_GeneralCustomFunctions)
e_Trainer,
e_Vers,
e_Keys,
e_Ana,
CASE_CPUARM(e_Hardware)
e_Calib
};
void menuGeneralSetup(uint8_t event);
void menuGeneralSdManager(uint8_t event);
void menuGeneralCustomFunctions(uint8_t event);
void menuGeneralTrainer(uint8_t event);
void menuGeneralVersion(uint8_t event);
void menuGeneralDiagKeys(uint8_t event);
void menuGeneralDiagAna(uint8_t event);
void menuGeneralHardware(uint8_t event);
void menuGeneralCalib(uint8_t event);
static const MenuHandlerFunc menuTabGeneral[] PROGMEM = {
menuGeneralSetup,
CASE_SDCARD(menuGeneralSdManager)
CASE_CPUARM(menuGeneralCustomFunctions)
menuGeneralTrainer,
menuGeneralVersion,
menuGeneralDiagKeys,
menuGeneralDiagAna,
CASE_CPUARM(menuGeneralHardware)
menuGeneralCalib
};
enum EnumTabModel {
e_ModelSelect,
e_ModelSetup,
CASE_HELI(e_Heli)
CASE_FLIGHT_MODES(e_FlightModesAll)
e_InputsAll,
e_MixAll,
e_Limits,
CASE_CURVES(e_CurvesAll)
e_LogicalSwitches,
e_CustomFunctions,
CASE_FRSKY(e_Telemetry)
CASE_MAVLINK(e_MavSetup)
CASE_TEMPLATES(e_Templates)
};
void menuModelSelect(uint8_t event); void menuModelSelect(uint8_t event);
void menuModelSetup(uint8_t event);
void menuModelHeli(uint8_t event);
void menuModelFlightModesAll(uint8_t event);
void menuModelExposAll(uint8_t event);
void menuModelMixAll(uint8_t event);
void menuModelLimits(uint8_t event);
void menuModelCurvesAll(uint8_t event);
void menuModelCurveOne(uint8_t event);
void menuModelGVars(uint8_t event);
void menuModelLogicalSwitches(uint8_t event);
void menuModelCustomFunctions(uint8_t event); void menuModelCustomFunctions(uint8_t event);
void menuModelTelemetry(uint8_t event);
void menuModelTemplates(uint8_t event);
void menuModelExpoOne(uint8_t event);
static const MenuHandlerFunc menuTabModel[] PROGMEM = {
menuModelSelect,
menuModelSetup,
CASE_HELI(menuModelHeli)
CASE_FLIGHT_MODES(menuModelFlightModesAll)
menuModelExposAll,
menuModelMixAll,
menuModelLimits,
CASE_CURVES(menuModelCurvesAll)
menuModelLogicalSwitches,
menuModelCustomFunctions,
CASE_FRSKY(menuModelTelemetry)
CASE_MAVLINK(menuTelemetryMavlinkSetup)
CASE_TEMPLATES(menuModelTemplates)
};
void menuStatisticsView(uint8_t event); void menuStatisticsView(uint8_t event);
void menuStatisticsDebug(uint8_t event); void menuStatisticsDebug(uint8_t event);
void menuAboutView(uint8_t event); void menuAboutView(uint8_t event);
@ -135,20 +210,37 @@ void menuTraceBuffer(uint8_t event);
extern int8_t checkIncDec_Ret; // global helper vars extern int8_t checkIncDec_Ret; // global helper vars
#define EDIT_SELECT_MENU -1 #define EDIT_SELECT_MENU -1
#define EDIT_SELECT_FIELD 0 #define EDIT_SELECT_FIELD 0
#define EDIT_MODIFY_FIELD 1 #define EDIT_MODIFY_FIELD 1
#define EDIT_MODIFY_STRING 2 #define EDIT_MODIFY_STRING 2
extern int8_t s_editMode; // global editmode extern int8_t s_editMode; // global editmode
// checkIncDec flags // checkIncDec flags
#define EE_GENERAL 0x01 #define EE_GENERAL 0x01
#define EE_MODEL 0x02 #define EE_MODEL 0x02
#define NO_INCDEC_MARKS 0x04 #define NO_INCDEC_MARKS 0x04
#define INCDEC_SWITCH 0x08 #define INCDEC_SWITCH 0x08
#define INCDEC_SOURCE 0x10 #define INCDEC_SOURCE 0x10
#define INCDEC_REP10 0x40 #define INCDEC_REP10 0x40
#define NO_DBLKEYS 0x80 #define NO_DBLKEYS 0x80
#if defined(CPUARM)
#define INCDEC_DECLARE_VARS(f) uint8_t incdecFlag = (f); IsValueAvailable isValueAvailable = NULL
#define INCDEC_SET_FLAG(f) incdecFlag = (f)
#define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn
#define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable)
#elif defined(CPUM64)
#define INCDEC_DECLARE_VARS(f)
#define INCDEC_SET_FLAG(f)
#define INCDEC_ENABLE_CHECK(fn)
#define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL)
#else
#define INCDEC_DECLARE_VARS(f) uint8_t incdecFlag = (f)
#define INCDEC_SET_FLAG(f) incdecFlag = (f)
#define INCDEC_ENABLE_CHECK(fn)
#define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag)
#endif
// mawrow special values // mawrow special values
#define TITLE_ROW ((uint8_t)-1) #define TITLE_ROW ((uint8_t)-1)
@ -334,6 +426,15 @@ int8_t switchMenuItem(coord_t x, coord_t y, int8_t value, LcdFlags attr, uint8_t
void editName(coord_t x, coord_t y, char *name, uint8_t size, uint8_t event, uint8_t active); void editName(coord_t x, coord_t y, char *name, uint8_t size, uint8_t event, uint8_t active);
#if defined(CPUM64)
#define editSingleName(x, y, label, name, size, event, active) editName(x, y, name, size, event, active)
#else
void editSingleName(coord_t x, coord_t y, const pm_char *label, char *name, uint8_t size, uint8_t event, uint8_t active);
#endif
uint8_t editDelay(const coord_t y, const uint8_t event, const uint8_t attr, const pm_char * str, uint8_t delay);
#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay)
#define WARNING_TYPE_ASTERISK 0 #define WARNING_TYPE_ASTERISK 0
#define WARNING_TYPE_CONFIRM 1 #define WARNING_TYPE_CONFIRM 1
#define WARNING_TYPE_INPUT 2 #define WARNING_TYPE_INPUT 2
@ -344,6 +445,14 @@ extern uint8_t warningInfoLength;
extern uint8_t warningResult; extern uint8_t warningResult;
extern uint8_t warningType; extern uint8_t warningType;
#define COPY_MODE 1
#define MOVE_MODE 2
extern uint8_t s_copyMode;
extern int8_t s_copySrcRow;
extern int8_t s_copyTgtOfs;
extern uint8_t s_currIdx;
extern uint8_t s_curveChan;
#define MENU_X 10 #define MENU_X 10
#define MENU_Y 16 #define MENU_Y 16
#define MENU_W LCD_W-(2*MENU_X) #define MENU_W LCD_W-(2*MENU_X)
@ -465,4 +574,6 @@ void displayWarning(uint8_t event);
typedef int16_t (*FnFuncP) (int16_t x); typedef int16_t (*FnFuncP) (int16_t x);
void drawFunction(FnFuncP fn, uint8_t offset=0); void drawFunction(FnFuncP fn, uint8_t offset=0);
uint8_t switchToMix(uint8_t source);
#endif // _MENUS_H_ #endif // _MENUS_H_

View file

@ -63,7 +63,6 @@ void menuTelemetryMavlinkGPS(void);
void lcd_outhex2(uint8_t x, uint8_t y, uint8_t val); void lcd_outhex2(uint8_t x, uint8_t y, uint8_t val);
void menuTelemetryMavlinkDump(uint8_t event); void menuTelemetryMavlinkDump(uint8_t event);
#endif #endif
void menuTelemetryMavlinkSetup(uint8_t event);
/*! \brief Mavlink menu enumerator /*! \brief Mavlink menu enumerator
* \details Used to create a readable case statement for the * \details Used to create a readable case statement for the

View file

@ -36,6 +36,8 @@
#include "../opentx.h" #include "../opentx.h"
#if defined(CPUARM)
int circularIncDec(int current, int inc, int min, int max, IsValueAvailable isValueAvailable) int circularIncDec(int current, int inc, int min, int max, IsValueAvailable isValueAvailable)
{ {
do { do {
@ -444,3 +446,5 @@ int getFirstAvailable(int min, int max, IsValueAvailable isValueAvailable)
} }
return retval; return retval;
} }
#endif

View file

@ -423,7 +423,7 @@
typedef uint32_t mixsrc_t; typedef uint32_t mixsrc_t;
typedef int32_t swsrc_t; typedef int32_t swsrc_t;
#else #else
#define tmr10ms_t uint16_t typedef uint16_t tmr10ms_t;
extern volatile tmr10ms_t g_tmr10ms; extern volatile tmr10ms_t g_tmr10ms;
extern inline uint16_t get_tmr10ms() extern inline uint16_t get_tmr10ms()
{ {

View file

@ -115,7 +115,7 @@ const static pm_uchar lcdInitSequence[] PROGMEM =
#endif #endif
}; };
inline void lcdInit() void lcdInit()
{ {
LCD_LOCK(); LCD_LOCK();
PORTC_LCD_CTRL &= ~(1<<OUT_C_LCD_RES); //LCD reset PORTC_LCD_CTRL &= ~(1<<OUT_C_LCD_RES); //LCD reset