diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index cd72f01f1..4b11df7af 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -106,10 +106,11 @@ QString ModuleData::protocolToString(unsigned protocol) "FrSky PXX R9M", "FrSky PXX R9M Lite", "SBUS output at VBat", - "FrSky ACCESS ISRM", + "FrSky ACCESS ISRM", "FrSky ACCST ISRM D16", "FrSky ACCESS R9M", "FrSky ACCESS R9M Lite", - "FrSky ACCESS R9M Lite Pro" + "FrSky ACCESS R9M Lite Pro", + "FrSky XJT lite (D16)", "FrSky XJT lite (D8)", "FrSky XJT lite (LR12)" }; return CHECK_IN_ARRAY(strings, protocol); diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index d96322eab..2f940c504 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -50,9 +50,13 @@ enum PulsesProtocol { PULSES_PXX_R9M_LITE, PULSES_SBUS, PULSES_ACCESS_ISRM, + PULSES_ACCST_ISRM_D16, PULSES_ACCESS_R9M, PULSES_ACCESS_R9M_LITE, PULSES_ACCESS_R9M_LITE_PRO, + PULSES_XJT_LITE_X16, + PULSES_XJT_LITE_D8, + PULSES_XJT_LITE_LR12, PULSES_PROTOCOL_LAST }; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index b50228604..a23c439ea 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2222,7 +2222,8 @@ void OpenTxModelData::beforeExport() for (int module=0; module<2; module++) { if ((modelData.moduleData[module].protocol >= PULSES_PXX_XJT_X16 && modelData.moduleData[module].protocol <= PULSES_PXX_XJT_LR12) || - modelData.moduleData[module].protocol == PULSES_PXX_R9M) { + modelData.moduleData[module].protocol == PULSES_PXX_R9M) { + if (modelData.moduleData[module].protocol != PULSES_PXX_R9M) { subprotocols[module] = modelData.moduleData[module].protocol - PULSES_PXX_XJT_X16; } @@ -2232,7 +2233,6 @@ void OpenTxModelData::beforeExport() modelData.moduleData[module].ppm.delay = 300 + 50 * pxxByte; modelData.moduleData[module].ppm.pulsePol = modelData.moduleData[module].pxx.external_antenna; modelData.moduleData[module].ppm.outputType = modelData.moduleData[module].pxx.sport_out; - } else if (modelData.moduleData[module].protocol >= PULSES_LP45 && modelData.moduleData[module].protocol <= PULSES_DSMX) { subprotocols[module] = modelData.moduleData[module].protocol - PULSES_LP45; @@ -2247,6 +2247,9 @@ void OpenTxModelData::beforeExport() modelData.moduleData[module].ppm.outputType = modelData.moduleData[module].multi.lowPowerMode; modelData.moduleData[module].ppm.pulsePol = modelData.moduleData[module].multi.autoBindMode; } + else if (modelData.moduleData[module].protocol == PULSES_ACCST_ISRM_D16 || modelData.moduleData[module].protocol == PULSES_ACCESS_ISRM) { + subprotocols[module] = modelData.moduleData[module].protocol - PULSES_ACCESS_ISRM; + } else { subprotocols[module] = (module == 0 ? -1 : 0); } @@ -2273,7 +2276,9 @@ void OpenTxModelData::afterImport() } for (int module=0; module<2; module++) { - if (modelData.moduleData[module].protocol == PULSES_PXX_XJT_X16 || modelData.moduleData[module].protocol == PULSES_LP45) { + if (modelData.moduleData[module].protocol == PULSES_PXX_XJT_X16 + || modelData.moduleData[module].protocol == PULSES_LP45 + || modelData.moduleData[module].protocol == PULSES_ACCESS_ISRM) { if (subprotocols[module] >= 0) modelData.moduleData[module].protocol += subprotocols[module]; else diff --git a/companion/src/firmwares/opentx/opentxeeprom.h b/companion/src/firmwares/opentx/opentxeeprom.h index b421420ba..ff11a0dc3 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.h +++ b/companion/src/firmwares/opentx/opentxeeprom.h @@ -83,7 +83,8 @@ class ProtocolsConversionTable: public ConversionTable addConversion(PULSES_PXX_XJT_D8, val); addConversion(PULSES_PXX_XJT_LR12, val++); - addConversion(PULSES_ACCESS_ISRM, val++); + addConversion(PULSES_ACCESS_ISRM, val); + addConversion(PULSES_ACCST_ISRM_D16, val++); addConversion(PULSES_LP45, val); addConversion(PULSES_DSM2, val); @@ -99,6 +100,10 @@ class ProtocolsConversionTable: public ConversionTable addConversion(PULSES_ACCESS_R9M_LITE_PRO, val++); addConversion(PULSES_SBUS, val++); + + addConversion(PULSES_XJT_LITE_X16, val); + addConversion(PULSES_XJT_LITE_D8, val); + addConversion(PULSES_XJT_LITE_LR12, val++); } }; diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 72483c506..6fe953b5e 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -772,11 +772,12 @@ int OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) case PULSES_PPM: return id.contains("internalppm") ? 1 : 0; case PULSES_ACCESS_ISRM: + case PULSES_ACCST_ISRM_D16: return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 1 : 0; default: return 0; } - + case 1: switch (proto) { case PULSES_OFF: @@ -802,6 +803,10 @@ int OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) case PULSES_ACCESS_R9M_LITE: case PULSES_ACCESS_R9M_LITE_PRO: return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 1 : 0; + case PULSES_XJT_LITE_X16: + case PULSES_XJT_LITE_D8: + case PULSES_XJT_LITE_LR12: + return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)) ? 1 : 0; default: return 0; } diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 2dc74e5fe..b833eff7b 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -166,19 +166,20 @@ void TimerPanel::on_name_editingFinished() #define FAILSAFE_CHANNEL_HOLD 2000 #define FAILSAFE_CHANNEL_NOPULSE 2001 -#define MASK_PROTOCOL 1 -#define MASK_CHANNELS_COUNT 2 -#define MASK_RX_NUMBER 4 -#define MASK_CHANNELS_RANGE 8 -#define MASK_PPM_FIELDS 16 -#define MASK_FAILSAFES 32 -#define MASK_OPEN_DRAIN 64 -#define MASK_MULTIMODULE 128 -#define MASK_ANTENNA 256 -#define MASK_MULTIOPTION 512 -#define MASK_R9M 1024 -#define MASK_SBUSPPM_FIELDS 2048 -#define MASK_SUBTYPES 4096 +#define MASK_PROTOCOL (1<<0) +#define MASK_CHANNELS_COUNT (1<<1) +#define MASK_RX_NUMBER (1<<2) +#define MASK_CHANNELS_RANGE (1<<3) +#define MASK_PPM_FIELDS (1<<4) +#define MASK_FAILSAFES (1<<5) +#define MASK_OPEN_DRAIN (1<<6) +#define MASK_MULTIMODULE (1<<7) +#define MASK_ANTENNA (1<<8) +#define MASK_MULTIOPTION (1<<9) +#define MASK_R9M (1<<10) +#define MASK_SBUSPPM_FIELDS (1<<11) +#define MASK_SUBTYPES (1<<12) +#define MASK_ACCESS (1<<13) quint8 ModulePanel::failsafesValueDisplayType = ModulePanel::FAILSAFE_DISPLAY_PERCENT; @@ -232,6 +233,8 @@ ModulePanel::ModulePanel(QWidget * parent, ModelData & model, ModuleData & modul ui->btnGrpValueType->setId(ui->optUs, FAILSAFE_DISPLAY_USEC); ui->btnGrpValueType->button(failsafesValueDisplayType)->setChecked(true); + ui->registrationId->setText(model.registrationId); + setupFailsafes(); disableMouseScrolling(); @@ -257,8 +260,13 @@ bool ModulePanel::moduleHasFailsafes() { return firmware->getCapability(HasFailsafe) && ( (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_ISRM || + (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCST_ISRM_D16 || (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_XJT_X16 || - (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_R9M); + (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_R9M || + (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_R9M || + (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_R9M_LITE || + (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_R9M_LITE_PRO || + (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_XJT_LITE_X16); } void ModulePanel::setupFailsafes() @@ -364,18 +372,30 @@ void ModulePanel::update() if (moduleIdx >= 0) { mask |= MASK_PROTOCOL; switch (protocol) { - case PULSES_ACCESS_ISRM: - mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT | MASK_RX_NUMBER; - break; case PULSES_PXX_R9M: mask |= MASK_R9M | MASK_SUBTYPES; + case PULSES_ACCESS_R9M: + case PULSES_ACCESS_R9M_LITE: + case PULSES_ACCESS_R9M_LITE_PRO: + case PULSES_ACCESS_ISRM: + case PULSES_ACCST_ISRM_D16: + case PULSES_XJT_LITE_X16: + case PULSES_XJT_LITE_D8: + case PULSES_XJT_LITE_LR12: case PULSES_PXX_XJT_X16: case PULSES_PXX_XJT_D8: case PULSES_PXX_XJT_LR12: case PULSES_PXX_DJT: mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT; - if (protocol==PULSES_PXX_XJT_X16 || protocol==PULSES_PXX_XJT_LR12 || protocol==PULSES_PXX_R9M) + // ACCST Rx ID + if (protocol==PULSES_PXX_XJT_X16 || protocol==PULSES_PXX_XJT_LR12 || + protocol==PULSES_PXX_R9M || protocol==PULSES_ACCST_ISRM_D16 || + protocol==PULSES_XJT_LITE_X16 || protocol==PULSES_XJT_LITE_LR12) mask |= MASK_RX_NUMBER; + // ACCESS + else if (protocol==PULSES_ACCESS_ISRM || protocol==PULSES_ACCESS_R9M || + protocol==PULSES_ACCESS_R9M_LITE || protocol==PULSES_ACCESS_R9M_LITE_PRO) + mask |= MASK_RX_NUMBER | MASK_ACCESS; if ((IS_HORUS(board) || board == Board::BOARD_TARANIS_XLITE) && moduleIdx == 0) mask |= MASK_ANTENNA; break; @@ -492,10 +512,17 @@ void ModulePanel::update() if (mask & MASK_SUBTYPES) { unsigned numEntries = 2; // R9M FCC/EU unsigned i = 0; - if (mask & MASK_MULTIMODULE) + switch(protocol){ + case PULSES_MULTIMODULE: numEntries = (module.multi.customProto ? 8 : pdef.numSubTypes()); - else if (firmware->getCapability(HasModuleR9MFlex)) - i = 2; + break; + case PULSES_PXX_R9M: + if (firmware->getCapability(HasModuleR9MFlex)) + i = 2; + break; + default: + break; + } numEntries += i; const QSignalBlocker blocker(ui->multiSubType); ui->multiSubType->clear(); @@ -525,6 +552,21 @@ void ModulePanel::update() ui->label_option->setText(qApp->translate("Multiprotocols", qPrintable(pdef.optionsstr))); } + if (mask & MASK_ACCESS) { + if (QString(generalSettings.registrationId) == ui->registrationId->text()) { + ui->registrationIdLabel->hide(); + ui->registrationId->hide(); + } + else { + ui->registrationIdLabel->show(); + ui->registrationId->show(); + } + } + else { + ui->registrationIdLabel->hide(); + ui->registrationId->hide(); + } + // Failsafes ui->label_failsafeMode->setVisible(mask & MASK_FAILSAFES); ui->failsafeMode->setVisible(mask & MASK_FAILSAFES); diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui index 2f6426870..6d088ff1b 100644 --- a/companion/src/modeledit/setup_module.ui +++ b/companion/src/modeledit/setup_module.ui @@ -301,6 +301,19 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -535,6 +548,19 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -577,7 +603,7 @@ - + Multi Radio Protocol @@ -587,7 +613,7 @@ - + @@ -600,14 +626,14 @@ - + Sub Type - + @@ -620,7 +646,7 @@ - + @@ -636,7 +662,7 @@ - + @@ -674,7 +700,7 @@ - + @@ -690,7 +716,7 @@ - + @@ -728,7 +754,7 @@ - + @@ -772,6 +798,39 @@ + + + + Registration ID + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + +