diff --git a/companion/src/firmwares/boards.cpp b/companion/src/firmwares/boards.cpp index ee4edd921..a7896fdf4 100644 --- a/companion/src/firmwares/boards.cpp +++ b/companion/src/firmwares/boards.cpp @@ -276,15 +276,9 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) else if (IS_HORUS_X10(board)) return 5; else if (IS_HORUS_X12S(board)) - return 3; - else - return 3; - - case PotsStorage: - if (IS_HORUS(board)) return 5; else - return getCapability(board, Pots); + return 3; case FactoryInstalledPots: if (IS_TARANIS_X9(board)) @@ -300,12 +294,6 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) else return 0; - case SlidersStorage: - if (IS_HORUS_X10(board)) - return 4; - else - return getCapability(board, Sliders); - case MouseAnalogs: if (IS_HORUS(board)) return 2; @@ -313,7 +301,7 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability) return 0; case GyroAnalogs: - if (IS_HORUS_X12S(board) || IS_TARANIS_XLITES(board)) + if (IS_TARANIS_XLITES(board)) return 2; else return 0; diff --git a/companion/src/firmwares/boards.h b/companion/src/firmwares/boards.h index 545d06551..ee0c72f17 100644 --- a/companion/src/firmwares/boards.h +++ b/companion/src/firmwares/boards.h @@ -115,10 +115,8 @@ namespace Board { enum Capability { Sticks, Pots, - PotsStorage, FactoryInstalledPots, Sliders, - SlidersStorage, MouseAnalogs, GyroAnalogs, MaxAnalogs, diff --git a/companion/src/firmwares/generalsettings.h b/companion/src/firmwares/generalsettings.h index 2fb98e8e6..72cef8ccb 100644 --- a/companion/src/firmwares/generalsettings.h +++ b/companion/src/firmwares/generalsettings.h @@ -151,7 +151,7 @@ class GeneralSettings { int backgroundVolume; unsigned int mavbaud; unsigned int switchUnlockStates; - unsigned int hw_uartMode; // UartModes + unsigned int auxSerialMode; // UartModes unsigned int backlightColor; CustomFunctionData customFn[CPN_MAX_SPECIAL_FUNCTIONS]; char switchName[CPN_MAX_SWITCHES][3+1]; diff --git a/companion/src/firmwares/modeldata.h b/companion/src/firmwares/modeldata.h index 732434434..2d384415f 100644 --- a/companion/src/firmwares/modeldata.h +++ b/companion/src/firmwares/modeldata.h @@ -171,16 +171,16 @@ class ModelData { ExpoData expoData[CPN_MAX_EXPOS]; CurveData curves[CPN_MAX_CURVES]; - LogicalSwitchData logicalSw[CPN_MAX_LOGICAL_SWITCHES]; + LogicalSwitchData logicalSw[CPN_MAX_LOGICAL_SWITCHES]; CustomFunctionData customFn[CPN_MAX_SPECIAL_FUNCTIONS]; SwashRingData swashRingData; unsigned int thrTraceSrc; uint64_t switchWarningStates; unsigned int switchWarningEnable; unsigned int potsWarningMode; - bool potsWarningEnabled[CPN_MAX_POTS]; - int potPosition[CPN_MAX_POTS]; - bool displayChecklist; + bool potsWarnEnabled[CPN_MAX_POTS]; + int potsWarnPosition[CPN_MAX_POTS]; + bool displayChecklist; GVarData gvarData[CPN_MAX_GVARS]; MavlinkData mavlink; unsigned int telemetryProtocol; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 6a2a3f7f4..8b86c0f6d 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -42,12 +42,12 @@ inline int MAX_SWITCHES(Board::Type board, int version) return Boards::getCapability(board, Board::Switches); } -inline int MAX_KNOBS(Board::Type board, int version) +inline int POTS_CONFIG_SIZE(Board::Type board, int version) { if (version >= 219 && IS_HORUS(board)) - return 8; + return 16; - return 4; + return 8; } inline int MAX_POTS(Board::Type board, int version) @@ -61,7 +61,16 @@ inline int MAX_POTS_STORAGE(Board::Type board, int version) { if (version <= 218 && IS_HORUS(board)) return 3; - return Boards::getCapability(board, Board::PotsStorage); + if (version >= 219 && IS_HORUS(board)) + return 5; + return Boards::getCapability(board, Board::Pots); +} + +inline int MAX_POTS_SOURCES(Board::Type board, int version) +{ + if (version <= 218 && IS_HORUS(board)) + return 5; + return Boards::getCapability(board, Board::Pots); } inline int MAX_SLIDERS_STORAGE(Board::Type board, int version) @@ -71,7 +80,14 @@ inline int MAX_SLIDERS_STORAGE(Board::Type board, int version) return Boards::getCapability(board, Board::Sliders); } -inline int MAX_SLIDERS_SLOTS(Board::Type board, int version) +inline int MAX_SLIDERS_SOURCES(Board::Type board, int version) +{ + if (version <= 218 && IS_HORUS(board)) + return 2; + return Boards::getCapability(board, Board::Sliders); +} + +inline int SLIDERS_CONFIG_SIZE(Board::Type board, int version) { if (version >= 219 && IS_HORUS(board)) return 8; @@ -79,19 +95,18 @@ inline int MAX_SLIDERS_SLOTS(Board::Type board, int version) return 4; } -// bitsize of swconfig_t / 2 (see radio/src/datastructs.h) -inline int MAX_SWITCH_SLOTS(Board::Type board, int version) +inline int SWITCHES_CONFIG_SIZE(Board::Type board, int version) { if (IS_TARANIS_X9E(board)) - return 32; + return 64; if (IS_HORUS(board)) - return 16; + return 32; if (version >= 219 && IS_TARANIS_X9D(board)) - return 16; + return 32; - return 8; + return 16; } inline int MAX_SWITCHES_POSITION(Board::Type board, int version) @@ -258,7 +273,6 @@ std::list SwitchesConversionTable::internalCache #define FLAG_NOTELEMETRY 0x04 class SourcesConversionTable: public ConversionTable { - public: SourcesConversionTable(Board::Type board, unsigned int version, unsigned int variant, unsigned long flags=0) { @@ -282,8 +296,7 @@ class SourcesConversionTable: public ConversionTable { } } - for (int i=0; i=CPN_MAX_STICKS+MAX_POTS_STORAGE(board, version)) offset += 2; @@ -2433,13 +2446,17 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig for (int i=0; i<8; i++) { if (i < Boards::getCapability(board, Board::Pots) + Boards::getCapability(board, Board::Sliders)) - internalField.Append(new BoolField<1>(this, modelData.potsWarningEnabled[i])); + internalField.Append(new BoolField<1>(this, modelData.potsWarnEnabled[i])); else internalField.Append(new SpareBitsField<1>(this)); } - for (int i=0; i < Boards::getCapability(board, Board::Pots) + MAX_SLIDERS_STORAGE(board, version); i++) { - internalField.Append(new SignedField<8>(this, modelData.potPosition[i])); + for (int i=0; i < MAX_POTS_STORAGE(board, version) + MAX_SLIDERS_STORAGE(board, version); i++) { + internalField.Append(new SignedField<8>(this, modelData.potsWarnPosition[i])); + } + + if (version <= 218 && IS_HORUS_X10(board)) { + internalField.Append(new SpareBitsField<16>(this)); } if (IS_SKY9X(board)) { @@ -2527,7 +2544,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type generalData(generalData), board(board), version(version), - inputsCount(CPN_MAX_STICKS + Boards::getCapability(board, Board::PotsStorage) + Boards::getCapability(board, Board::SlidersStorage) + Boards::getCapability(board, Board::MouseAnalogs)) + inputsCount(CPN_MAX_STICKS + MAX_POTS_STORAGE(board, version) + MAX_SLIDERS_STORAGE(board, version) + Boards::getCapability(board, Board::MouseAnalogs)) { qCDebug(eepromImport) << QString("OpenTxGeneralData::OpenTxGeneralData(board: %1, version:%2, variant:%3)").arg(board).arg(version).arg(variant); @@ -2537,17 +2554,21 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type internalField.Append(new UnsignedField<8>(this, generalData.version)); internalField.Append(new UnsignedField<16>(this, generalData.variant)); - for (int i=0; i(this, generalData.calibMid[i])); - internalField.Append(new SignedField<16>(this, generalData.calibSpanNeg[i])); - internalField.Append(new SignedField<16>(this, generalData.calibSpanPos[i])); + internalField.Append(new SignedField<16>(this, generalData.calibMid[input])); + internalField.Append(new SignedField<16>(this, generalData.calibSpanNeg[input])); + internalField.Append(new SignedField<16>(this, generalData.calibSpanPos[input])); + } + + if (version <= 218 && IS_HORUS_X10(board)) { + internalField.Append(new SpareBitsField<16*6>(this)); } internalField.Append(new UnsignedField<16>(this, chkSum)); + if (!IS_HORUS(board)) { internalField.Append(new UnsignedField<8>(this, generalData.currModelIndex)); internalField.Append(new UnsignedField<8>(this, generalData.contrast)); @@ -2682,18 +2703,18 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type if (IS_STM32(board)) { if (version >= 218) { - internalField.Append(new UnsignedField<4>(this, generalData.hw_uartMode)); - if (!IS_HORUS(board) || version < 219) { - for (uint8_t i=0; i<4; i++) { + internalField.Append(new UnsignedField<4>(this, generalData.auxSerialMode)); + if (IS_HORUS(board) && version >= 219) { + internalField.Append(new SpareBitsField<4>(this)); + } + else { + for (uint8_t i=0; i(this, generalData.sliderConfig[i])); } } - else { - internalField.Append(new SpareBitsField<4>(this)); - } } else { - internalField.Append(new UnsignedField<6>(this, generalData.hw_uartMode)); + internalField.Append(new UnsignedField<6>(this, generalData.auxSerialMode)); if (IS_TARANIS_X9E(board)) { internalField.Append(new UnsignedField<1>(this, generalData.sliderConfig[2])); internalField.Append(new UnsignedField<1>(this, generalData.sliderConfig[3])); @@ -2704,33 +2725,35 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type } if (IS_HORUS(board)) { - for (int i=0; i(this, generalData.switchConfig[i])); else internalField.Append(new SpareBitsField<2>(this)); } } - for (int i=0; i= 3)) offset += 2; - if (i < Boards::getCapability(board, Board::PotsStorage)) + if (i < MAX_POTS_STORAGE(board, version)) internalField.Append(new UnsignedField<2>(this, generalData.potConfig[i+offset])); else internalField.Append(new SpareBitsField<2>(this)); } + if (IS_HORUS(board) && version >= 219) { - for (int i=0; i(this, generalData.sliderConfig[i])); else internalField.Append(new SpareBitsField<1>(this)); } } + if (!IS_HORUS(board)) { internalField.Append(new UnsignedField<8>(this, generalData.backlightColor)); } @@ -2769,13 +2792,16 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type for (int i=0; i(this, generalData.potName[i], "Pot name")); } - for (int i=0; i(this, generalData.sliderName[i], "Slider name")); } + if (version <= 218 && IS_HORUS_X10(board)) { + internalField.Append(new SpareBitsField<48>(this)); // DUMMY_ANAS + } internalField.Append(new CharField<17>(this, generalData.currModelFilename, true, "Current model filename")); } else if (IS_TARANIS(board)) { - for (int i=0; i(this, generalData.switchConfig[i])); else diff --git a/companion/src/generaledit/hardware.cpp b/companion/src/generaledit/hardware.cpp index f33800635..2c5b3e199 100644 --- a/companion/src/generaledit/hardware.cpp +++ b/companion/src/generaledit/hardware.cpp @@ -153,7 +153,7 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings setupSwitchType(17, ui->srLabel, ui->srName, ui->srType); if (IS_TARANIS(board) && !IS_TARANIS_SMALL(board)) { - ui->serialPortMode->setCurrentIndex(generalSettings.hw_uartMode); + ui->serialPortMode->setCurrentIndex(generalSettings.auxSerialMode); } else { ui->serialPortMode->setCurrentIndex(0); @@ -277,6 +277,6 @@ void HardwarePanel::on_txVoltageCalibration_editingFinished() void HardwarePanel::on_serialPortMode_currentIndexChanged(int index) { - generalSettings.hw_uartMode = index; + generalSettings.auxSerialMode = index; emit modified(); } diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 3e07a5f42..4626dbf97 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -199,7 +199,7 @@ ModulePanel::ModulePanel(QWidget * parent, ModelData & model, ModuleData & modul ui->trainerMode->setItemData(TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE, 0, Qt::UserRole - 1); ui->trainerMode->setItemData(TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE, 0, Qt::UserRole - 1); } - if (generalSettings.hw_uartMode != UART_MODE_SBUS_TRAINER) { + if (generalSettings.auxSerialMode != UART_MODE_SBUS_TRAINER) { ui->trainerMode->setItemData(TRAINER_MODE_MASTER_BATTERY_COMPARTMENT, 0, Qt::UserRole - 1); } ui->trainerMode->setCurrentIndex(model.trainerMode); @@ -1387,7 +1387,7 @@ void SetupPanel::updatePotWarnings() for (int i=0; iproperty("index").toInt(); - checkbox->setChecked(!model->potsWarningEnabled[index]); + checkbox->setChecked(!model->potsWarnEnabled[index]); checkbox->setDisabled(model->potsWarningMode == 0); } lock = false; @@ -1397,7 +1397,7 @@ void SetupPanel::potWarningToggled(bool checked) { if (!lock) { int index = sender()->property("index").toInt(); - model->potsWarningEnabled[index] = !checked; + model->potsWarnEnabled[index] = !checked; updatePotWarnings(); emit modified(); } diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 5d6a23278..39a314fa7 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -939,7 +939,7 @@ void TelemetryPanel::setup() ui->telemetryProtocol->addItem(tr("FrSky S.PORT"), 0); ui->telemetryProtocol->addItem(tr("FrSky D"), 1); if (IS_9XRPRO(firmware->getBoard()) || - (IS_TARANIS(firmware->getBoard()) && generalSettings.hw_uartMode == 2)) { + (IS_TARANIS(firmware->getBoard()) && generalSettings.auxSerialMode == 2)) { ui->telemetryProtocol->addItem(tr("FrSky D (cable)"), 2); } ui->telemetryProtocol->setCurrentIndex(model->telemetryProtocol); diff --git a/companion/src/modelprinter.cpp b/companion/src/modelprinter.cpp index 5b13a7e38..f343e4292 100644 --- a/companion/src/modelprinter.cpp +++ b/companion/src/modelprinter.cpp @@ -869,7 +869,7 @@ QString ModelPrinter::printPotWarnings() for (int i=0; i> 6; newModel.potsWarnEnabled = oldModel.nPotsToWarn & 0x1f; - memcpy(newModel.potsWarnPosition, oldModel.potPosition, sizeof(newModel.potsWarnPosition)); + memcpy(newModel.potsWarnPosition, oldModel.potsWarnPosition, sizeof(newModel.potsWarnPosition)); } void convertModelData_217_to_218(ModelData &model)