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
+
+
+
+
-