Allow R9M 2019 in ACCESS mode on some radios (#7963)
Support for external R9M ACCESS
This commit is contained in:
@@ -763,7 +763,7 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port)
|
||||
case PULSES_GHOST:
|
||||
return true;
|
||||
case PULSES_ACCESS_R9M:
|
||||
return IS_ACCESS_RADIO(board, id);
|
||||
return IS_ACCESS_RADIO(board, id) || (IS_FAMILY_HORUS_OR_T16(board) && id.contains("externalaccessmod"));
|
||||
case PULSES_PXX_R9M_LITE:
|
||||
case PULSES_ACCESS_R9M_LITE:
|
||||
case PULSES_ACCESS_R9M_LITE_PRO:
|
||||
@@ -1232,6 +1232,7 @@ void registerOpenTxFirmwares()
|
||||
firmware = new OpenTxFirmware("opentx-x10", Firmware::tr("FrSky Horus X10 / X10S"), BOARD_X10);
|
||||
addOpenTxFrskyOptions(firmware);
|
||||
firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement"));
|
||||
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
|
||||
registerOpenTxFirmware(firmware);
|
||||
addOpenTxRfOptions(firmware, EU + FLEX);
|
||||
|
||||
@@ -1245,6 +1246,7 @@ void registerOpenTxFirmwares()
|
||||
firmware = new OpenTxFirmware("opentx-x12s", Firmware::tr("FrSky Horus X12S"), BOARD_HORUS_X12S);
|
||||
addOpenTxFrskyOptions(firmware);
|
||||
firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement"));
|
||||
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
|
||||
firmware->addOption("pcbdev", Firmware::tr("Use ONLY with first DEV pcb version"));
|
||||
registerOpenTxFirmware(firmware);
|
||||
addOpenTxRfOptions(firmware, EU + FLEX);
|
||||
@@ -1265,6 +1267,7 @@ void registerOpenTxFirmwares()
|
||||
addOpenTxFrskyOptions(firmware);
|
||||
firmware->addOption("internalmulti", Firmware::tr("Support for MULTI internal module"));
|
||||
firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module"));
|
||||
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
|
||||
addOpenTxRfOptions(firmware, FLEX);
|
||||
registerOpenTxFirmware(firmware);
|
||||
|
||||
@@ -1275,12 +1278,14 @@ void registerOpenTxFirmwares()
|
||||
static const Firmware::Option opt_bt("bluetooth", Firmware::tr("Support for bluetooth module"));
|
||||
static const Firmware::Option opt_internal_gps("internalgps", Firmware::tr("Support internal GPS"));
|
||||
firmware->addOptionsGroup({opt_bt, opt_internal_gps});
|
||||
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
|
||||
registerOpenTxFirmware(firmware);
|
||||
|
||||
/* Jumper T18 board */
|
||||
firmware = new OpenTxFirmware("opentx-t18", Firmware::tr("Jumper T18"), BOARD_JUMPER_T18);
|
||||
addOpenTxFrskyOptions(firmware);
|
||||
firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module"));
|
||||
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
|
||||
registerOpenTxFirmware(firmware);
|
||||
addOpenTxRfOptions(firmware, FLEX);
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ enum TrainerMode {
|
||||
TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE,
|
||||
TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE,
|
||||
#endif
|
||||
#if defined(PCBTARANIS) || defined(AUX_SERIAL)
|
||||
#if defined(PCBTARANIS) || defined(AUX_SERIAL) || defined(AUX2_SERIAL)
|
||||
TRAINER_MODE_MASTER_BATTERY_COMPARTMENT,
|
||||
#endif
|
||||
TRAINER_MODE_MASTER_BLUETOOTH,
|
||||
|
||||
@@ -92,6 +92,17 @@ bool menuRadioModulesVersion(event_t event)
|
||||
y += FH;
|
||||
continue;
|
||||
}
|
||||
#if defined(HARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
if (isModuleMultimodule(INTERNAL_MODULE)) {
|
||||
char statusText[64];
|
||||
lcdDrawText(COLUMN2_X, y, "Multimodule");
|
||||
y += FH;
|
||||
getMultiModuleStatus(INTERNAL_MODULE).getStatusString(statusText);
|
||||
lcdDrawText(COLUMN2_X, y, statusText);
|
||||
y += FH;
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
if (!isModulePXX2(INTERNAL_MODULE)) {
|
||||
lcdDrawText(COLUMN2_X, y, STR_NO_INFORMATION);
|
||||
y += FH;
|
||||
|
||||
@@ -26,6 +26,9 @@ static const char * const options[] = {
|
||||
#if defined(AUTOUPDATE)
|
||||
"autoupdate",
|
||||
#endif
|
||||
#if defined(BLUETOOTH)
|
||||
"bluetooth",
|
||||
#endif
|
||||
#if defined(CROSSFIRE)
|
||||
"crossfire",
|
||||
#endif
|
||||
@@ -91,6 +94,9 @@ static const char * const options[] = {
|
||||
#endif
|
||||
#if defined(SHUTDOWN_CONFIRMATION)
|
||||
"shutdownconfirm",
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
"externalaccessmod",
|
||||
#endif
|
||||
nullptr //sentinel
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@ option(PXX2 "PXX2 protocol support" OFF)
|
||||
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(HARDWARE_EXTERNAL_ACCESS_MOD "Support for R9M 2019 hardware mod" OFF)
|
||||
|
||||
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
|
||||
set(CPU_TYPE STM32F4)
|
||||
@@ -139,6 +140,12 @@ if(NOT UNEXPECTED_SHUTDOWN)
|
||||
add_definitions(-DNO_UNEXPECTED_SHUTDOWN)
|
||||
endif()
|
||||
|
||||
if(HARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
set(PXX2 ON)
|
||||
set(AUX_SERIAL OFF)
|
||||
add_definitions(-DHARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
endif()
|
||||
|
||||
if(INTERNAL_MODULE_PXX1)
|
||||
add_definitions(-DHARDWARE_INTERNAL_MODULE)
|
||||
add_definitions(-DINTERNAL_MODULE_PXX1)
|
||||
|
||||
@@ -635,8 +635,8 @@ void sportUpdatePowerInit();
|
||||
#endif
|
||||
|
||||
// Aux serial port driver
|
||||
#if defined(AUX_SERIAL_GPIO)
|
||||
#define DEBUG_BAUDRATE 115200
|
||||
#if defined(AUX_SERIAL_GPIO)
|
||||
extern uint8_t auxSerialMode;
|
||||
void auxSerialInit(unsigned int mode, unsigned int protocol);
|
||||
void auxSerialPutc(char c);
|
||||
|
||||
@@ -402,7 +402,7 @@
|
||||
#endif
|
||||
|
||||
// Serial Port (DEBUG)
|
||||
#if defined(PCBX12S) || defined(RADIO_TX16S)
|
||||
#if (defined(PCBX12S) || defined(RADIO_TX16S)) && !defined(HARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
#define AUX_SERIAL_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
|
||||
#define AUX_SERIAL_RCC_APB1Periph RCC_APB1Periph_USART3
|
||||
#define AUX_SERIAL_RCC_APB2Periph 0
|
||||
@@ -762,7 +762,7 @@
|
||||
#define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_9 // PI.09
|
||||
#endif
|
||||
#define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN);
|
||||
#if defined(PCBX10) || PCBREV >= 13
|
||||
#if (defined(PCBX10) || PCBREV >= 13) && !defined(HARDWARE_EXTERNAL_ACCESS_MOD) //TIM2 used by ext mod
|
||||
#define INTMODULE_RCC_APB1Periph RCC_APB1Periph_TIM2
|
||||
#define INTMODULE_RCC_APB2Periph RCC_APB2Periph_USART1
|
||||
#define INTMODULE_TIMER TIM2
|
||||
@@ -782,7 +782,7 @@
|
||||
#define EXTMODULE_PWR_GPIO GPIOB
|
||||
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_3 // PB.03
|
||||
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
|
||||
#if defined(PCBX10) && defined(PCBREV_EXPRESS)
|
||||
#if (defined(PCBX10) && defined(PCBREV_EXPRESS)) || defined(HARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
|
||||
#define EXTMODULE_RCC_APB1Periph (RCC_APB1Periph_TIM2 | RCC_APB1Periph_USART3)
|
||||
#define EXTMODULE_RCC_APB2Periph 0
|
||||
@@ -861,7 +861,7 @@
|
||||
#define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line12
|
||||
#define INTMODULE_HEARTBEAT_EXTI_IRQn EXTI15_10_IRQn
|
||||
#define INTMODULE_HEARTBEAT_REUSE_INTERRUPT_ROTARY_ENCODER
|
||||
#if defined(PXX2)
|
||||
#if defined(INTERNAL_MODULE_PXX2)
|
||||
#define INTMODULE_HEARTBEAT_TRIGGER EXTI_Trigger_Falling
|
||||
#else
|
||||
#define INTMODULE_HEARTBEAT_TRIGGER EXTI_Trigger_Rising
|
||||
|
||||
@@ -139,8 +139,13 @@ void checkTrainerSettings()
|
||||
stop_intmodule_heartbeat();
|
||||
else
|
||||
init_intmodule_heartbeat();
|
||||
#else
|
||||
#if defined(HARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
if (g_model.moduleData[EXTERNAL_MODULE].type != MODULE_TYPE_R9M_PXX2) // externalaccessmod 'bridges' HB and Ext module RX pins
|
||||
init_intmodule_heartbeat();
|
||||
#else
|
||||
init_intmodule_heartbeat();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,6 +229,7 @@ options_jumper_t16 = {
|
||||
"flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None),
|
||||
"internalmulti": ("INTERNAL_MODULE_MULTI", "YES", "NO"),
|
||||
"bluetooth": ("BLUETOOTH", "YES", "NO"),
|
||||
"externalaccessmod": ("HARDWARE_EXTERNAL_ACCESS_MOD", "YES", "NO"),
|
||||
}
|
||||
|
||||
options_jumper_t18 = {
|
||||
@@ -254,4 +255,5 @@ options_radiomaster_tx16s = {
|
||||
"flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None),
|
||||
"bluetooth": ("BLUETOOTH", "YES", "NO"),
|
||||
"internalgps": ("INTERNAL_GPS", "YES", "NO"),
|
||||
"externalaccessmod": ("HARDWARE_EXTERNAL_ACCESS_MOD", "YES", "NO"),
|
||||
}
|
||||
Reference in New Issue
Block a user