diff --git a/CMakeLists.txt b/CMakeLists.txt index b80be1c87..1c53e9832 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,5 +23,16 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake) +find_package(Qt5Widgets REQUIRED) +find_package(Qt5Xml REQUIRED) +find_package(Qt5LinguistTools REQUIRED) +find_package(Qt5PrintSupport REQUIRED) +find_package(Qt5Multimedia REQUIRED) + +include(Macros) +today(DATE) +now(TIME) +git_id(GIT_STR) + add_subdirectory(${RADIO_SRC_DIRECTORY}) add_subdirectory(${COMPANION_SRC_DIRECTORY}) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index d2af7b21f..4c34b7f2c 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -1,5 +1,3 @@ -include(Macros) - if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(C9X_NAME_SUFFIX ${VERSION_MAJOR}${VERSION_MINOR}) set(COMPANION_NAME "companion${C9X_NAME_SUFFIX}") @@ -38,12 +36,6 @@ else() message("SDL not found! Joysticks support will be disabled. Simulator audio will not work.") endif() -find_package(Qt5Widgets REQUIRED) -find_package(Qt5Xml REQUIRED) -find_package(Qt5LinguistTools REQUIRED) -find_package(Qt5PrintSupport REQUIRED) -find_package(Qt5Multimedia REQUIRED) - message(STATUS "Looking for QT lupdate ") find_package(Lupdate) if(LUPDATE_FOUND) @@ -82,7 +74,6 @@ add_subdirectory(shared) add_subdirectory(modeledit) add_subdirectory(generaledit) add_subdirectory(simulation) -add_subdirectory(firmwares/opentx/simulator) add_subdirectory(qcustomplot) add_subdirectory(qxtcommandoptions) @@ -208,9 +199,6 @@ set(companion_RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc ) -today(DATE) -now(TIME) - configure_file(${COMPANION_SRC_DIRECTORY}/version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY) configure_file(${COMPANION_SRC_DIRECTORY}/translations.qrc.in ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc @ONLY) configure_file(${COMPANION_SRC_DIRECTORY}/companion.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/companion.desktop @ONLY) @@ -329,7 +317,7 @@ if(WIN32) add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/companion/simulator-install.exe COMMAND "${NSIS_EXE}" ARGS ${PROJECT_BINARY_DIR}/companion/simulator.nsi - DEPENDS simulator opentx-simulators ${PROJECT_BINARY_DIR}/companion/simulator.nsi + DEPENDS simulator ${PROJECT_BINARY_DIR}/companion/simulator.nsi COMMENT "Simulator Windows NSIS Installer") add_custom_target(installer diff --git a/companion/src/firmwares/opentx/simulator/CMakeLists.txt b/companion/src/firmwares/opentx/simulator/CMakeLists.txt deleted file mode 100644 index 6c1ac8a79..000000000 --- a/companion/src/firmwares/opentx/simulator/CMakeLists.txt +++ /dev/null @@ -1,187 +0,0 @@ -today(DATE) -now(TIME) -git_id(GIT_STR) - -configure_file(${RADIO_SRC_DIRECTORY}/stamp.h.in ${CMAKE_BINARY_DIR}/radio/src/stamp.h @ONLY) - -set(OPENTX_SRC_FILES - opentxsimulator.cpp - ) - -include_directories( - ${CMAKE_BINARY_DIR}/radio/src - ${CMAKE_CURRENT_BINARY_DIR} - ${RADIO_BIN_DIRECTORY} - ${PROJECT_SOURCE_DIR} - ${COMPANION_SRC_DIRECTORY}/firmwares/opentx - ${RADIO_SRC_DIRECTORY} - ${RADIO_SRC_DIRECTORY}/fonts/std - ${RADIO_SRC_DIRECTORY}/lua/src - ${RADIO_SRC_DIRECTORY}/thirdparty - ${RADIO_SRC_DIRECTORY}/thirdparty/FatFs - ${RADIO_SRC_DIRECTORY}/thirdparty/FatFs/option - ${RADIO_SRC_DIRECTORY}/thirdparty/CoOS - ${RADIO_SRC_DIRECTORY}/thirdparty/Lua/src -) - -if(APPLE) - # OS X compiler no longer automatically includes /Library/Frameworks in search path - set(CMAKE_SHARED_LINKER_FLAGS -F/Library/Frameworks) -endif(APPLE) - -if(DEFINED TRANSLATIONS) - set(COMMON_DEFINITIONS ${COMMON_DEFINITIONS} TRANSLATIONS_${TRANSLATIONS}) - string(TOLOWER ${TRANSLATIONS} TRANSLATION_SUFFIX) - set(SUFFIX ${SUFFIX}-${TRANSLATION_SUFFIX}) -endif() - -set(COMMON_DEFINITIONS - ${COMMON_DEFINITIONS} - SUFFIX="${SUFFIX}" - HELI - GVARS - FLIGHT_MODES - PPM_CENTER_ADJUSTABLE - PPM_LIMITS_SYMETRICAL - OVERRIDE_CHANNEL_FUNCTION - FAI_CHOICE - ) - -set(COMMON_LIBRARIES - ${QT_LIBRARIES} - ${PTHREAD_LIBRARY} - ${SDL_LIBRARY} - ) - -add_library(opentx-9x${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-9xr${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-9x128${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-9xr128${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-gruvin9x${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-mega2560${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-sky9x${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-9xrpro${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-ar9x${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-taranis${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-taranisplus${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-taranisx9e${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) -add_library(opentx-horus${SUFFIX}-simulator SHARED ${OPENTX_SRC_FILES}) - -set(dependencies_9x 9x_bitmaps firmware_translations) -add_dependencies(opentx-9x${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-9xr${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-9x128${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-9xr128${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-gruvin9x${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-mega2560${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-sky9x${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-9xrpro${SUFFIX}-simulator ${dependencies_9x}) -add_dependencies(opentx-ar9x${SUFFIX}-simulator ${dependencies_9x}) -set(dependencies_taranis taranis_bitmaps firmware_translations) -add_dependencies(opentx-taranis${SUFFIX}-simulator ${dependencies_taranis} lua_export_taranis) -add_dependencies(opentx-taranisplus${SUFFIX}-simulator ${dependencies_taranis} lua_export_taranis) -add_dependencies(opentx-taranisx9e${SUFFIX}-simulator ${dependencies_taranis} lua_export_taranis_x9e) - -add_dependencies(opentx-horus${SUFFIX}-simulator horus_bitmaps horus_fonts firmware_translations lua_export_horus) - -set(OPENTX_LIBRARIES - opentx-9x${SUFFIX}-simulator - opentx-9xr${SUFFIX}-simulator - opentx-9x128${SUFFIX}-simulator - opentx-9xr128${SUFFIX}-simulator - opentx-gruvin9x${SUFFIX}-simulator - opentx-mega2560${SUFFIX}-simulator - opentx-sky9x${SUFFIX}-simulator - opentx-9xrpro${SUFFIX}-simulator - opentx-ar9x${SUFFIX}-simulator - opentx-taranis${SUFFIX}-simulator - opentx-taranisplus${SUFFIX}-simulator - opentx-taranisx9e${SUFFIX}-simulator - opentx-horus${SUFFIX}-simulator - ) - -if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - install(TARGETS ${OPENTX_LIBRARIES} LIBRARY DESTINATION ${SIMULATOR_LIB_PATH}) -endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - -# 9X with ATmega64 -target_include_directories(opentx-9x${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-9x${SUFFIX}-simulator PRIVATE PCBSTD PCB9X CPUM64 EEPROM EEPROM_RLC ${COMMON_DEFINITIONS}) - -# 9XR with ATmega64 -target_include_directories(opentx-9xr${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-9xr${SUFFIX}-simulator PRIVATE PCBSTD PCB9XR CPUM64 EEPROM EEPROM_RLC ${COMMON_DEFINITIONS}) - -# 9X with ATmega128 -target_include_directories(opentx-9x128${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-9x128${SUFFIX}-simulator PRIVATE PCBSTD PCB9X CPUM128 EEPROM EEPROM_RLC ${COMMON_DEFINITIONS}) - -# 9XR with ATmega128 -target_include_directories(opentx-9xr128${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-9xr128${SUFFIX}-simulator PRIVATE PCBSTD PCB9XR CPUM128 EEPROM EEPROM_RLC ${COMMON_DEFINITIONS}) - -# Gruvin9x -target_include_directories(opentx-gruvin9x${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/gruvin9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-gruvin9x${SUFFIX}-simulator PRIVATE PCBGRUVIN9X CPUM2560 EEPROM EEPROM_RLC VOICE SDCARD ${COMMON_DEFINITIONS}) - -# Mega2560 -target_include_directories(opentx-mega2560${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/mega2560 PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-mega2560${SUFFIX}-simulator PRIVATE PCBMEGA2560 CPUM2560 EEPROM EEPROM_RLC SDCARD ROTARY_ENCODERS=2 ${COMMON_DEFINITIONS}) - -# Sky9x -target_include_directories(opentx-sky9x${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/sky9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-sky9x${SUFFIX}-simulator PRIVATE PCBSKY9X CPUARM VOICE EEPROM SDCARD ${COMMON_DEFINITIONS}) - -# 9XR-PRO -target_include_directories(opentx-9xrpro${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/sky9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-9xrpro${SUFFIX}-simulator PRIVATE PCBSKY9X REVX CPUARM VOICE EEPROM SDCARD ${COMMON_DEFINITIONS}) - -# AR9X -target_include_directories(opentx-ar9x${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/sky9x PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/9x) -target_compile_definitions(opentx-ar9x${SUFFIX}-simulator PRIVATE PCBSKY9X AR9X CPUARM VOICE EEPROM SDCARD ${COMMON_DEFINITIONS}) - -# Taranis standard -target_include_directories(opentx-taranis${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/taranis PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/taranis) -target_compile_definitions(opentx-taranis${SUFFIX}-simulator PRIVATE PCBTARANIS CPUARM CPUSTM32 EEPROM EEPROM_RLC VOICE SDCARD ${COMMON_DEFINITIONS}) - -# Taranis Plus -target_include_directories(opentx-taranisplus${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/taranis PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/taranis) -target_compile_definitions(opentx-taranisplus${SUFFIX}-simulator PRIVATE PCBTARANIS REVPLUS CPUARM CPUSTM32 EEPROM EEPROM_RLC VOICE SDCARD ${COMMON_DEFINITIONS}) - -# Taranis X9E -target_include_directories(opentx-taranisx9e${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/taranis PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/taranis) -target_compile_definitions(opentx-taranisx9e${SUFFIX}-simulator PRIVATE PCBTARANIS REVPLUS REV9E CPUARM CPUSTM32 STM32F40_41xxx EEPROM EEPROM_RLC VOICE SDCARD ${COMMON_DEFINITIONS}) - -# Horus -target_include_directories(opentx-horus${SUFFIX}-simulator PRIVATE ${RADIO_SRC_DIRECTORY}/targets/horus PRIVATE ${RADIO_SRC_DIRECTORY}/gui/horus PRIVATE ${RADIO_SRC_DIRECTORY}/fonts/horus PRIVATE ${CMAKE_BINARY_DIR}/radio/src/bitmaps/horus) -target_compile_definitions(opentx-horus${SUFFIX}-simulator PRIVATE PCBHORUS CPUARM CPUSTM32 STM32F40_41xxx COLORLCD VOICE SDCARD ${COMMON_DEFINITIONS}) - -foreach(library ${OPENTX_LIBRARIES}) - qt5_use_modules(${library} Core) - target_link_libraries(${library} PRIVATE ${COMMON_LIBRARIES}) -endforeach() - -add_custom_target(opentx-simulators - DEPENDS ${OPENTX_LIBRARIES} - ) - -if(APPLE) - set(SIMULATOR_BUNDLES) - foreach(library ${OPENTX_LIBRARIES}) - set(SIMULATOR_BUNDLE "${library}-bundle") - add_custom_target(${SIMULATOR_BUNDLE} - COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore lib${library}.dylib - COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork lib${library}.dylib - COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtXml.framework/Versions/4/QtXml @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml lib${library}.dylib - COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui lib${library}.dylib - COMMAND install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL lib${library}.dylib - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMAND pwd - COMMAND cp lib${library}.dylib companion.app/Contents/Resources/ - DEPENDS ${library} - ) - list(APPEND SIMULATOR_BUNDLES ${SIMULATOR_BUNDLE}) - endforeach() - add_custom_target(opentx-simulators-bundle DEPENDS ${SIMULATOR_BUNDLES}) -endif(APPLE) - diff --git a/companion/src/firmwares/opentx/simulator/opentxsimulator.cpp b/companion/src/firmwares/opentx/simulator/opentxsimulator.cpp deleted file mode 100644 index 32d58e51a..000000000 --- a/companion/src/firmwares/opentx/simulator/opentxsimulator.cpp +++ /dev/null @@ -1,718 +0,0 @@ -/* - * Author - Bertrand Songis - * - * Based on th9x -> http://code.google.com/p/th9x/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - */ - -#include "opentxsimulator.h" -#include -#include -#include -#include -#include - -#define COMPANION -#define SIMU -#define SIMU_EXCEPTIONS -#define GUI -#define SPLASH -#define FRSKY -#define FRSKY_HUB -#define GPS -#define VARIO -#define GAUGES -#define PPM_UNIT_PERCENT_PREC1 -#define AUDIO -#define PXX -#define DSM2 -#define DSM2_PPM -#define DBLKEYS -#define AUTOSWITCH -#define GRAPHICS -#define CURVES -#if defined(PCBFLAMENCO) - #define RTCLOCK - #define XCURVES - #define VIRTUALINPUTS -#elif defined(PCBTARANIS) || defined(PCBHORUS) - #define RTCLOCK - #define XCURVES - #define VIRTUALINPUTS - #define LUA - #define LUA_MODEL_SCRIPTS - #define LUAINPUTS -#else - #define BUZZER - #define TEMPLATES -#endif -#define BOLD_FONT -#define HAPTIC -#define THRTRACE - -#if defined(CPUARM) -#define TIMERS 3 -#else -#define TIMERS 2 -#endif - -#if defined(PCBSKY9X) && !defined(REVX) - #define ROTARY_ENCODERS 1 -#elif defined(PCBGRUVIN9X) - #define ROTARY_ENCODERS 2 -#endif - -#if defined(CPUARM) - #define FRSKY_SPORT -#endif - -#if defined (PCBTARANIS) - #define MIXERS_MONITOR -#endif - -#define LANGUAGE_PACKS_DEFINITION - -#undef min -#undef max - -namespace NAMESPACE { - -#if defined(CPUARM) -#include "radio/src/pulses/ppm_arm.cpp" -#include "radio/src/pulses/pxx_arm.cpp" -#include "radio/src/pulses/dsm2_arm.cpp" -#include "radio/src/main_arm.cpp" -#include "radio/src/pulses/pulses_arm.cpp" -#include "radio/src/tasks_arm.cpp" -#include "radio/src/audio_arm.cpp" -#include "radio/src/telemetry/telemetry.cpp" -#include "radio/src/telemetry/frsky_sport.cpp" -#include "radio/src/sbus.cpp" -#include "radio/src/crc16.cpp" -#else -#include "radio/src/main_avr.cpp" -#include "radio/src/audio_avr.cpp" -#include "radio/src/pulses/pulses_avr.cpp" -#endif - -#include "radio/src/storage/storage_common.cpp" -#if defined(EEPROM_RLC) -#include "radio/src/storage/eeprom_common.cpp" -#include "radio/src/storage/eeprom_rlc.cpp" -#elif defined(EEPROM) -#include "radio/src/storage/eeprom_common.cpp" -#include "radio/src/storage/eeprom_raw.cpp" -#elif defined(SDCARD) -#include "radio/src/storage/sdcard_raw.cpp" -#endif - -#if defined(PCBTARANIS) || defined(PCBSKY9X) -#include "radio/src/storage/eeprom_conversions.cpp" -#endif - -#include "radio/src/opentx.cpp" -#include "radio/src/debug.cpp" -#include "radio/src/strhelpers.cpp" -#include "radio/src/switches.cpp" -#include "radio/src/functions.cpp" -#include "radio/src/curves.cpp" -#include "radio/src/mixer.cpp" -#if defined(SDCARD) -#include "radio/src/sdcard.cpp" -#endif -#include "radio/src/timers.cpp" -#include "radio/src/stamp.cpp" -#include "radio/src/maths.cpp" -#include "radio/src/vario.cpp" -#include "radio/src/trainer_input.cpp" - -#if defined(PCBHORUS) -#include "radio/src/gui/horus/bitmapbuffer.cpp" -#include "radio/src/gui/horus/bitmaps.cpp" -#include "radio/src/gui/horus/curves.cpp" -#include "radio/src/gui/horus/fonts.cpp" -#include "radio/src/gui/horus/widgets.cpp" -#include "radio/src/gui/horus/navigation.cpp" -#include "radio/src/gui/horus/popups.cpp" -#include "radio/src/gui/horus/helpers.cpp" -#include "radio/src/gui/horus/menus.cpp" -#include "radio/src/gui/horus/menu_model.cpp" -#include "radio/src/gui/horus/menu_model_select.cpp" -#include "radio/src/gui/horus/menu_model_setup.cpp" -#include "radio/src/gui/horus/menu_model_heli.cpp" -#include "radio/src/gui/horus/menu_model_flightmodes.cpp" -#include "radio/src/gui/horus/menu_model_inputs.cpp" -#include "radio/src/gui/horus/menu_model_mixes.cpp" -#include "radio/src/gui/horus/menu_model_curves.cpp" -#include "radio/src/gui/horus/menu_model_logical_switches.cpp" -#include "radio/src/gui/horus/menu_model_custom_functions.cpp" -#include "radio/src/gui/horus/menu_model_custom_scripts.cpp" -#include "radio/src/gui/horus/menu_model_gvars.cpp" -#include "radio/src/gui/horus/menu_model_limits.cpp" -#include "radio/src/gui/horus/menu_model_telemetry.cpp" -#include "radio/src/gui/horus/menu_general.cpp" -#include "radio/src/gui/horus/menu_general_setup.cpp" -#include "radio/src/gui/horus/menu_general_sdmanager.cpp" -#include "radio/src/gui/horus/menu_general_trainer.cpp" -#include "radio/src/gui/horus/menu_general_version.cpp" -#include "radio/src/gui/horus/menu_general_hardware.cpp" -#include "radio/src/gui/horus/menu_general_calib.cpp" -#include "radio/src/gui/horus/screens_setup.cpp" -#include "radio/src/gui/horus/view_main.cpp" -#include "radio/src/gui/horus/view_statistics.cpp" -#include "radio/src/gui/horus/view_channels.cpp" -#include "radio/src/gui/horus/view_text.cpp" -#include "radio/src/gui/horus/view_about.cpp" -#include "radio/src/gui/horus/lcd.cpp" -#include "radio/src/gui/horus/splash.cpp" -#include "radio/src/gui/horus/topbar.cpp" -#include "radio/src/gui/horus/theme.cpp" -#include "radio/src/gui/horus/layout.cpp" -#include "radio/src/gui/horus/widget.cpp" -#include "radio/src/gui/horus/themes/default.cpp" -#include "radio/src/gui/horus/themes/darkblue.cpp" -#include "radio/src/gui/horus/layouts/layout2+1.cpp" -#include "radio/src/gui/horus/layouts/layout1x1.cpp" -#include "radio/src/gui/horus/layouts/layout2x1.cpp" -#include "radio/src/gui/horus/layouts/layout2x2.cpp" -#include "radio/src/gui/horus/layouts/layout2x4.cpp" -#include "radio/src/gui/horus/widgets/gauge.cpp" -#include "radio/src/gui/horus/widgets/modelbmp.cpp" -#include "radio/src/gui/horus/widgets/text.cpp" -#include "radio/src/gui/horus/widgets/timer.cpp" -#include "radio/src/gui/horus/widgets/value.cpp" -#elif defined(PCBFLAMENCO) -#include "radio/src/gui/Flamenco/fonts.cpp" -#include "radio/src/gui/Flamenco/widgets.cpp" -#include "radio/src/gui/Flamenco/navigation.cpp" -#include "radio/src/gui/Flamenco/popups.cpp" -#include "radio/src/gui/Flamenco/helpers.cpp" -#include "radio/src/gui/Flamenco/menus.cpp" -#include "radio/src/gui/Flamenco/menu_model.cpp" -#include "radio/src/gui/Flamenco/menu_model_select.cpp" -#include "radio/src/gui/Flamenco/menu_model_setup.cpp" -#include "radio/src/gui/Flamenco/menu_model_heli.cpp" -#include "radio/src/gui/Flamenco/menu_model_flightmodes.cpp" -#include "radio/src/gui/Flamenco/menu_model_inputs_mixes.cpp" -#include "radio/src/gui/Flamenco/menu_model_curves.cpp" -#include "radio/src/gui/Flamenco/menu_model_logical_switches.cpp" -#include "radio/src/gui/Flamenco/menu_model_custom_functions.cpp" -// #include "radio/src/gui/Flamenco/menu_model_custom_scripts.cpp" -#include "radio/src/gui/Flamenco/menu_model_gvars.cpp" -#include "radio/src/gui/Flamenco/menu_model_limits.cpp" -#include "radio/src/gui/Flamenco/menu_model_telemetry.cpp" -#include "radio/src/gui/Flamenco/menu_general.cpp" -#include "radio/src/gui/Flamenco/menu_general_setup.cpp" -#include "radio/src/gui/Flamenco/menu_general_sdmanager.cpp" -#include "radio/src/gui/Flamenco/menu_general_trainer.cpp" -#include "radio/src/gui/Flamenco/menu_general_version.cpp" -// #include "radio/src/gui/Flamenco/menu_general_hardware.cpp" -#include "radio/src/gui/Flamenco/menu_general_calib.cpp" -#include "radio/src/gui/Flamenco/view_main.cpp" -#include "radio/src/gui/Flamenco/view_statistics.cpp" -#include "radio/src/gui/Flamenco/view_channels.cpp" -#include "radio/src/gui/Flamenco/view_telemetry.cpp" -#include "radio/src/gui/Flamenco/view_text.cpp" -#include "radio/src/gui/Flamenco/view_about.cpp" -#include "radio/src/gui/Flamenco/lcd.cpp" -#include "radio/src/gui/Flamenco/splash.cpp" -#include "radio/src/targets/flamenco/tw8823_driver.cpp" -#elif defined(PCBTARANIS) -#include "radio/src/gui/taranis/bmp.cpp" -#include "radio/src/gui/taranis/fonts.cpp" -#include "radio/src/gui/taranis/widgets.cpp" -#include "radio/src/gui/taranis/navigation.cpp" -#include "radio/src/gui/taranis/popups.cpp" -#include "radio/src/gui/taranis/helpers.cpp" -#include "radio/src/gui/taranis/menus.cpp" -#include "radio/src/gui/taranis/menu_model.cpp" -#include "radio/src/gui/taranis/menu_model_select.cpp" -#include "radio/src/gui/taranis/menu_model_setup.cpp" -#include "radio/src/gui/taranis/menu_model_heli.cpp" -#include "radio/src/gui/taranis/menu_model_flightmodes.cpp" -#include "radio/src/gui/taranis/menu_model_inputs.cpp" -#include "radio/src/gui/taranis/menu_model_mixes.cpp" -#include "radio/src/gui/taranis/menu_model_curves.cpp" -#include "radio/src/gui/taranis/menu_model_logical_switches.cpp" -#include "radio/src/gui/taranis/menu_model_custom_functions.cpp" -#include "radio/src/gui/taranis/menu_model_custom_scripts.cpp" -#include "radio/src/gui/taranis/menu_model_gvars.cpp" -#include "radio/src/gui/taranis/menu_model_limits.cpp" -#include "radio/src/gui/taranis/menu_model_telemetry.cpp" -#include "radio/src/gui/taranis/menu_general.cpp" -#include "radio/src/gui/taranis/menu_general_setup.cpp" -#include "radio/src/gui/taranis/menu_general_sdmanager.cpp" -#include "radio/src/gui/taranis/menu_general_trainer.cpp" -#include "radio/src/gui/taranis/menu_general_version.cpp" -#include "radio/src/gui/taranis/menu_general_diagkeys.cpp" -#include "radio/src/gui/taranis/menu_general_diaganas.cpp" -#include "radio/src/gui/taranis/menu_general_hardware.cpp" -#include "radio/src/gui/taranis/menu_general_calib.cpp" -#include "radio/src/gui/taranis/view_main.cpp" -#include "radio/src/gui/taranis/view_statistics.cpp" -#include "radio/src/gui/taranis/view_channels.cpp" -#include "radio/src/gui/taranis/view_telemetry.cpp" -#include "radio/src/gui/taranis/view_text.cpp" -#include "radio/src/gui/taranis/view_about.cpp" -#include "radio/src/gui/taranis/lcd.cpp" -#include "radio/src/gui/taranis/splash.cpp" -#else -#include "radio/src/gui/9x/fonts.cpp" -#include "radio/src/gui/9x/widgets.cpp" -#include "radio/src/gui/9x/navigation.cpp" -#include "radio/src/gui/9x/popups.cpp" -#include "radio/src/gui/9x/helpers.cpp" -#include "radio/src/gui/9x/menus.cpp" -#include "radio/src/gui/9x/menu_model.cpp" -#include "radio/src/gui/9x/menu_model_select.cpp" -#include "radio/src/gui/9x/menu_model_setup.cpp" -#include "radio/src/gui/9x/menu_model_heli.cpp" -#include "radio/src/gui/9x/menu_model_flightmodes.cpp" -#include "radio/src/gui/9x/menu_model_inputs_mixes.cpp" -#include "radio/src/gui/9x/menu_model_curves.cpp" -#include "radio/src/gui/9x/menu_model_logical_switches.cpp" -#include "radio/src/gui/9x/menu_model_custom_functions.cpp" -#include "radio/src/gui/9x/menu_model_limits.cpp" -#include "radio/src/gui/9x/menu_model_telemetry.cpp" -#include "radio/src/gui/9x/menu_model_templates.cpp" -#include "radio/src/gui/9x/menu_general.cpp" -#include "radio/src/gui/9x/menu_general_setup.cpp" -#if defined(SDCARD) -#include "radio/src/gui/9x/menu_general_sdmanager.cpp" -#include "radio/src/gui/9x/view_text.cpp" -#endif -#include "radio/src/gui/9x/menu_general_trainer.cpp" -#include "radio/src/gui/9x/menu_general_version.cpp" -#include "radio/src/gui/9x/menu_general_diagkeys.cpp" -#include "radio/src/gui/9x/menu_general_diaganas.cpp" -#if defined(CPUARM) -#include "radio/src/gui/9x/menu_general_hardware.cpp" -#endif -#include "radio/src/gui/9x/menu_general_calib.cpp" -#include "radio/src/gui/9x/view_main.cpp" -#include "radio/src/gui/9x/view_statistics.cpp" -#include "radio/src/gui/9x/view_telemetry.cpp" -#if !defined(CPUM64) -#include "radio/src/gui/9x/view_about.cpp" -#endif -#include "radio/src/gui/9x/lcd.cpp" -#include "radio/src/gui/9x/splash.cpp" -#endif - -#if !defined(VIRTUALINPUTS) -#include "radio/src/templates.cpp" -#endif - -#if defined(SDCARD) -#include "radio/src/logs.cpp" -#endif - -#if defined(RTCLOCK) -#include "radio/src/rtc.cpp" -#endif - -#if defined(BUZZER) -#include "radio/src/buzzer.cpp" -#endif - -#if defined(PCBHORUS) -#include "radio/src/targets/horus/board_horus.cpp" -#include "radio/src/targets/horus/keys_driver.cpp" -#include "radio/src/targets/horus/audio_driver.cpp" -#include "radio/src/targets/horus/telemetry_driver.cpp" -#include "radio/src/targets/horus/haptic_driver.cpp" -#include "radio/src/targets/horus/pulses_driver.cpp" -#include "radio/src/targets/taranis/rtc_driver.cpp" -#include "radio/src/targets/horus/trainer_driver.cpp" -#include "radio/src/targets/horus/serial2_driver.cpp" -#elif defined(PCBFLAMENCO) -#include "radio/src/targets/flamenco/board_flamenco.cpp" -#include "radio/src/targets/flamenco/keys_driver.cpp" -#include "radio/src/targets/flamenco/audio_driver.cpp" -#include "radio/src/targets/flamenco/telemetry_driver.cpp" -#include "radio/src/targets/flamenco/eeprom_driver.cpp" -// #include "radio/src/targets/flamenco/haptic_driver.cpp" -#include "radio/src/targets/flamenco/pulses_driver.cpp" -#include "radio/src/targets/flamenco/rtc_driver.cpp" -#include "radio/src/targets/flamenco/trainer_driver.cpp" -#elif defined(PCBTARANIS) -#include "radio/src/targets/taranis/board_taranis.cpp" -#include "radio/src/targets/taranis/keys_driver.cpp" -#include "radio/src/targets/taranis/audio_driver.cpp" -#include "radio/src/targets/taranis/telemetry_driver.cpp" -#include "radio/src/targets/taranis/haptic_driver.cpp" -#include "radio/src/targets/taranis/pulses_driver.cpp" -#include "radio/src/targets/taranis/rtc_driver.cpp" -#include "radio/src/targets/taranis/trainer_driver.cpp" -#include "radio/src/targets/taranis/serial2_driver.cpp" -#elif defined(PCBSKY9X) -#include "radio/src/targets/sky9x/board_sky9x.cpp" -#include "radio/src/targets/sky9x/telemetry_driver.cpp" -#include "radio/src/targets/sky9x/pwr_driver.cpp" -#include "radio/src/targets/sky9x/eeprom_driver.cpp" -#include "radio/src/targets/sky9x/keys_driver.cpp" -#include "radio/src/targets/sky9x/audio_driver.cpp" -#include "radio/src/targets/sky9x/sdcard_driver.cpp" -#include "radio/src/targets/sky9x/coproc_driver.cpp" -#include "radio/src/targets/sky9x/haptic_driver.cpp" -#include "radio/src/targets/sky9x/serial2_driver.cpp" -#include "radio/src/targets/sky9x/pulses_driver.cpp" -#elif defined(PCBGRUVIN9X) -#include "radio/src/targets/gruvin9x/board_gruvin9x.cpp" -#include "radio/src/targets/gruvin9x/somo14d.cpp" -#elif defined(PCBMEGA2560) -#include "radio/src/targets/mega2560/board_mega2560.cpp" -#else -#include "radio/src/targets/9x/board_stock.cpp" -#endif - -#if defined(CPUARM) -#include "radio/src/gui/gui_helpers.cpp" -#endif - -#include "radio/src/keys.cpp" -#include "radio/src/haptic.cpp" -#include "radio/src/targets/simu/simpgmspace.cpp" -#include "radio/src/translations.cpp" -#include "radio/src/telemetry/frsky.cpp" - -#if defined(CPUARM) - #include "radio/src/telemetry/frsky_d_arm.cpp" -#else - #include "radio/src/telemetry/frsky_d.cpp" -#endif -#include "radio/src/translations/tts_en.cpp" - -#if defined(CPUARM) -#include "radio/src/translations/tts_cz.cpp" -#include "radio/src/translations/tts_de.cpp" -#include "radio/src/translations/tts_es.cpp" -#include "radio/src/translations/tts_fr.cpp" -#include "radio/src/translations/tts_hu.cpp" -#include "radio/src/translations/tts_it.cpp" -#include "radio/src/translations/tts_nl.cpp" -#include "radio/src/translations/tts_pl.cpp" -#include "radio/src/translations/tts_pt.cpp" -#include "radio/src/translations/tts_se.cpp" -#include "radio/src/translations/tts_sk.cpp" -#endif - -#if defined(LUA) -#include "radio/src/lua/interface.cpp" -#include "radio/src/lua/api_general.cpp" -#include "radio/src/lua/api_lcd.cpp" -#include "radio/src/lua/api_model.cpp" -#include "radio/src/thirdparty/Lua/src/lapi.c" -#include "radio/src/thirdparty/Lua/src/lcode.c" -#include "radio/src/thirdparty/Lua/src/lctype.c" -#include "radio/src/thirdparty/Lua/src/ldebug.c" -#include "radio/src/thirdparty/Lua/src/ldo.c" -#include "radio/src/thirdparty/Lua/src/ldump.c" -#include "radio/src/thirdparty/Lua/src/lfunc.c" -#include "radio/src/thirdparty/Lua/src/lgc.c" -#include "radio/src/thirdparty/Lua/src/llex.c" -#include "radio/src/thirdparty/Lua/src/lmem.c" -#include "radio/src/thirdparty/Lua/src/lobject.c" -#include "radio/src/thirdparty/Lua/src/lopcodes.c" -#include "radio/src/thirdparty/Lua/src/lparser.c" -#include "radio/src/thirdparty/Lua/src/lstate.c" -#include "radio/src/thirdparty/Lua/src/lstring.c" -#include "radio/src/thirdparty/Lua/src/ltable.c" -#include "radio/src/thirdparty/Lua/src/lrotable.c" -#include "radio/src/thirdparty/Lua/src/ltm.c" -#include "radio/src/thirdparty/Lua/src/lundump.c" -#include "radio/src/thirdparty/Lua/src/lvm.c" -#include "radio/src/thirdparty/Lua/src/lzio.c" -#include "radio/src/thirdparty/Lua/src/lbaselib.c" -#include "radio/src/thirdparty/Lua/src/linit.c" -#include "radio/src/thirdparty/Lua/src/lmathlib.c" -#include "radio/src/thirdparty/Lua/src/lbitlib.c" -#include "radio/src/thirdparty/Lua/src/loadlib.c" -#include "radio/src/thirdparty/Lua/src/lauxlib.c" -#include "radio/src/thirdparty/Lua/src/ltablib.c" -#include "radio/src/thirdparty/Lua/src/lcorolib.c" -#include "radio/src/thirdparty/Lua/src/liolib.c" -#include "radio/src/thirdparty/Lua/src/lstrlib.c" -#endif - -int16_t g_anas[NUM_STICKS+NUM_POTS]; - -uint16_t getAnalogValue(uint8_t index) -{ - return g_anas[index] << 1; -} - -uint16_t anaIn(uint8_t chan) -{ - return g_anas[chan]; -} - -bool hasExtendedTrims() -{ - return g_model.extendedTrims; -} - -uint8_t getStickMode() -{ - return limit(0, g_eeGeneral.stickMode, 3); -} - -#if defined(PCBTARANIS) -void resetTrims() -{ - TRIMS_GPIO_REG_RVD |= TRIMS_GPIO_PIN_RVD; - TRIMS_GPIO_REG_RVU |= TRIMS_GPIO_PIN_RVU; - TRIMS_GPIO_REG_RHL |= TRIMS_GPIO_PIN_RHL; - TRIMS_GPIO_REG_RHR |= TRIMS_GPIO_PIN_RHR; - TRIMS_GPIO_REG_LVD |= TRIMS_GPIO_PIN_LVD; - TRIMS_GPIO_REG_LVU |= TRIMS_GPIO_PIN_LVU; - TRIMS_GPIO_REG_LHL |= TRIMS_GPIO_PIN_LHL; - TRIMS_GPIO_REG_LHR |= TRIMS_GPIO_PIN_LHR; -} -#endif - -void delay_01us(::uint16_t nb) -{ -} - -OpenTxSimulator::OpenTxSimulator() -{ -} - -void OpenTxSimulator::setSdPath(const QString &sdPath) -{ -#if defined(SDCARD) - strncpy(simuSdDirectory, sdPath.toLatin1().constData(), sizeof(simuSdDirectory)-1); - simuSdDirectory[sizeof(simuSdDirectory)-1] = '\0'; -#endif -} - -void OpenTxSimulator::setVolumeGain(int value) -{ - volumeGain = value; -} - -bool OpenTxSimulator::timer10ms() -{ -#define TIMER10MS_IMPORT -#include "simulatorimport.h" -} - -::uint8_t * OpenTxSimulator::getLcd() -{ - return (::uint8_t *)simuLcdBuf; -} - -bool OpenTxSimulator::lcdChanged(bool & lightEnable) -{ -#define LCDCHANGED_IMPORT -#include "simulatorimport.h" -} - -void OpenTxSimulator::start(QByteArray & eeprom, bool tests) -{ - memcpy(NAMESPACE::eeprom, eeprom.data(), std::min(sizeof(NAMESPACE::eeprom), eeprom.size())); - start((const char *)0, tests); -} - -void OpenTxSimulator::start(const char * filename, bool tests) -{ -#if defined(PCBSKY9X) && !defined(REVX) - g_rotenc[0] = 0; -#elif defined(PCBGRUVIN9X) - g_rotenc[0] = 0; - g_rotenc[1] = 0; -#endif - - StartEepromThread(filename); - StartAudioThread(volumeGain); - StartSimu(tests); -} - -void OpenTxSimulator::stop() -{ - StopSimu(); -#if defined(CPUARM) - StopAudioThread(); -#endif - StopEepromThread(); -} - -void OpenTxSimulator::getValues(TxOutputs &outputs) -{ -#define GETVALUES_IMPORT -#define g_chans512 channelOutputs -#include "simulatorimport.h" -#if defined(PCBSKY9X) - outputs.beep = g_beepCnt; - g_beepCnt = 0; -#endif -} - -void OpenTxSimulator::setValues(TxInputs &inputs) -{ -#define SETVALUES_IMPORT -#include "simulatorimport.h" -} - -void OpenTxSimulator::setTrim(unsigned int idx, int value) -{ - idx = NAMESPACE::modn12x3[4*getStickMode() + idx]; - ::uint8_t phase = getTrimFlightPhase(getFlightMode(), idx); - setTrimValue(phase, idx, value); -} - -void OpenTxSimulator::getTrims(Trims & trims) -{ - ::uint8_t phase = getFlightMode(); - trims.extended = hasExtendedTrims(); - for (::uint8_t idx=0; idx<4; idx++) { - trims.values[idx] = getTrimValue(getTrimFlightPhase(phase, idx), idx); - } - - for (int i=0; i<2; i++) { - ::uint8_t idx = NAMESPACE::modn12x3[4*getStickMode() + i]; - ::int16_t tmp = trims.values[i]; - trims.values[i] = trims.values[idx]; - trims.values[idx] = tmp; - } -} - -void OpenTxSimulator::wheelEvent(int steps) -{ -#if defined(PCBHORUS) || defined(PCBFLAMENCO) - if (steps > 0) - rotencValue -= 2; - else - rotencValue += 2; -#elif defined(REV9E) - if (steps == 255) - rotencValue -= 2; - else - rotencValue += 2; -#elif defined(PCBSKY9X) && !defined(REVX) - g_rotenc[0] += steps*4; -#elif defined(PCBGRUVIN9X) - g_rotenc[0] += steps; -#endif -} - -unsigned int OpenTxSimulator::getPhase() -{ - return getFlightMode(); -} - -const char * OpenTxSimulator::getPhaseName(unsigned int phase) -{ - static char buff[sizeof(g_model.flightModeData[0].name)+1]; - zchar2str(buff, g_model.flightModeData[phase].name, sizeof(g_model.flightModeData[0].name)); - return buff; -} - -const char * OpenTxSimulator::getError() -{ -#define GETERROR_IMPORT -#include "simulatorimport.h" -} - -void OpenTxSimulator::sendTelemetry(::uint8_t * data, unsigned int len) -{ -#if defined(FRSKY_SPORT) - processSportPacket(data); -#endif -} - -uint8_t OpenTxSimulator::getSensorInstance(uint16_t id, uint8_t defaultValue) -{ -#if defined(FRSKY_SPORT) - for (int i = 0; iid == id) { - return sensor->instance; - } - } - } -#endif - return defaultValue; -} - -uint16_t OpenTxSimulator::getSensorRatio(uint16_t id) -{ -#if defined(FRSKY_SPORT) - for (int i = 0; iid == id) { - return sensor->custom.ratio; - } - } - } -#endif - return 0; -} - -void OpenTxSimulator::setTrainerInput(unsigned int inputNumber, ::int16_t value) -{ -#define SETTRAINER_IMPORT -#include "simulatorimport.h" -} - -void OpenTxSimulator::setLuaStateReloadPermanentScripts() -{ -#if defined(LUA) - luaState = INTERPRETER_RELOAD_PERMANENT_SCRIPTS; -#endif -} - -void OpenTxSimulator::installTraceHook(void (*callback)(const char *)) -{ - traceCallback = callback; -} - -class OpenTxSimulatorFactory: public SimulatorFactory -{ - public: - OpenTxSimulatorFactory() - { - } - - virtual SimulatorInterface *create() - { - return new OpenTxSimulator(); - } - - virtual QString name() - { - return QString("opentx-" FLAVOUR SUFFIX); - } - - virtual BoardEnum type() - { -#if defined(PCBHORUS) - return BOARD_HORUS; -#elif defined(PCBFLAMENCO) - return BOARD_FLAMENCO; -#elif defined(PCBTARANIS) - return BOARD_TARANIS; -#else - return BOARD_STOCK; -#endif - } -}; - -} - -extern "C" DLLEXPORT SimulatorFactory *registerSimu() -{ - return new NAMESPACE::OpenTxSimulatorFactory(); -} diff --git a/companion/src/simulation/simulatorinterface.h b/companion/src/simulation/simulatorinterface.h index 1f45eb212..af7ed710b 100644 --- a/companion/src/simulation/simulatorinterface.h +++ b/companion/src/simulation/simulatorinterface.h @@ -14,8 +14,8 @@ * */ -#ifndef simulator_interface_h -#define simulator_interface_h +#ifndef _SIMULATOR_INTERFACE_H_ +#define _SIMULATOR_INTERFACE_H_ #include "constants.h" #include @@ -128,4 +128,4 @@ void unregisterSimulators(); SimulatorFactory *getSimulatorFactory(const QString &name); extern QMap registered_simulators; -#endif +#endif // _SIMULATOR_INTERFACE_H_ diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index be4671002..1bdd5c8d4 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -2,6 +2,7 @@ include(CMakeForceCompiler) include(Bitmaps) set(PCB "TARANIS" CACHE STRING "Radio type") +set(TRANSLATIONS "EN" CACHE STRING "Radio language") option(HELI "Heli menu" ON) option(FLIGHT_MODES "Flight Modes" ON) option(CURVES "Curves" ON) @@ -32,6 +33,8 @@ set(RADIO_BIN_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) set(GUI_LANGUAGES cz de en es fr it pt sk se pl hu) # TODO add nl set(TTS_LANGUAGES cz de en es fr it pt sk se pl hu) # TODO add nl +configure_file(stamp.h.in stamp.h @ONLY) + add_subdirectory(translations) add_subdirectory(bitmaps) add_subdirectory(lua) @@ -877,8 +880,8 @@ endforeach() add_definitions(-DCORRECT_NEGATIVE_SHIFTS) add_definitions(-Wall -Wno-strict-aliasing -Wformat -Wreturn-type -Wunused -Wuninitialized -Wunknown-pragmas -Wno-switch -Wtype-limits) +add_subdirectory(targets/simu) if(NOT WIN32) - add_subdirectory(targets/simu) add_subdirectory(tests) endif() diff --git a/radio/src/targets/simu/CMakeLists.txt b/radio/src/targets/simu/CMakeLists.txt index 24273d186..e7c1dfefe 100644 --- a/radio/src/targets/simu/CMakeLists.txt +++ b/radio/src/targets/simu/CMakeLists.txt @@ -1,13 +1,50 @@ -set(SRC ${SRC} simu.cpp targets/simu/simpgmspace.cpp) foreach(FILE ${SRC}) set(SIMU_SRC ${SIMU_SRC} ../../${FILE}) endforeach() +set(SIMU_SRC ${SIMU_SRC} simpgmspace.cpp) + add_definitions(-DSIMU -g) remove_definitions(-DCLI) -add_executable(simu WIN32 ${SIMU_SRC}) -add_dependencies(simu ${FIRMWARE_DEPENDENCIES}) +string(TOLOWER ${TRANSLATIONS} TRANSLATION_LOWERCASE) +set(SIMULATOR_FLAVOUR opentx-${FLAVOUR}-${TRANSLATION_LOWERCASE}) +set(SIMULATOR_TARGET ${SIMULATOR_FLAVOUR}-simulator) +add_definitions(-DSIMULATOR_FLAVOUR="${SIMULATOR_FLAVOUR}") +include_directories(${COMPANION_SRC_DIRECTORY} ${COMPANION_SRC_DIRECTORY}/simulation) +add_library(${SIMULATOR_TARGET} SHARED ${SIMU_SRC} opentxsimulator.cpp) +add_dependencies(${SIMULATOR_TARGET} ${FIRMWARE_DEPENDENCIES}) +qt5_use_modules(${SIMULATOR_TARGET} Core) + +add_custom_target(opentx-simulator DEPENDS ${SIMULATOR_TARGET}) + +if(NOT WIN32) + add_executable(simu WIN32 ${SIMU_SRC} ../../simu.cpp) + add_dependencies(simu ${FIRMWARE_DEPENDENCIES}) + target_include_directories(simu PUBLIC /usr/local/include/fox-1.6 PUBLIC /usr/include/fox-1.6 /opt/local/include/fox-1.6) + target_link_libraries(simu FOX-1.6 pthread) +endif() + +if(APPLE) + # OS X compiler no longer automatically includes /Library/Frameworks in search path + set(CMAKE_SHARED_LINKER_FLAGS -F/Library/Frameworks) + + set(SIMULATOR_BUNDLES) + foreach(library ${OPENTX_LIBRARIES}) + set(SIMULATOR_BUNDLE "${library}-bundle") + add_custom_target(${SIMULATOR_BUNDLE} + COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore lib${library}.dylib + COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork lib${library}.dylib + COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtXml.framework/Versions/4/QtXml @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml lib${library}.dylib + COMMAND install_name_tool -change /opt/local/Library/Frameworks/QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui lib${library}.dylib + COMMAND install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL lib${library}.dylib + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMAND pwd + COMMAND cp lib${library}.dylib companion.app/Contents/Resources/ + DEPENDS ${library} + ) + list(APPEND SIMULATOR_BUNDLES ${SIMULATOR_BUNDLE}) + endforeach() + add_custom_target(opentx-simulators-bundle DEPENDS ${SIMULATOR_BUNDLES}) +endif(APPLE) -target_include_directories(simu PUBLIC /usr/local/include/fox-1.6 PUBLIC /usr/include/fox-1.6 /opt/local/include/fox-1.6) -target_link_libraries(simu FOX-1.6 pthread) \ No newline at end of file diff --git a/radio/src/targets/simu/opentxsimulator.cpp b/radio/src/targets/simu/opentxsimulator.cpp new file mode 100644 index 000000000..8d8d23cb7 --- /dev/null +++ b/radio/src/targets/simu/opentxsimulator.cpp @@ -0,0 +1,280 @@ +/* + * Author - Bertrand Songis + * + * Based on th9x -> http://code.google.com/p/th9x/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include "opentxsimulator.h" +#include "opentx.h" + +int16_t g_anas[NUM_STICKS+NUM_POTS]; + +uint16_t anaIn(uint8_t chan) +{ + return g_anas[chan]; +} + +bool hasExtendedTrims() +{ + return g_model.extendedTrims; +} + +uint8_t getStickMode() +{ + return limit(0, g_eeGeneral.stickMode, 3); +} + +#if defined(PCBTARANIS) +void resetTrims() +{ + TRIMS_GPIO_REG_RVD |= TRIMS_GPIO_PIN_RVD; + TRIMS_GPIO_REG_RVU |= TRIMS_GPIO_PIN_RVU; + TRIMS_GPIO_REG_RHL |= TRIMS_GPIO_PIN_RHL; + TRIMS_GPIO_REG_RHR |= TRIMS_GPIO_PIN_RHR; + TRIMS_GPIO_REG_LVD |= TRIMS_GPIO_PIN_LVD; + TRIMS_GPIO_REG_LVU |= TRIMS_GPIO_PIN_LVU; + TRIMS_GPIO_REG_LHL |= TRIMS_GPIO_PIN_LHL; + TRIMS_GPIO_REG_LHR |= TRIMS_GPIO_PIN_LHR; +} +#endif + +OpenTxSimulator::OpenTxSimulator() +{ +} + +void OpenTxSimulator::setSdPath(const QString &sdPath) +{ +#if defined(SDCARD) + strncpy(simuSdDirectory, sdPath.toLatin1().constData(), sizeof(simuSdDirectory)-1); + simuSdDirectory[sizeof(simuSdDirectory)-1] = '\0'; +#endif +} + +void OpenTxSimulator::setVolumeGain(int value) +{ + volumeGain = value; +} + +bool OpenTxSimulator::timer10ms() +{ +#define TIMER10MS_IMPORT +#include "simulatorimport.h" +} + +uint8_t * OpenTxSimulator::getLcd() +{ + return (uint8_t *)simuLcdBuf; +} + +bool OpenTxSimulator::lcdChanged(bool & lightEnable) +{ +#define LCDCHANGED_IMPORT +#include "simulatorimport.h" +} + +void OpenTxSimulator::start(QByteArray & ee, bool tests) +{ + memcpy(eeprom, ee.data(), std::min(EESIZE_SIMU, ee.size())); + start((const char *)0, tests); +} + +void OpenTxSimulator::start(const char * filename, bool tests) +{ +#if defined(PCBSKY9X) && !defined(REVX) + g_rotenc[0] = 0; +#elif defined(PCBGRUVIN9X) + g_rotenc[0] = 0; + g_rotenc[1] = 0; +#endif + + StartEepromThread(filename); + StartAudioThread(volumeGain); + StartSimu(tests); +} + +void OpenTxSimulator::stop() +{ + StopSimu(); +#if defined(CPUARM) + StopAudioThread(); +#endif + StopEepromThread(); +} + +void OpenTxSimulator::getValues(TxOutputs &outputs) +{ +#define GETVALUES_IMPORT +#define g_chans512 channelOutputs +#include "simulatorimport.h" +#if defined(PCBSKY9X) + outputs.beep = g_beepCnt; + g_beepCnt = 0; +#endif +} + +void OpenTxSimulator::setValues(TxInputs &inputs) +{ +#define SETVALUES_IMPORT +#include "simulatorimport.h" +} + +void OpenTxSimulator::setTrim(unsigned int idx, int value) +{ + idx = modn12x3[4*getStickMode() + idx]; + uint8_t phase = getTrimFlightPhase(getFlightMode(), idx); + setTrimValue(phase, idx, value); +} + +void OpenTxSimulator::getTrims(Trims & trims) +{ + uint8_t phase = getFlightMode(); + trims.extended = hasExtendedTrims(); + for (uint8_t idx=0; idx<4; idx++) { + trims.values[idx] = getTrimValue(getTrimFlightPhase(phase, idx), idx); + } + + for (int i=0; i<2; i++) { + uint8_t idx = modn12x3[4*getStickMode() + i]; + int16_t tmp = trims.values[i]; + trims.values[i] = trims.values[idx]; + trims.values[idx] = tmp; + } +} + +void OpenTxSimulator::wheelEvent(int steps) +{ +#if defined(PCBHORUS) || defined(PCBFLAMENCO) + if (steps > 0) + rotencValue -= 2; + else + rotencValue += 2; +#elif defined(REV9E) + if (steps == 255) + rotencValue -= 2; + else + rotencValue += 2; +#elif defined(PCBSKY9X) && !defined(REVX) + g_rotenc[0] += steps*4; +#elif defined(PCBGRUVIN9X) + g_rotenc[0] += steps; +#endif +} + +unsigned int OpenTxSimulator::getPhase() +{ + return getFlightMode(); +} + +const char * OpenTxSimulator::getPhaseName(unsigned int phase) +{ + static char buff[sizeof(g_model.flightModeData[0].name)+1]; + zchar2str(buff, g_model.flightModeData[phase].name, sizeof(g_model.flightModeData[0].name)); + return buff; +} + +const char * OpenTxSimulator::getError() +{ +#define GETERROR_IMPORT +#include "simulatorimport.h" +} + +void OpenTxSimulator::sendTelemetry(uint8_t * data, unsigned int len) +{ +#if defined(FRSKY_SPORT) + processSportPacket(data); +#endif +} + +uint8_t OpenTxSimulator::getSensorInstance(uint16_t id, uint8_t defaultValue) +{ +#if defined(FRSKY_SPORT) + for (int i = 0; iid == id) { + return sensor->instance; + } + } + } +#endif + return defaultValue; +} + +uint16_t OpenTxSimulator::getSensorRatio(uint16_t id) +{ +#if defined(FRSKY_SPORT) + for (int i = 0; iid == id) { + return sensor->custom.ratio; + } + } + } +#endif + return 0; +} + +void OpenTxSimulator::setTrainerInput(unsigned int inputNumber, int16_t value) +{ +#define SETTRAINER_IMPORT +#include "simulatorimport.h" +} + +void OpenTxSimulator::setLuaStateReloadPermanentScripts() +{ +#if defined(LUA) + luaState = INTERPRETER_RELOAD_PERMANENT_SCRIPTS; +#endif +} + +void OpenTxSimulator::installTraceHook(void (*callback)(const char *)) +{ + traceCallback = callback; +} + +class OpenTxSimulatorFactory: public SimulatorFactory +{ + public: + OpenTxSimulatorFactory() + { + } + + virtual SimulatorInterface *create() + { + return new OpenTxSimulator(); + } + + virtual QString name() + { + return QString(SIMULATOR_FLAVOUR); + } + + virtual BoardEnum type() + { +#if defined(PCBHORUS) + return BOARD_HORUS; +#elif defined(PCBFLAMENCO) + return BOARD_FLAMENCO; +#elif defined(PCBTARANIS) + return BOARD_TARANIS; +#else + return BOARD_STOCK; +#endif + } +}; + +extern "C" DLLEXPORT SimulatorFactory * registerSimu() +{ + return new OpenTxSimulatorFactory(); +} diff --git a/companion/src/firmwares/opentx/simulator/opentxsimulator.h b/radio/src/targets/simu/opentxsimulator.h similarity index 51% rename from companion/src/firmwares/opentx/simulator/opentxsimulator.h rename to radio/src/targets/simu/opentxsimulator.h index 1ad89aaf7..98a9b4ea2 100644 --- a/companion/src/firmwares/opentx/simulator/opentxsimulator.h +++ b/radio/src/targets/simu/opentxsimulator.h @@ -1,6 +1,6 @@ /* * Author - Bertrand Songis - * + * * Based on th9x -> http://code.google.com/p/th9x/ * * This program is free software; you can redistribute it and/or modify @@ -14,79 +14,17 @@ * */ -#ifndef opentx_taranis_simulator_h -#define opentx_taranis_simulator_h +#ifndef _OPENTX_SIMULATOR_H_ +#define _OPENTX_SIMULATOR_H_ #include "simulatorinterface.h" -#if defined(PCBHORUS) - #define FLAVOUR "horus" - #define NAMESPACE HORUS - #define EEPROM_VARIANT 0 -#elif defined(PCBFLAMENCO) - #define FLAVOUR "flamenco" - #define NAMESPACE FLAMENCO - #define EEPROM_VARIANT 0 -#elif defined(PCBTARANIS) && defined(REV9E) - #define FLAVOUR "taranisx9e" - #define NAMESPACE TaranisX9E - #define EEPROM_VARIANT 0x8000 -#elif defined(PCBTARANIS) && defined(REVPLUS) - #define FLAVOUR "taranisplus" - #define NAMESPACE TaranisPlus - #define EEPROM_VARIANT 0 -#elif defined(PCBTARANIS) - #define FLAVOUR "taranis" - #define NAMESPACE Taranis - #define EEPROM_VARIANT 0 -#elif defined(PCBSKY9X) && defined(REVX) - #define FLAVOUR "9xrpro" - #define NAMESPACE Sky9xPro - #define EEPROM_VARIANT 0 -#elif defined(PCBSKY9X) && defined(AR9X) - #define FLAVOUR "ar9x" - #define NAMESPACE Ar9x - #define EEPROM_VARIANT 0 -#elif defined(PCBSKY9X) - #define FLAVOUR "sky9x" - #define NAMESPACE Sky9X - #define EEPROM_VARIANT 0 -#elif defined(PCBGRUVIN9X) - #define FLAVOUR "gruvin9x" - #define NAMESPACE Gruvin9X - #define EEPROM_VARIANT 0 -#elif defined(PCBMEGA2560) - #define FLAVOUR "mega2560" - #define NAMESPACE Mega2560 - #define EEPROM_VARIANT 0 -#elif defined(PCB9XR) && defined(CPUM128) - #define FLAVOUR "9xr128" - #define NAMESPACE M128XR - #define EEPROM_VARIANT 0x8003 -#elif defined(PCB9X) && defined(CPUM128) - #define FLAVOUR "9x128" - #define NAMESPACE M128 - #define EEPROM_VARIANT 0x8003 -#elif defined(PCB9XR) && defined(CPUM64) - #define FLAVOUR "9xr" - #define NAMESPACE M64XR - #define EEPROM_VARIANT 0x0003 -#elif defined(PCB9X) && defined(CPUM64) - #define FLAVOUR "9x" - #define NAMESPACE M64 - #define EEPROM_VARIANT 0x0003 -#else -#error "Unknown board" -#endif - #if defined __GNUC__ #define DLLEXPORT #else #define DLLEXPORT __declspec(dllexport) #endif -namespace NAMESPACE { - class DLLEXPORT OpenTxSimulator : public SimulatorInterface { private: @@ -141,6 +79,4 @@ class DLLEXPORT OpenTxSimulator : public SimulatorInterface { virtual void setLuaStateReloadPermanentScripts(); }; -} - -#endif +#endif // _OPENTX_SIMULATOR_H_ diff --git a/radio/src/targets/simu/simpgmspace.h b/radio/src/targets/simu/simpgmspace.h index c1e6c17bd..217790a73 100644 --- a/radio/src/targets/simu/simpgmspace.h +++ b/radio/src/targets/simu/simpgmspace.h @@ -369,7 +369,7 @@ void StopEepromThread(); #define EESIZE_SIMU EESIZE #endif -extern uint8_t eeprom[EESIZE_SIMU]; +extern uint8_t eeprom[]; extern const char * eepromFile; void eepromReadBlock (uint8_t * pointer_ram, uint32_t address, uint32_t size);