support for other modules & protocols
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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++);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -301,6 +301,19 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
@@ -535,6 +548,19 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
@@ -577,7 +603,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_multiProtocol">
|
||||
<property name="text">
|
||||
<string>Multi Radio Protocol</string>
|
||||
@@ -587,7 +613,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="multiProtocol">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
@@ -600,14 +626,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_multiSubType">
|
||||
<property name="text">
|
||||
<string>Sub Type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="multiSubType">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
@@ -620,7 +646,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_failsafeMode">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
@@ -636,7 +662,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<item row="5" column="1">
|
||||
<widget class="QComboBox" name="failsafeMode">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
@@ -674,7 +700,7 @@
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_trainerMode">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
@@ -690,7 +716,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="QComboBox" name="trainerMode">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
@@ -728,7 +754,7 @@
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QLabel" name="warning_r9mFlex">
|
||||
<property name="palette">
|
||||
<palette>
|
||||
@@ -772,6 +798,39 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="registrationIdLabel">
|
||||
<property name="text">
|
||||
<string>Registration ID</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="registrationId">
|
||||
<property name="inputMask">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="3">
|
||||
|
||||
Reference in New Issue
Block a user