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 <peter.feerick@gmail.com>
This commit is contained in:
3djc
2023-07-16 11:05:56 +10:00
committed by GitHub
co-authored by Peter Feerick
parent b1609eb484
commit a3ab20fe4b
6 changed files with 50 additions and 27 deletions
+8 -3
View File
@@ -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
+17 -13
View File
@@ -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)
+1
View File
@@ -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)
+1
View File
@@ -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)
+23 -2
View File
@@ -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)
-9
View File
@@ -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