diff --git a/radio/src/gui/CMakeLists.txt b/radio/src/gui/CMakeLists.txt index b16fd4b58..836ad3cff 100644 --- a/radio/src/gui/CMakeLists.txt +++ b/radio/src/gui/CMakeLists.txt @@ -5,10 +5,8 @@ if(NOT GUI_DIR STREQUAL colorlcd) set(SRC ${SRC} gui/navigation/common.cpp - gui/navigation/navigation_${NAVIGATION_TYPE}.cpp + gui/navigation/navigation.cpp ) - string(TOUPPER ${NAVIGATION_TYPE} NAVIGATION_TYPE) - add_definitions(-DNAVIGATION_${NAVIGATION_TYPE}) endif() set(SRC diff --git a/radio/src/gui/navigation/navigation.cpp b/radio/src/gui/navigation/navigation.cpp new file mode 100644 index 000000000..fd9c78011 --- /dev/null +++ b/radio/src/gui/navigation/navigation.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * 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 "opentx.h" + +#if defined(NAVIGATION_X9D) + #include "navigation_x9d.cpp" +#elif defined(NAVIGATION_9X) + #include "navigation_9x.cpp" +#elif defined(NAVIGATION_XLITE) + #include "navigation_xlite" +#elif defined(NAVIGATION_X7) + #include "navigation_x7.cpp" +#else + static_assert("navigation not defined"); +#endif diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 75bddbc22..88c18a374 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -97,13 +97,25 @@ enum RotaryEncoderMode { #define CASE_JACK_DETECT(x) #endif - #include "debug.h" - #include "myeeprom.h" #include "curves.h" +// Define navigation type based on available keys +#if LCD_W == 212 + #define NAVIGATION_X9D +#elif defined(KEYS_GPIO_REG_LEFT) + #define NAVIGATION_9X +#elif defined(KEYS_GPIO_REG_SHIFT) + #define NAVIGATION_XLITE +#elif defined(KEYS_GPIO_REG_PAGEUP) && defined(KEYS_GPIO_REG_TELE) + #define NAVIGATION_X7 + #define NAVIGATION_X7_TX12 +#else + #define NAVIGATION_X7 +#endif + void memswap(void * a, void * b, uint8_t size); // TODO: move these config check macros somewhere else diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index fe062ba5b..139b0fc9c 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -33,7 +33,6 @@ if(PCB STREQUAL X9E) endif() set(GUI_DIR 212x64) set(BITMAPS_DIR 212x64) - set(NAVIGATION_TYPE x9d) set(BITMAPS_TARGET taranis_bitmaps) set(FONTS_TARGET taranis_fonts) set(LCD_DRIVER lcd_driver_spi.cpp) @@ -49,7 +48,6 @@ elseif(PCB STREQUAL X9D+) add_definitions(-DEEPROM_VARIANT=0) set(GUI_DIR 212x64) set(BITMAPS_DIR 212x64) - set(NAVIGATION_TYPE x9d) set(BITMAPS_TARGET taranis_bitmaps) set(FONTS_TARGET taranis_fonts) set(LCD_DRIVER lcd_driver_spi.cpp) @@ -90,7 +88,6 @@ elseif(PCB STREQUAL X9D) add_definitions(-DEEPROM_VARIANT=0) set(GUI_DIR 212x64) set(BITMAPS_DIR 212x64) - set(NAVIGATION_TYPE x9d) set(BITMAPS_TARGET taranis_bitmaps) set(FONTS_TARGET taranis_fonts) set(LCD_DRIVER lcd_driver_aspi.cpp) @@ -116,7 +113,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_STD YES) set(FLAVOUR t12) - set(NAVIGATION_TYPE 9x) set(CPU_TYPE_FULL STM32F205xE) add_definitions(-DRADIO_T12) add_definitions(-DRADIO_FAMILY_JUMPER_T12) @@ -127,7 +123,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR tpro) - set(NAVIGATION_TYPE x7) set(ROTARY_ENCODER YES) set(CPU_TYPE_FULL STM32F205xE) add_definitions(-DFUNCTION_SWITCHES) @@ -140,7 +135,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR tprov2) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER YES) add_definitions(-DFUNCTION_SWITCHES) @@ -152,7 +146,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR t14) - set(NAVIGATION_TYPE x7) set(ROTARY_ENCODER YES) set(CPU_TYPE_FULL STM32F407xG) set(PXX2 ON) @@ -164,7 +157,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR t20) - set(NAVIGATION_TYPE x7) set(ROTARY_ENCODER YES) set(CPU_TYPE_FULL STM32F407xE) set(FLYSKY_GIMBAL ON) @@ -178,7 +170,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR t20v2) - set(NAVIGATION_TYPE x7) set(ROTARY_ENCODER YES) set(CPU_TYPE_FULL STM32F407xG) set(FLYSKY_GIMBAL ON) @@ -193,7 +184,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR tlite) - set(NAVIGATION_TYPE 9x) set(CPU_TYPE_FULL STM32F205xE) add_definitions(-DRADIO_TLITE) add_definitions(-DRADIO_FAMILY_JUMPER_T12) @@ -205,7 +195,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR tlitef4) - set(NAVIGATION_TYPE 9x) set(CPU_TYPE_FULL STM32F407xE) # for size report add_definitions(-DRADIO_TLITE) add_definitions(-DRADIO_FAMILY_JUMPER_T12) @@ -217,7 +206,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR lr3pro) - set(NAVIGATION_TYPE 9x) set(CPU_TYPE_FULL STM32F205xE) add_definitions(-DRADIO_LR3PRO) add_definitions(-DRADIO_FAMILY_JUMPER_T12) @@ -228,7 +216,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_STD YES) set(FLAVOUR tx12) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F205xE) set(ROTARY_ENCODER YES) set(BLUETOOTH NO) @@ -241,7 +228,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_STD YES) set(FLAVOUR tx12mk2) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) @@ -258,7 +244,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR mt12) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(BLUETOOTH NO) @@ -278,7 +263,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_STD YES) set(FLAVOUR boxer) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) @@ -295,7 +279,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR zorro) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) @@ -312,7 +295,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_SML YES) set(FLAVOUR pocket) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) @@ -328,7 +310,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(HARDWARE_EXTERNAL_MODULE NO) set(FLAVOUR t8) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F205xE) set(ROTARY_ENCODER NO) set(BLUETOOTH NO) @@ -344,7 +325,6 @@ elseif(PCB STREQUAL X7) set(HARDWARE_EXTERNAL_MODULE YES) set(MODULE_SIZE_SML YES) set(FLAVOUR commando8) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER NO) set(BLUETOOTH NO) @@ -357,7 +337,6 @@ elseif(PCB STREQUAL X7) set(INTERNAL_MODULE_SERIAL YES) set(MODULE_SIZE_STD YES) set(FLAVOUR x7access) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) add_definitions(-DRADIO_X7ACCESS) add_definitions(-DEEPROM_VARIANT=0x4000) @@ -372,7 +351,6 @@ elseif(PCB STREQUAL X7) else() set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") set(FLAVOUR x7) - set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F205xE) add_definitions(-DRADIO_X7) add_definitions(-DEEPROM_VARIANT=0x4000) @@ -406,7 +384,6 @@ elseif(PCB STREQUAL X9LITE) set(PXX2 ON) set(GUI_DIR 128x64) set(BITMAPS_DIR 128x64) - set(NAVIGATION_TYPE x7) set(BITMAPS_TARGET 9x_bitmaps) set(FONTS_TARGET 9x_fonts_1bit) set(LCD_DRIVER lcd_driver_spi.cpp) @@ -430,7 +407,6 @@ elseif(PCB STREQUAL X9LITES) set(PXX2 ON) set(GUI_DIR 128x64) set(BITMAPS_DIR 128x64) - set(NAVIGATION_TYPE x7) set(BITMAPS_TARGET 9x_bitmaps) set(FONTS_TARGET 9x_fonts_1bit) set(LCD_DRIVER lcd_driver_spi.cpp) @@ -454,7 +430,6 @@ elseif(PCB STREQUAL XLITE) set(PXX2 ON) set(GUI_DIR 128x64) set(BITMAPS_DIR 128x64) - set(NAVIGATION_TYPE xlite) set(BITMAPS_TARGET 9x_bitmaps) set(FONTS_TARGET 9x_fonts_1bit) set(LCD_DRIVER lcd_driver_spi.cpp) @@ -476,7 +451,6 @@ elseif(PCB STREQUAL XLITES) add_definitions(-DPWR_BUTTON_${PWR_BUTTON}) set(GUI_DIR 128x64) set(BITMAPS_DIR 128x64) - set(NAVIGATION_TYPE xlite) set(BITMAPS_TARGET 9x_bitmaps) set(FONTS_TARGET 9x_fonts_1bit) set(LCD_DRIVER lcd_driver_spi.cpp) diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 124558c9c..4091ea04b 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -19,8 +19,7 @@ * GNU General Public License for more details. */ -#ifndef _BOARD_H_ -#define _BOARD_H_ +#pragma once #include #include "hal.h" @@ -31,10 +30,6 @@ #include "opentx_constants.h" #include "board_common.h" -#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_MT12) - #define NAVIGATION_X7_TX12 -#endif - #if defined(ROTARY_ENCODER_NAVIGATION) // Rotary Encoder driver void rotaryEncoderInit(); @@ -430,4 +425,3 @@ void setTopBatteryValue(uint32_t volts); #define NUM_TRIMS_KEYS (NUM_TRIMS * 2) -#endif // _BOARD_H_