diff --git a/radio/src/gui/gui_common_arm.cpp b/radio/src/gui/gui_common_arm.cpp index 55418bb75..f08aa02c5 100644 --- a/radio/src/gui/gui_common_arm.cpp +++ b/radio/src/gui/gui_common_arm.cpp @@ -528,6 +528,16 @@ bool isInternalModuleAvailable(int module) bool isExternalModuleAvailable(int module) { +#if !defined(PXX1) + if (module == MODULE_TYPE_XJT) { + return false; + } +#endif +#if !defined(PXX2) + if (module == MODULE_TYPE_XJT2) { + return false; + } +#endif #if defined(CROSSFIRE) if (module == MODULE_TYPE_CROSSFIRE && g_model.moduleData[INTERNAL_MODULE].type != MODULE_TYPE_NONE) { return false; @@ -554,7 +564,6 @@ bool isExternalModuleAvailable(int module) #endif return true; - } bool isRfProtocolAvailable(int protocol) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index c0b377298..d0b74ecdd 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -434,6 +434,7 @@ static int luaSportTelemetryPush(lua_State * L) return 1; } +#if defined(CROSSFIRE) /*luadoc @function crossfireTelemetryPop() @@ -515,6 +516,7 @@ static int luaCrossfireTelemetryPush(lua_State * L) } return 1; } +#endif /*luadoc @function getFieldInfo(name) diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index 668ca071b..00f4df0a5 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -23,14 +23,9 @@ #include "definitions.h" #include "dataconstants.h" - -#if defined(PXX2) -#include "pulses/pxx2.h" -#endif - -#if defined(PXX1) +#include "pulses_common.h" #include "pulses/pxx1.h" -#endif +#include "pulses/pxx2.h" #if NUM_MODULES > 1 #define IS_RANGECHECK_ENABLE() (moduleSettings[0].mode == MODULE_MODE_RANGECHECK || moduleSettings[1].mode == MODULE_MODE_RANGECHECK) diff --git a/radio/src/targets/common/arm/CMakeLists.txt b/radio/src/targets/common/arm/CMakeLists.txt index 9b119565b..874e9bcfd 100644 --- a/radio/src/targets/common/arm/CMakeLists.txt +++ b/radio/src/targets/common/arm/CMakeLists.txt @@ -8,6 +8,9 @@ option(TRACE_FATFS "Traces FatFS enabled" OFF) option(TRACE_AUDIO "Traces audio enabled" OFF) option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF) option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" OFF) +option(CROSSFIRE "Crossfire TX Module" OFF) +option(PXX1 "PXX1 protocol support" OFF) +option(PXX2 "PXX2 protocol support" ON) option(SUPPORT_D16_EU_ONLY "XJT module only supports D16-EU and LR12-EU" OFF) # TODO rename to XJT_EU_ONLY option(DEBUG_INTERRUPTS "Count interrupts" OFF) option(DEBUG_USB_INTERRUPTS "Count individual USB interrupts" OFF) @@ -86,12 +89,43 @@ if(HAPTIC) set(TARGET_SRC ${TARGET_SRC} haptic_driver.cpp) endif() -add_definitions(-DPXX -DPXX1 -DPXX2 -DDSM2 -DSBUS -DCROSSFIRE) +# Protocols supported + +add_definitions(-DDSM2 -DSBUS) + +if(PXX1) + add_definitions(-DPXX -DPXX1) + set(PULSES_SRC + ${PULSES_SRC} + pxx1.cpp + ) +endif() + +if(PXX2) + add_definitions(-DPXX -DPXX2) + set(PULSES_SRC + ${PULSES_SRC} + pxx2.cpp + ) +endif() + if(MULTIMODULE) add_definitions(-DMULTIMODULE) set(SRC ${SRC} pulses/multi_arm.cpp telemetry/spektrum.cpp telemetry/flysky_ibus.cpp telemetry/multi.cpp) endif() +if(CROSSFIRE) + add_definitions(-DCROSSFIRE) + set(PULSES_SRC + ${PULSES_SRC} + crossfire.cpp + ) + set(SRC + ${SRC} + telemetry/crossfire.cpp + ) +endif() + add_definitions(-DCPUARM) add_definitions(-DTELEMETRY_FRSKY -DTELEMETRY_FRSKY_SPORT -DGPS) @@ -102,6 +136,7 @@ foreach(LANGUAGE ${TTS_LANGUAGES}) string(TOLOWER ${LANGUAGE} lang_lower) set(SRC ${SRC} translations/tts_${lang_lower}.cpp) endforeach() + set(SRC ${SRC} main.cpp @@ -117,16 +152,19 @@ set(SRC crc16.cpp vario.cpp ) + set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} diskio.cpp ) + set(TARGET_SRC ${TARGET_SRC} pulses_driver.cpp keys_driver.cpp telemetry_driver.cpp ) + set(FIRMWARE_SRC ${FIRMWARE_SRC} ${COOS_DIR}/kernel/core.c @@ -147,8 +185,6 @@ set(PULSES_SRC pulses.cpp ppm.cpp pxx.cpp - pxx1.cpp - pxx2.cpp dsm2.cpp sbus.cpp ) diff --git a/radio/src/targets/common/arm/stm32/CMakeLists.txt b/radio/src/targets/common/arm/stm32/CMakeLists.txt index 039fad77c..e99cde823 100644 --- a/radio/src/targets/common/arm/stm32/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/CMakeLists.txt @@ -53,6 +53,7 @@ if(DEBUG OR CLI OR USB_SERIAL) ) add_definitions(-DUSB_SERIAL) endif() + set(STM32USB_SRC ${STM32USB_SRC} STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c @@ -60,31 +61,37 @@ set(STM32USB_SRC STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c ) + set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} ../common/arm/stm32/usbd_storage_msd.cpp ) + set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} ../common/arm/stm32/usbd_hid_joystick.c ) + if(GVARS) set(GUI_SRC ${GUI_SRC} ${GVAR_SCREEN} ) endif() + set(FIRMWARE_SRC ${FIRMWARE_SRC} serial.cpp syscalls.c ) + foreach(FILE ${STM32LIB_SRC}) set(FIRMWARE_SRC ${FIRMWARE_SRC} ${STM32LIB_DIR}/${FILE} ) endforeach() + foreach(FILE ${STM32USB_SRC}) set(FIRMWARE_SRC ${FIRMWARE_SRC} @@ -94,11 +101,5 @@ endforeach() set(SRC ${SRC} - telemetry/crossfire.cpp io/bootloader_flash.cpp ) - -set(PULSES_SRC - ${PULSES_SRC} - crossfire.cpp - ) diff --git a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp index 2ac7f62ea..edbe2421f 100755 --- a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp @@ -91,6 +91,7 @@ extern "C" void INTMODULE_USART_IRQHandler(void) void intmoduleSendNextFrame() { +#if defined(PXX2) if (moduleSettings[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX2) { DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(INTMODULE_DMA_STREAM); @@ -113,5 +114,6 @@ void intmoduleSendNextFrame() DMA_Cmd(INTMODULE_DMA_STREAM, ENABLE); USART_DMACmd(INTMODULE_USART, USART_DMAReq_Tx, ENABLE); } +#endif } diff --git a/radio/src/targets/taranis/extmodule_driver.cpp b/radio/src/targets/taranis/extmodule_driver.cpp index 5d0549ba6..bed9f156a 100644 --- a/radio/src/targets/taranis/extmodule_driver.cpp +++ b/radio/src/targets/taranis/extmodule_driver.cpp @@ -284,9 +284,11 @@ void extmoduleSendNextFrame() sportSendBuffer(extmodulePulsesData.crossfire.pulses, extmodulePulsesData.crossfire.length); } #endif +#if defined(PXX2) else if (moduleSettings[EXTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX2) { sportSendBuffer(extmodulePulsesData.pxx2.getData(), extmodulePulsesData.pxx2.getSize()); } +#endif else { EXTMODULE_TIMER->DIER |= TIM_DIER_CC2IE; } diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index b80ebdf36..951c4d32e 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -86,10 +86,10 @@ const uint8_t CROSSFIRE_PERIODS[] = { 4, 16, }; -#define CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate] +#define CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate] #define CROSSFIRE_PERIOD CROSSFIRE_PERIODS[g_eeGeneral.telemetryBaudrate] #else -#define CROSSFIRE_BAUDRATE 400000 +#define CROSSFIRE_BAUDRATE 400000 #define CROSSFIRE_PERIOD 4 // 4ms #endif diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index daaf9947d..7a834a32f 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -26,9 +26,7 @@ #include "frsky.h" #endif -#if defined(CROSSFIRE) - #include "crossfire.h" -#endif +#include "crossfire.h" #if defined(MULTIMODULE) #include "spektrum.h" #include "flysky_ibus.h"