From a3ab20fe4b65b07c52429444832b40408acf6dcf Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 16 Jul 2023 03:05:56 +0200 Subject: [PATCH] feat: Rationalise module size handling (#3624) * Rationalise module size handling * Compile fix * DSM2 and DSMP exist only in JR size * XJT Lite and R9MP require usart * Fix comment * Enable no external module choice * Save some flash * TProV2 does have a small module * T20 has a small module * chore: Define managed by cmake * fix: X9D+2019 has a JR Micro bay --------- Co-authored-by: Peter Feerick --- radio/src/gui/gui_common.cpp | 11 +++++--- radio/src/targets/common/arm/CMakeLists.txt | 30 ++++++++++++--------- radio/src/targets/horus/CMakeLists.txt | 1 + radio/src/targets/nv14/CMakeLists.txt | 1 + radio/src/targets/taranis/CMakeLists.txt | 25 +++++++++++++++-- radio/src/targets/taranis/hal.h | 9 ------- 6 files changed, 50 insertions(+), 27 deletions(-) diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 9ea8e33af..694749e7c 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -889,13 +889,18 @@ bool isExternalModuleAvailable(int moduleType) return false; #endif -#if !defined(XJT) - if (moduleType == MODULE_TYPE_XJT_PXX1) +#if defined(HARDWARE_EXTERNAL_MODULE_SIZE_SML) and !defined(EXTMODULE_USART_GPIO) + if (moduleType == MODULE_TYPE_XJT_LITE_PXX2 || + moduleType == MODULE_TYPE_R9M_PXX2) return false; #endif #if !defined(HARDWARE_EXTERNAL_MODULE_SIZE_STD) - if (moduleType == MODULE_TYPE_R9M_PXX1 || moduleType == MODULE_TYPE_R9M_PXX2) + if (moduleType == MODULE_TYPE_R9M_PXX1 || + moduleType == MODULE_TYPE_R9M_PXX2 || + moduleType == MODULE_TYPE_XJT_PXX1 || + moduleType == MODULE_TYPE_DSM2 || + moduleType == MODULE_TYPE_LEMON_DSMP ) return false; #endif diff --git a/radio/src/targets/common/arm/CMakeLists.txt b/radio/src/targets/common/arm/CMakeLists.txt index 84f96c267..1695eccfd 100644 --- a/radio/src/targets/common/arm/CMakeLists.txt +++ b/radio/src/targets/common/arm/CMakeLists.txt @@ -10,7 +10,6 @@ option(TRACE_FATFS "Traces FatFS enabled" OFF) option(TRACE_AUDIO "Traces audio enabled" OFF) option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF) option(XJT "XJT TX Module" ON) -option(MODULE_SIZE_STD "Standard size TX Module" ON) option(PPM "PPM TX Module" ON) option(DSM2 "DSM2 TX Module" ON) option(SBUS "SBUS TX Module" ON) @@ -78,10 +77,27 @@ if(DEFAULT_INTERNAL_MODULE) add_definitions(-DDEFAULT_INTERNAL_MODULE=MODULE_TYPE_${DEFAULT_INTERNAL_MODULE}) endif() +if(MODULE_SIZE_STD) + add_definitions(-DHARDWARE_EXTERNAL_MODULE_SIZE_STD) +endif() + +if(MODULE_SIZE_SML) + add_definitions(-DHARDWARE_EXTERNAL_MODULE_SIZE_SML) +endif() + +if(NOT MODULE_SIZE_STD AND NOT MODULE_SIZE_SML) + set(HARDWARE_EXTERNAL_MODULE NO) + set(GHOST NO) +endif() + if(HARDWARE_EXTERNAL_MODULE) add_definitions(-DHARDWARE_EXTERNAL_MODULE) endif() +if(MULTIMODULE STREQUAL INTERNAL) + add_definitions(-DINTERNAL_MODULE_MULTI) +endif() + if(TIMERS EQUAL 3) add_definitions(-DTIMERS=3) else() @@ -209,18 +225,6 @@ if(PXX2) ) endif() -if(XJT) - add_definitions(-DXJT) -endif() - -if(MODULE_SIZE_STD) - add_definitions(-DHARDWARE_EXTERNAL_MODULE_SIZE_STD) -endif() - -if(MULTIMODULE STREQUAL INTERNAL) - add_definitions(-DINTERNAL_MODULE_MULTI) -endif() - if(MULTIMODULE) add_definitions(-DMULTIMODULE) set(SRC ${SRC} pulses/multi.cpp telemetry/hitec.cpp telemetry/hott.cpp telemetry/mlink.cpp telemetry/multi.cpp io/multi_firmware_update.cpp) diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 15be3cc23..72b94f274 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -7,6 +7,7 @@ option(AFHDS3 "AFHDS3 TX Module" ON) option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" ON) option(GHOST "Ghost TX Module" ON) option(SPACEMOUSE "Support for SpaceMouse" OFF) +option(MODULE_SIZE_STD "Standard size TX Module" ON) set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(CPU_TYPE STM32F4) diff --git a/radio/src/targets/nv14/CMakeLists.txt b/radio/src/targets/nv14/CMakeLists.txt index ab8bd29af..8f8914a6f 100644 --- a/radio/src/targets/nv14/CMakeLists.txt +++ b/radio/src/targets/nv14/CMakeLists.txt @@ -6,6 +6,7 @@ option(AFHDS2 "Support for AFHDS2" ON) option(GHOST "Ghost TX Module" ON) option(PXX1 "PXX1 protocol support" ON) option(PXX2 "PXX2 protocol support" OFF) +option(MODULE_SIZE_STD "Standard size TX Module" ON) set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(CPU_TYPE STM32F4) diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 0f250cf56..225689bd3 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -42,6 +42,7 @@ if(PCB STREQUAL X9E) set(STATUS_LEDS NO) set(BLUETOOTH YES) set(ROTARY_ENCODER YES) + set(MODULE_SIZE_STD YES) add_definitions(-DMANUFACTURER_FRSKY) elseif(PCB STREQUAL X9D+) set(HAPTIC YES) @@ -71,12 +72,14 @@ elseif(PCB STREQUAL X9D+) set(BLUETOOTH YES) set(ROTARY_ENCODER YES) set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_STD YES) else() set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") set(FLAVOUR x9d+) set(CPU_TYPE_FULL STM32F205xE) set(AUX_SERIAL ON) set(STATUS_LEDS NO) + set(MODULE_SIZE_STD YES) endif() elseif(PCB STREQUAL X9D) set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") @@ -95,7 +98,7 @@ elseif(PCB STREQUAL X9D) set(GVAR_SCREEN model_gvars.cpp) set(STATUS_LEDS NO) add_definitions(-DMANUFACTURER_FRSKY) - #set(AFHDS3 NO) + set(MODULE_SIZE_STD YES) elseif(PCB STREQUAL X7) set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(HAPTIC YES) @@ -111,6 +114,7 @@ elseif(PCB STREQUAL X7) if(PCBREV STREQUAL T12) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_STD YES) set(FLAVOUR t12) set(NAVIGATION_TYPE 9x) set(CPU_TYPE_FULL STM32F205xE) @@ -121,6 +125,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL TPRO) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR tpro) set(NAVIGATION_TYPE x7) set(ROTARY_ENCODER YES) @@ -133,6 +138,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL TPROV2) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR tprov2) set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) @@ -141,9 +147,10 @@ elseif(PCB STREQUAL X7) add_definitions(-DRADIO_TPROV2) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") - elseif(PCBREV STREQUAL T20) + elseif(PCBREV STREQUAL T20) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR t20) set(NAVIGATION_TYPE x7) set(ROTARY_ENCODER YES) @@ -155,6 +162,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL TLITE) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR tlite) set(NAVIGATION_TYPE 9x) set(CPU_TYPE_FULL STM32F205xE) @@ -166,6 +174,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL TLITEF4) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") 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 @@ -177,6 +186,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL LR3PRO) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR lr3pro) set(NAVIGATION_TYPE 9x) set(CPU_TYPE_FULL STM32F205xE) @@ -187,6 +197,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL TX12) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_STD YES) set(FLAVOUR tx12) set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F205xE) @@ -199,6 +210,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL TX12MK2) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_STD YES) set(FLAVOUR tx12mk2) set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) @@ -215,6 +227,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL BOXER) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR boxer) set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) @@ -231,6 +244,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL ZORRO) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR zorro) set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) @@ -262,6 +276,7 @@ elseif(PCB STREQUAL X7) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) set(HARDWARE_EXTERNAL_MODULE YES) + set(MODULE_SIZE_SML YES) set(FLAVOUR commando8) set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) @@ -274,6 +289,7 @@ elseif(PCB STREQUAL X7) elseif(PCBREV STREQUAL ACCESS) set(DEFAULT_INTERNAL_MODULE ISRM_PXX2 CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_STD YES) set(FLAVOUR x7access) set(NAVIGATION_TYPE x7) set(CPU_TYPE_FULL STM32F407xE) @@ -297,6 +313,7 @@ elseif(PCB STREQUAL X7) set(BLUETOOTH YES) add_definitions(-DBLUETOOTH_PROBE) set(ROTARY_ENCODER YES) + set(MODULE_SIZE_STD YES) add_definitions(-DMANUFACTURER_FRSKY) if(DEFINED PCBREV_HARDCODED) # This *can* be used to prevent messing with PA14 (SWCLK), so stlink can be used @@ -310,6 +327,7 @@ elseif(PCB STREQUAL X7) elseif(PCB STREQUAL X9LITE) set(DEFAULT_INTERNAL_MODULE ISRM_PXX2 CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(PXX_FREQUENCY "HIGH") set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(CPU_TYPE_FULL STM32F205xE) @@ -333,6 +351,7 @@ elseif(PCB STREQUAL X9LITE) elseif(PCB STREQUAL X9LITES) set(DEFAULT_INTERNAL_MODULE ISRM_PXX2 CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(PXX_FREQUENCY "HIGH") set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(CPU_TYPE_FULL STM32F205xE) @@ -357,6 +376,7 @@ elseif(PCB STREQUAL X9LITES) elseif(PCB STREQUAL XLITE) set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(PXX_FREQUENCY "HIGH" CACHE STRING "PXX frequency (LOW / HIGH)") # always use HIGH except on some prototype boards set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(CPU_TYPE STM32F2) @@ -380,6 +400,7 @@ elseif(PCB STREQUAL XLITE) elseif(PCB STREQUAL XLITES) set(DEFAULT_INTERNAL_MODULE ISRM_PXX2 CACHE STRING "Default internal module") set(INTERNAL_MODULE_SERIAL YES) + set(MODULE_SIZE_SML YES) set(PXX_FREQUENCY "HIGH") set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(CPU_TYPE_FULL STM32F205xE) diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 9e0b40eeb..16cd94a2a 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -1948,16 +1948,11 @@ #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #define EXTMODULE_PWR_GPIO GPIOD #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08 - #if defined(RADIO_ZORRO) - #define HARDWARE_EXTERNAL_MODULE_SIZE_SML - #endif #elif defined(PCBX9LITE) - #define HARDWARE_EXTERNAL_MODULE_SIZE_SML #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2) #define EXTMODULE_PWR_GPIO GPIOA #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PA.08 #else - #define HARDWARE_EXTERNAL_MODULE_SIZE_SML #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #define EXTMODULE_PWR_GPIO GPIOD #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_11 // PD.11 @@ -1994,9 +1989,6 @@ #define EXTMODULE_USART_RX_DMA_STREAM DMA2_Stream1 #define EXTMODULE_USART_RX_DMA_STREAM_LL LL_DMA_STREAM_1 #else - #if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TLITE) - #define HARDWARE_EXTERNAL_MODULE_SIZE_SML - #endif #define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #if defined(RADIO_COMMANDO8) #define EXTMODULE_RF_SWITCH_GPIO GPIOE //Antenna switching port @@ -2010,7 +2002,6 @@ #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_1 // PB.01 #define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) #define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) - #define HARDWARE_EXTERNAL_MODULE_SIZE_SML #else #define EXTMODULE_PWR_GPIO GPIOD #define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08