diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp index e63478760..b02ba90bb 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp @@ -111,31 +111,28 @@ const YamlLookupTable internalModuleLut = { { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, }; -struct YamlTelemetryBaudrate { - unsigned int value; - - YamlTelemetryBaudrate() = default; - - YamlTelemetryBaudrate(const unsigned int * telemetryBaudrate) - { - if (Boards::getCapability(getCurrentFirmware()->getBoard(), Board::SportMaxBaudRate) < 400000) { - value = *telemetryBaudrate; - } - else { - value = (*telemetryBaudrate + telemetryBaudratesList.size() - 1) % telemetryBaudratesList.size(); - } +YamlTelemetryBaudrate::YamlTelemetryBaudrate( + const unsigned int* moduleBaudrate) +{ + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + value = *moduleBaudrate; + } else { + value = (*moduleBaudrate + moduleBaudratesList.size() - 1) % + moduleBaudratesList.size(); } +} - void toCpn(unsigned int * telemetryBaudrate, unsigned int variant) - { - if (Boards::getCapability((Board::Type)variant, Board::SportMaxBaudRate) < 400000) { - *telemetryBaudrate = value; - } - else { - *telemetryBaudrate = (value + 1) % telemetryBaudratesList.size(); - } +void YamlTelemetryBaudrate::toCpn(unsigned int* moduleBaudrate, + unsigned int variant) +{ + if (Boards::getCapability((Board::Type)variant, Board::SportMaxBaudRate) < + 400000) { + *moduleBaudrate = value; + } else { + *moduleBaudrate = (value + 1) % moduleBaudratesList.size(); } -}; +} namespace YAML { @@ -179,8 +176,8 @@ Node convert::encode(const GeneralSettings& rhs) node["adjustRTC"] = (int)rhs.adjustRTC; node["inactivityTimer"] = rhs.inactivityTimer; - YamlTelemetryBaudrate telemetryBaudrate(&rhs.telemetryBaudrate); - node["telemetryBaudrate"] = telemetryBaudrate.value; + YamlTelemetryBaudrate internalModuleBaudrate(&rhs.internalModuleBaudrate); + node["internalModuleBaudrate"] = internalModuleBaudrate.value; node["internalModule"] = LookupValue(internalModuleLut, rhs.internalModule); node["splashMode"] = rhs.splashMode; // TODO: B&W only @@ -358,9 +355,13 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) node["adjustRTC"] >> rhs.adjustRTC; node["inactivityTimer"] >> rhs.inactivityTimer; - YamlTelemetryBaudrate telemetryBaudrate; - node["telemetryBaudrate"] >> telemetryBaudrate.value; - telemetryBaudrate.toCpn(&rhs.telemetryBaudrate, rhs.variant); + YamlTelemetryBaudrate internalModuleBaudrate; + if (node["telemetryBaudrate"]) { + node["telemetryBaudrate"] >> internalModuleBaudrate.value; + } else { + node["internalModuleBaudrate"] >> internalModuleBaudrate.value; + } + internalModuleBaudrate.toCpn(&rhs.internalModuleBaudrate, rhs.variant); if (node["internalModule"]) { node["internalModule"] >> internalModuleLut >> rhs.internalModule; diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.h b/companion/src/firmwares/edgetx/yaml_generalsettings.h index 401f6e4a1..fb204e6e3 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.h +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.h @@ -21,6 +21,14 @@ #include "yaml_ops.h" #include "generalsettings.h" +struct YamlTelemetryBaudrate { + unsigned int value; + + YamlTelemetryBaudrate() = default; + YamlTelemetryBaudrate(const unsigned int* moduleBaudrate); + void toCpn(unsigned int* moduleBaudrate, unsigned int variant); +}; + namespace YAML { template<> @@ -30,5 +38,3 @@ namespace YAML { static bool decode(const Node& node, GeneralSettings& rhs); }; } - - diff --git a/companion/src/firmwares/edgetx/yaml_moduledata.cpp b/companion/src/firmwares/edgetx/yaml_moduledata.cpp index 11d263265..809aa433b 100644 --- a/companion/src/firmwares/edgetx/yaml_moduledata.cpp +++ b/companion/src/firmwares/edgetx/yaml_moduledata.cpp @@ -19,6 +19,8 @@ */ #include "yaml_moduledata.h" +#include "yaml_generalsettings.h" +#include "eeprominterface.h" #include "moduledata.h" #include "rawsource.h" @@ -296,8 +298,16 @@ Node convert::encode(const ModuleData& rhs) case PULSES_GHOST: { Node ghost; ghost["raw12bits"] = (int)rhs.ghost.raw12bits; + YamlTelemetryBaudrate br(&rhs.ghost.telemetryBaudrate); + ghost["telemetryBaudrate"] = br.value; mod["ghost"] = ghost; } break; + case PULSES_CROSSFIRE: { + Node crsf; + YamlTelemetryBaudrate br(&rhs.crsf.telemetryBaudrate); + crsf["telemetryBaudrate"] = br.value; + mod["crsf"] = crsf; + } break; // TODO: afhds3, flysky default: { Node ppm; @@ -400,7 +410,15 @@ bool convert::decode(const Node& node, ModuleData& rhs) } } else if (mod["ghost"]) { Node ghost = mod["ghost"]; + YamlTelemetryBaudrate telemetryBaudrate; + ghost["telemetryBaudrate"] >> telemetryBaudrate.value; + telemetryBaudrate.toCpn(&rhs.ghost.telemetryBaudrate, getCurrentFirmware()->getBoard()); ghost["raw12bits"] >> rhs.ghost.raw12bits; + } else if (mod["crsf"]) { + Node crsf = mod["crsf"]; + YamlTelemetryBaudrate telemetryBaudrate; + crsf["telemetryBaudrate"] >> telemetryBaudrate.value; + telemetryBaudrate.toCpn(&rhs.crsf.telemetryBaudrate, getCurrentFirmware()->getBoard()); } else if (mod["flysky"]) { //TODO } else if (mod["afhds3"]) { diff --git a/companion/src/firmwares/generalsettings.cpp b/companion/src/firmwares/generalsettings.cpp index af0fd86e9..1e68b2b37 100644 --- a/companion/src/firmwares/generalsettings.cpp +++ b/companion/src/firmwares/generalsettings.cpp @@ -426,9 +426,9 @@ QString GeneralSettings::serialPortModeToString(int port_nr) const return serialModeToString(serialPort[port_nr]); } -QString GeneralSettings::telemetryBaudrateToString() const +QString GeneralSettings::internalModuleBaudrateToString() const { - return telemetryBaudrateToString(telemetryBaudrate); + return moduleBaudrateToString(internalModuleBaudrate); } // static @@ -495,9 +495,9 @@ QString GeneralSettings::serialModeToString(int value) } // static -QString GeneralSettings::telemetryBaudrateToString(int value) +QString GeneralSettings::moduleBaudrateToString(int value) { - return telemetryBaudratesList.value(value, CPN_STR_UNKNOWN_ITEM); + return moduleBaudratesList.value(value, CPN_STR_UNKNOWN_ITEM); } // static @@ -576,13 +576,13 @@ AbstractStaticItemModel * GeneralSettings::serialModeItemModel(int port_nr) } // static -AbstractStaticItemModel * GeneralSettings::telemetryBaudrateItemModel() +AbstractStaticItemModel * GeneralSettings::internalModuleBaudrateItemModel() { AbstractStaticItemModel * mdl = new AbstractStaticItemModel(); - mdl->setName(AIM_GS_TELEMETRYBAUDRATE); + mdl->setName(AIM_GS_INTMODULEBAUDRATE); - for (int i = 0; i < telemetryBaudratesList.size(); i++) { - mdl->appendToItemList(telemetryBaudrateToString(i), i); + for (int i = 0; i < moduleBaudratesList.size(); i++) { + mdl->appendToItemList(moduleBaudrateToString(i), i); } mdl->loadItemList(); diff --git a/companion/src/firmwares/generalsettings.h b/companion/src/firmwares/generalsettings.h index 6df039207..4d98286d5 100644 --- a/companion/src/firmwares/generalsettings.h +++ b/companion/src/firmwares/generalsettings.h @@ -39,11 +39,12 @@ class AbstractStaticItemModel; constexpr char AIM_GS_ANTENNAMODE[] {"gs.antennamode"}; constexpr char AIM_GS_BLUETOOTHMODE[] {"gs.bluetoothmode"}; constexpr char AIM_GS_SERIALMODE[] {"gs.serialmode%1"}; -constexpr char AIM_GS_TELEMETRYBAUDRATE[] {"gs.telemetrybaudrate"}; +constexpr char AIM_GS_INTMODULEBAUDRATE[] {"gs.intmodulebaudrate"}; constexpr char AIM_TRAINERMIX_MODE[] {"trainermix.mode"}; constexpr char AIM_TRAINERMIX_SRC[] {"trainermix.src"}; -static const QStringList telemetryBaudratesList({ "115K", "400K", "921K", "1.87M", "3.75M", "5.25M" }); +static const QStringList moduleBaudratesList({"115K", "400K", "921K", "1.87M", + "3.75M", "5.25M"}); enum UartModes { UART_MODE_NONE, @@ -193,7 +194,7 @@ class GeneralSettings { bool adjustRTC; bool optrexDisplay; unsigned int inactivityTimer; - unsigned int telemetryBaudrate; + unsigned int internalModuleBaudrate; bool minuteBeep; bool preBeep; bool flashBeep; @@ -267,16 +268,16 @@ class GeneralSettings { QString antennaModeToString() const; QString bluetoothModeToString() const; QString serialPortModeToString(int port_nr) const; - QString telemetryBaudrateToString() const; + QString internalModuleBaudrateToString() const; static QString antennaModeToString(int value); static QString bluetoothModeToString(int value); static QString serialModeToString(int value); - static QString telemetryBaudrateToString(int value); + static QString moduleBaudrateToString(int value); static FieldRange getPPM_MultiplierRange(); static FieldRange getTxCurrentCalibration(); static AbstractStaticItemModel * antennaModeItemModel(); static AbstractStaticItemModel * bluetoothModeItemModel(); static AbstractStaticItemModel * serialModeItemModel(int port_nr); - static AbstractStaticItemModel * telemetryBaudrateItemModel(); + static AbstractStaticItemModel * internalModuleBaudrateItemModel(); }; diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index 7556c719b..7a474cbbf 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -496,3 +496,17 @@ AbstractStaticItemModel * ModuleData::protocolItemModel(GeneralSettings & settin mdl->loadItemList(); return mdl; } + +AbstractStaticItemModel * ModuleData::telemetryBaudrateItemModel(unsigned int protocol) +{ + AbstractStaticItemModel * mdl = new AbstractStaticItemModel(); + mdl->setName("moduledata.baudrate"); + + for (int i = 0; i < moduleBaudratesList.size(); i++) { + if (protocol == PULSES_GHOST && i >= 2) break; + mdl->appendToItemList(moduleBaudratesList.at(i), i); + } + + mdl->loadItemList(); + return mdl; +} diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 9074b97ad..10f83a807 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -241,8 +241,13 @@ class ModuleData { struct GHOST { bool raw12bits; + unsigned int telemetryBaudrate; } ghost; + struct CRSF { + unsigned int telemetryBaudrate; + } crsf; + struct Access { unsigned int receivers; char receiverName[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME+1]; @@ -268,4 +273,5 @@ class ModuleData { static AbstractStaticItemModel * internalModuleItemModel(int board = -1); static bool isProtocolAvailable(int moduleidx, unsigned int protocol, GeneralSettings & settings); static AbstractStaticItemModel * protocolItemModel(GeneralSettings & settings); + static AbstractStaticItemModel * telemetryBaudrateItemModel(unsigned int protocol); }; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index b9114cb31..4b10c0dfa 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -3070,7 +3070,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type } internalField.Append(new UnsignedField<8>(this, generalData.inactivityTimer)); - internalField.Append(new UnsignedField<3>(this, generalData.telemetryBaudrate)); + internalField.Append(new UnsignedField<3>(this, generalData.internalModuleBaudrate)); if (IS_FAMILY_HORUS_OR_T16(board)) internalField.Append(new SpareBitsField<3>(this)); else if (IS_TARANIS(board)) @@ -3369,8 +3369,11 @@ void OpenTxGeneralData::beforeExport() chkSum = sum; - if (Boards::getCapability((Board::Type)generalData.variant, Board::SportMaxBaudRate) >= 400000) - generalData.telemetryBaudrate = (generalData.telemetryBaudrate + telemetryBaudratesList.size() - 1) % telemetryBaudratesList.size(); + if (Boards::getCapability((Board::Type)generalData.variant, + Board::SportMaxBaudRate) >= 400000) + generalData.internalModuleBaudrate = + (generalData.internalModuleBaudrate + moduleBaudratesList.size() - 1) % + moduleBaudratesList.size(); } void OpenTxGeneralData::afterImport() @@ -3382,7 +3385,8 @@ void OpenTxGeneralData::afterImport() } } - if (Boards::getCapability((Board::Type)generalData.variant, Board::SportMaxBaudRate) >= 400000) - generalData.telemetryBaudrate = (generalData.telemetryBaudrate + 1) % telemetryBaudratesList.size(); + if (Boards::getCapability((Board::Type)generalData.variant, + Board::SportMaxBaudRate) >= 400000) + generalData.internalModuleBaudrate = + (generalData.internalModuleBaudrate + 1) % moduleBaudratesList.size(); } - diff --git a/companion/src/generaledit/hardware.cpp b/companion/src/generaledit/hardware.cpp index abd7d4a1d..54728c30f 100644 --- a/companion/src/generaledit/hardware.cpp +++ b/companion/src/generaledit/hardware.cpp @@ -96,7 +96,7 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings int btmodelid = editorItemModels->registerItemModel(GeneralSettings::bluetoothModeItemModel()); int auxmodelid = editorItemModels->registerItemModel(GeneralSettings::serialModeItemModel(GeneralSettings::SP_AUX1)); int vcpmodelid = editorItemModels->registerItemModel(GeneralSettings::serialModeItemModel(GeneralSettings::SP_VCP)); - int baudmodelid = editorItemModels->registerItemModel(GeneralSettings::telemetryBaudrateItemModel()); + int baudmodelid = editorItemModels->registerItemModel(GeneralSettings::internalModuleBaudrateItemModel()); id = editorItemModels->registerItemModel(ModuleData::internalModuleItemModel()); tabFilteredModels->registerItemModel(new FilteredItemModel(editorItemModels->getItemModel(id)), FIM_INTERNALMODULES); @@ -182,16 +182,21 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings internalModule = new AutoComboBox(this); internalModule->setModel(tabFilteredModels->getItemModel(FIM_INTERNALMODULES)); internalModule->setField(generalSettings.internalModule, this); - addParams(row, internalModule); - connect(internalModule, &AutoComboBox::currentDataChanged, this, &HardwarePanel::on_internalModuleChanged); - } - if (firmware->getCapability(HasTelemetryBaudrate)) { - addLabel(tr("Maximum Baud"), row, 0); - AutoComboBox *maxBaudRate = new AutoComboBox(this); - maxBaudRate->setModel(editorItemModels->getItemModel(baudmodelid)); - maxBaudRate->setField(generalSettings.telemetryBaudrate, this); - addParams(row, maxBaudRate); + connect(internalModule, &AutoComboBox::currentDataChanged, this, + &HardwarePanel::on_internalModuleChanged); + + internalModuleBaudRate = new AutoComboBox(this); + internalModuleBaudRate->setModel(editorItemModels->getItemModel(baudmodelid)); + internalModuleBaudRate->setField(generalSettings.internalModuleBaudrate, this); + + if (m_internalModule != MODULE_TYPE_GHOST && m_internalModule != MODULE_TYPE_CROSSFIRE) { + generalSettings.internalModuleBaudrate = 0; + internalModuleBaudRate->setVisible(false); + } + + addParams(row, internalModule, internalModuleBaudRate); + row++; } // All values except 0 are mutually exclusive @@ -275,6 +280,22 @@ void HardwarePanel::on_internalModuleChanged() } else { m_internalModule = generalSettings.internalModule; + if (m_internalModule == MODULE_TYPE_GHOST || m_internalModule == MODULE_TYPE_CROSSFIRE) { + + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + // default to 115k + internalModuleBaudRate->setCurrentIndex(0); + } else { + // default to 400k + internalModuleBaudRate->setCurrentIndex(1); + } + + internalModuleBaudRate->setVisible(true); + } else { + generalSettings.internalModuleBaudrate = 0; + internalModuleBaudRate->setVisible(false); + } emit internalModuleChanged(); } } diff --git a/companion/src/generaledit/hardware.h b/companion/src/generaledit/hardware.h index 423d9bc86..c23a663a4 100644 --- a/companion/src/generaledit/hardware.h +++ b/companion/src/generaledit/hardware.h @@ -48,6 +48,7 @@ class HardwarePanel : public GeneralPanel QGridLayout *grid; AutoComboBox *internalModule; unsigned int m_internalModule = 0; + AutoComboBox *internalModuleBaudRate; void addStick(int index, int & row); void addPot(int index, int & row); diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 869fe7b24..e6a66798a 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -203,6 +203,7 @@ void TimerPanel::onModeChanged(int index) #define MASK_RF_POWER (1<<15) #define MASK_RF_RACING_MODE (1<<16) #define MASK_GHOST (1<<17) +#define MASK_BAUDRATE (1<<18) quint8 ModulePanel::failsafesValueDisplayType = ModulePanel::FAILSAFE_DISPLAY_PERCENT; @@ -444,12 +445,16 @@ void ModulePanel::update() max_rx_num = 20; break; case PULSES_CROSSFIRE: - mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER; + mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setModel(ModuleData::telemetryBaudrateItemModel(protocol)); + ui->telemetryBaudrate->setField(module.crsf.telemetryBaudrate); break; case PULSES_GHOST: - mask |= MASK_CHANNELS_RANGE | MASK_GHOST; + mask |= MASK_CHANNELS_RANGE | MASK_GHOST | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setModel(ModuleData::telemetryBaudrateItemModel(protocol)); + ui->telemetryBaudrate->setField(module.ghost.telemetryBaudrate); break; case PULSES_PPM: mask |= MASK_PPM_FIELDS | MASK_SBUSPPM_FIELDS| MASK_CHANNELS_RANGE| MASK_CHANNELS_COUNT; @@ -495,6 +500,11 @@ void ModulePanel::update() mask |= MASK_FAILSAFES; } + if (moduleIdx > 0) + ui->telemetryBaudrate->setVisible(mask & MASK_BAUDRATE); + else + ui->telemetryBaudrate->setVisible(false); + ui->label_protocol->setVisible(mask & MASK_PROTOCOL); ui->protocol->setVisible(mask & MASK_PROTOCOL); ui->label_rxNumber->setVisible(mask & MASK_RX_NUMBER); @@ -690,6 +700,17 @@ void ModulePanel::onProtocolChanged(int index) if (!lock) { module.channelsCount = module.getMaxChannelCount(); update(); + if (module.protocol == PULSES_GHOST || + module.protocol == PULSES_CROSSFIRE) { + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + // default to 115k + ui->telemetryBaudrate->setCurrentIndex(0); + } else { + // default to 400k + ui->telemetryBaudrate->setCurrentIndex(1); + } + } emit updateItemModels(); emit modified(); } diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui index 0c95b81da..5a7b35fea 100644 --- a/companion/src/modeledit/setup_module.ui +++ b/companion/src/modeledit/setup_module.ui @@ -7,7 +7,7 @@ 0 0 1075 - 438 + 527 @@ -91,6 +91,329 @@ 6 + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 6 + + + 4 + + + + + + 16777215 + 16777215 + + + + Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 180 + 0 + + + + QComboBox::AdjustToContents + + + + + + + QComboBox::AdjustToContents + + + + + + + Registration ID + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + true + + + + + + + Multi Radio Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + + + + Sub Type + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + + + + + + + + + 198 + 17 + 36 + + + + + + + + + 198 + 17 + 36 + + + + + + + + + 106 + 104 + 100 + + + + + + + + WARNING: Requires non-certified firmware! + + + + + + + + 16777215 + 16777215 + + + + Failsafe Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + Not set + + + + + Hold + + + + + Custom + + + + + No Pulses + + + + + Receiver + + + + + + + + + 16777215 + 16777215 + + + + Trainer Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + + + + Disable Telemetry + + + + + + + Disable Ch. Map + + + + + + + Racing Mode + + + + + + + Raw 12 bits + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -777,322 +1100,6 @@ - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 6 - - - 4 - - - - - - 16777215 - 16777215 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 180 - 0 - - - - QComboBox::AdjustToContents - - - - - - - Registration ID - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - true - - - - - - - Multi Radio Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - - - - Sub Type - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - - - - - - - - - 198 - 17 - 36 - - - - - - - - - 198 - 17 - 36 - - - - - - - - - 106 - 104 - 100 - - - - - - - - WARNING: Requires non-certified firmware! - - - - - - - - 16777215 - 16777215 - - - - Failsafe Mode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - Not set - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - Receiver - - - - - - - - - 16777215 - 16777215 - - - - Trainer Mode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - - - - Disable Telemetry - - - - - - - Racing Mode - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Disable Ch. Map - - - - - - - Raw 12 bits - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index f9ccc6f17..8e17b4c4f 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -530,8 +530,12 @@ PACK(struct ModuleData { } afhds3)); NOBACKUP(struct { uint8_t raw12bits:1; - uint8_t spare1:7 SKIP; + uint8_t telemetryBaudrate:3; + uint8_t spare1:4 SKIP; } ghost); + NOBACKUP(struct { + uint8_t telemetryBaudrate:3; + } crsf); } NAME(mod) FUNC(select_mod_type); // Helper functions to set both of the rfProto protocol at the same time @@ -864,7 +868,8 @@ PACK(struct RadioData { int8_t timezone:5; uint8_t adjustRTC:1; NOBACKUP(uint8_t inactivityTimer); - uint8_t telemetryBaudrate:3; + CUST_ATTR(telemetryBaudrate, r_telemetryBaudrate, nullptr); + uint8_t internalModuleBaudrate:3; SPLASH_MODE; /* 3bits */ int8_t hapticMode:2 CUST(r_beeperMode,w_beeperMode); int8_t switchesDelay; diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index a3df237b8..947173537 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -20,6 +20,7 @@ */ #include "opentx.h" +#include "mixer_scheduler.h" #if !defined(EEPROM) #include "storage/sdcard_common.h" @@ -105,7 +106,10 @@ enum MenuModelSetupItems { #if defined(HARDWARE_INTERNAL_MODULE) ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL, +#if defined(CROSSFIRE) || defined(GHOST) ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE, + ITEM_MODEL_SETUP_INTERNAL_MODULE_SERIALSTATUS, +#endif #if defined(MULTIMODULE) ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE, @@ -136,6 +140,10 @@ enum MenuModelSetupItems { #if defined(HARDWARE_EXTERNAL_MODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, +#if defined(CROSSFIRE) || defined(GHOST) + ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS, +#endif #if defined(MULTIMODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_SUBTYPE, @@ -191,6 +199,18 @@ enum MenuModelSetupItems { #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) +#if defined(CROSSFIRE) || defined(GHOST) +#define IF_MODULE_SYNCED(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) +#if SPORT_MAX_BAUDRATE < 400000 +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) +#else +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) +#endif +#else +#define IF_MODULE_SYNCED(module, xxx) +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) +#endif + #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -345,6 +365,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) #define INTERNAL_MODULE_ROWS \ LABEL(InternalModule), \ MODULE_TYPE_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE */ \ + IF_MODULE_SYNCED(INTERNAL_MODULE, 0), /* Sync rate + errors */ \ MULTIMODULE_TYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL */ \ MULTIMODULE_SUBTYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_STATUS, ITEM_MODEL_SETUP_INTERNAL_MODULE_SYNCSTATUS */ \ @@ -370,6 +391,8 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) #define EXTERNAL_MODULE_ROWS \ LABEL(ExternalModule), \ MODULE_TYPE_ROWS(EXTERNAL_MODULE), \ + IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), /* Baudrate */ \ + IF_MODULE_SYNCED(EXTERNAL_MODULE, 0), /* Sync rate + errors */ \ MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) /* PROTOCOL */ \ MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) /* SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) \ @@ -943,14 +966,7 @@ void menuModelSetup(event_t event) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE: #endif lcdDrawTextAlignedLeft(y, INDENT TR_MODE); - lcdDrawTextAtIndex( - MODEL_SETUP_2ND_COLUMN, y, - moduleIdx == EXTERNAL_MODULE ? STR_EXTERNAL_MODULE_PROTOCOLS - : STR_INTERNAL_MODULE_PROTOCOLS, - moduleIdx == EXTERNAL_MODULE ? reusableBuffer.moduleSetup.newType - : g_model.moduleData[moduleIdx].type, - menuHorizontalPosition == 0 ? attr : 0); - + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y,moduleIdx == EXTERNAL_MODULE ? STR_EXTERNAL_MODULE_PROTOCOLS : STR_INTERNAL_MODULE_PROTOCOLS,moduleIdx == EXTERNAL_MODULE ? reusableBuffer.moduleSetup.newType: g_model.moduleData[moduleIdx].type,menuHorizontalPosition == 0 ? attr : 0); if (isModuleXJT(moduleIdx)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[moduleIdx].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleISRM(moduleIdx)) @@ -959,6 +975,8 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[moduleIdx].rfProtocol, menuHorizontalPosition==1 ? attr : 0); else if (isModuleR9MNonAccess(moduleIdx)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, g_model.moduleData[moduleIdx].subType, (menuHorizontalPosition==1 ? attr : 0)); + else if (moduleIdx == INTERNAL_MODULE && isModuleCrossfire(INTERNAL_MODULE)) + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),0); if (attr && menuHorizontalPosition == 0 && moduleIdx == EXTERNAL_MODULE) { if (s_editMode > 0) { @@ -1051,6 +1069,57 @@ void menuModelSetup(event_t event) } break; +#if defined(HARDWARE_EXTERNAL_MODULE) && (defined(CROSSFIRE) || defined(GHOST)) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { + ModuleData & moduleData = g_model.moduleData[moduleIdx]; + lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); + if (isModuleCrossfire(EXTERNAL_MODULE)) { + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),attr | LEFT); + if (attr) { + moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + } +#if SPORT_MAX_BAUDRATE < 400000 + else { + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate)],attr | LEFT); + if (attr) { + moduleData.ghost.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.ghost.telemetryBaudrate),0, 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + } +#endif + break; + } +#endif +#if (defined(CROSSFIRE) || defined(GHOST)) +#if defined(HARDWARE_INTERNAL_MODULE) + case ITEM_MODEL_SETUP_INTERNAL_MODULE_SERIALSTATUS: +#endif +#if defined(HARDWARE_EXTERNAL_MODULE) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS: +#endif + lcdDrawText(INDENT_WIDTH, y, STR_STATUS); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 1000000 / getMixerSchedulerPeriod(), LEFT | attr); + lcdDrawText(lcdNextPos, y, "Hz ", attr); + lcdDrawNumber(lcdNextPos, y, telemetryErrors, attr); + lcdDrawText(lcdNextPos + 1, y, "Err", attr); + if (attr) { + s_editMode = 0; + if (event == EVT_KEY_LONG(KEY_ENTER)) { + START_NO_HIGHLIGHT(); + telemetryErrors = 0; + AUDIO_WARNING1(); + killEvents(event); + } + } + break; +#endif + #if defined(MULTIMODULE) #if defined(HARDWARE_INTERNAL_MODULE) case ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL: diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 2a71c6824..b703f6d99 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -20,6 +20,7 @@ */ #include "opentx.h" +#include "mixer_scheduler.h" uint8_t g_moduleIdx; @@ -106,6 +107,10 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, +#if defined(CROSSFIRE) || defined(GHOST) + ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS, +#endif #if defined (MULTIMODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS, @@ -313,6 +318,17 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) +#if defined(CROSSFIRE) || defined(GHOST) +#define IF_MODULE_SYNCED(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) +#if SPORT_MAX_BAUDRATE < 400000 +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) +#else +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) +#endif +#else +#define IF_MODULE_SYNCED(module, xxx) +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) +#endif #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -407,6 +423,8 @@ void menuModelSetup(event_t event) LABEL(ExternalModule), EXTERNAL_MODULE_TYPE_ROW(), + IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), // Baudrate + IF_MODULE_SYNCED(EXTERNAL_MODULE, 0), // Sync rate + errors MULTIMODULE_TYPE_ROW(EXTERNAL_MODULE) MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) AFHDS3_MODE_ROWS(EXTERNAL_MODULE) @@ -870,6 +888,8 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleISRM(INTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); + else if (isModuleCrossfire(INTERNAL_MODULE)) + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),0); if (attr) { if (menuHorizontalPosition == 0) { uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable); @@ -1016,6 +1036,52 @@ void menuModelSetup(event_t event) } break; +#if defined(CROSSFIRE) || defined(GHOST) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { + ModuleData &moduleData = g_model.moduleData[EXTERNAL_MODULE]; + lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); + if (isModuleCrossfire(EXTERNAL_MODULE)) { + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),attr | LEFT); + if (attr) { + moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + } + break; +#if SPORT_MAX_BAUDRATE < 400000 + else { + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate)],attr | LEFT); + if (attr) { + moduleData.ghost.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.ghost.telemetryBaudrate),0, 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + } + break; +#endif + } + + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS: + lcdDrawText(INDENT_WIDTH, y, STR_STATUS); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 1000000 / getMixerSchedulerPeriod(), LEFT | attr); + lcdDrawText(lcdNextPos, y, "Hz ", attr); + lcdDrawNumber(lcdNextPos, y, telemetryErrors, attr); + lcdDrawText(lcdNextPos + 1, y, "Err", attr); + if (attr) { + s_editMode = 0; + if (event == EVT_KEY_LONG(KEY_ENTER)) { + START_NO_HIGHLIGHT(); + telemetryErrors = 0; + AUDIO_WARNING1(); + killEvents(event); + } + } + break; +#endif + #if defined(MULTIMODULE) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL: { diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index f21e291ea..82e9a9c91 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -23,6 +23,7 @@ #include "multi_rfprotos.h" #include "io/multi_protolist.h" #include "pulses/flysky.h" +#include "mixer_scheduler.h" #include "opentx.h" #include "libopenui.h" @@ -304,8 +305,7 @@ class TrainerModuleWindow : public FormGroup FormGridLayout grid; clear(); - new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0, - COLOR_THEME_PRIMARY1); + new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0,COLOR_THEME_PRIMARY1); trainerChoice = new TrChoice( this, grid.getFieldSlot(), STR_VTRAINERMODES, 0, TRAINER_MODE_MAX(), GET_DEFAULT(g_model.trainerData.mode), @@ -589,8 +589,7 @@ class ModuleWindow : public FormGroup { clear(); // Module Type - new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0, - COLOR_THEME_PRIMARY1); + new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0,COLOR_THEME_PRIMARY1); moduleChoice = new Choice( this, grid.getFieldSlot(2, 0), STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, @@ -607,7 +606,34 @@ class ModuleWindow : public FormGroup { : isExternalModuleAvailable(moduleType); }); + if (moduleIdx == INTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { + char buf[6]; + new StaticText(this, grid.getFieldSlot(2, 1), getStringAtIndex(buf, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate)), 0,COLOR_THEME_PRIMARY1); + } + // Module parameters + if (moduleIdx== EXTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { + grid.nextLine(); + new StaticText(this, grid.getLabelSlot(true), STR_BAUDRATE, 0, COLOR_THEME_PRIMARY1); + new Choice(this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE, + [=]() -> int { + return CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[moduleIdx].crsf.telemetryBaudrate); + }, + [=](int newValue) { + g_model.moduleData[moduleIdx].crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); + SET_DIRTY(); + restartExternalModule(); + }); + } + if (isModuleCrossfire(moduleIdx)) { + grid.nextLine(); + new StaticText(this, grid.getLabelSlot(true), STR_STATUS, 0,COLOR_THEME_PRIMARY1); + new DynamicText(this, grid.getFieldSlot(), [=] { + char msg[64] = ""; + sprintf(msg,"%d Hz %lu Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); + return std::string(msg); + }); + } if (isModuleXJT(moduleIdx)) { rfChoice = new Choice( this, grid.getFieldSlot(2, 1), STR_XJT_ACCST_RF_PROTOCOLS, diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 32b8aa01a..578521c47 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -247,20 +247,75 @@ class SerialConfigWindow : public FormGroup } }; -void restartExternalModule() -{ - if (!IS_EXTERNAL_MODULE_ON()) { - return; +class InternalModuleWindow : public FormGroup { + public: + InternalModuleWindow(FormWindow *parent, const rect_t &rect) : + FormGroup(parent, rect, FORWARD_SCROLL | FORM_FORWARD_FOCUS) + { + update(); } - pauseMixerCalculations(); - pausePulses(); - EXTERNAL_MODULE_OFF(); - RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate - telemetryProtocol = 255; // force telemetry port + module reinitialization - EXTERNAL_MODULE_ON(); - resumePulses(); - resumeMixerCalculations(); -} + + void update() + { + FormGridLayout grid; +#if LCD_W > LCD_H + grid.setLabelWidth(180); +#else + grid.setLabelWidth(130); +#endif + clear(); + + new StaticText(this, grid.getLabelSlot(), TR_INTERNAL_MODULE, 0, + COLOR_THEME_PRIMARY1); + auto internalModule = new Choice(this, grid.getFieldSlot(1, 0),STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, + GET_DEFAULT(g_eeGeneral.internalModule), + [=](int moduleType) { + if (g_model.moduleData[INTERNAL_MODULE].type != moduleType) { + memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); + storageDirty(EE_MODEL); + } + g_eeGeneral.internalModule = moduleType; + SET_DIRTY(); + }); + + internalModule->setAvailableHandler([](int module){ + return isInternalModuleSupported(module); + }); + +#if defined(CROSSFIRE) + if (isInternalModuleCrossfire()) { + grid.nextLine(); + new StaticText(this, grid.getLabelSlot(), STR_BAUDRATE, 0,COLOR_THEME_PRIMARY1); + new Choice(this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0,CROSSFIRE_MAX_INTERNAL_BAUDRATE, + [=]() -> int { + return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate); + }, + [=](int newValue) { + g_eeGeneral.internalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); + SET_DIRTY(); + restartExternalModule(); + }); + grid.nextLine(); + } + auto par = getParent(); + par->moveWindowsTop(top() + 1, adjustHeight()); + par->adjustInnerHeight(); +#endif + } + + void checkEvents() override + { + if (g_eeGeneral.internalModule != lastModule) { + lastModule = g_eeGeneral.internalModule; + update(); + } + + FormGroup::checkEvents(); + } + + protected: + uint8_t lastModule = 0; +}; void RadioHardwarePage::build(FormWindow * window) { @@ -379,39 +434,9 @@ void RadioHardwarePage::build(FormWindow * window) grid.nextLine(); #if defined(HARDWARE_INTERNAL_MODULE) - new StaticText(window, grid.getLabelSlot(), TR_INTERNAL_MODULE, 0, - COLOR_THEME_PRIMARY1); - auto internalModule = new Choice(window, grid.getFieldSlot(1, 0), - STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, - GET_DEFAULT(g_eeGeneral.internalModule), - [=](int moduleType) { - if (g_model.moduleData[INTERNAL_MODULE].type != moduleType) { - memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); - storageDirty(EE_MODEL); - } - g_eeGeneral.internalModule = moduleType; - SET_DIRTY(); - }); - - internalModule->setAvailableHandler([](int module){ - return isInternalModuleSupported(module); - }); - grid.nextLine(); -#endif - -#if defined(CROSSFIRE) - // Max baud for external modules - new StaticText(window, grid.getLabelSlot(), STR_MAXBAUDRATE, 0, COLOR_THEME_PRIMARY1); - new Choice(window, grid.getFieldSlot(1,0), STR_CRSF_BAUDRATE, 0, DIM(CROSSFIRE_BAUDRATES) - 1, - [=]() -> int { - return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate); - }, - [=](int newValue) { - g_eeGeneral.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); - SET_DIRTY(); - restartExternalModule(); - }); + new Subtitle(window, grid.getLineSlot(), TR_INTERNALRF, 0, COLOR_THEME_PRIMARY1); grid.nextLine(); + grid.addWindow(new InternalModuleWindow(window, {0, grid.getWindowHeight(), LCD_W, 0})); #endif #if defined(BLUETOOTH) diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 8bff1a02d..c2ee4514c 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -97,15 +97,13 @@ enum { #endif #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) - ITEM_RADIO_HARDWARE_INTERNAL_MODULE, + ITEM_RADIO_HARDWARE_LABEL_INTERNAL_MODULE, + ITEM_RADIO_HARDWARE_INTERNAL_MODULE_TYPE, + ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE, #endif - -#if (defined(CROSSFIRE) || defined(GHOST)) - ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE, -#endif - +#if defined(HARDWARE_EXTERNAL_MODULE) ITEM_RADIO_HARDWARE_SERIAL_SAMPLE_MODE, - +#endif #if defined(BLUETOOTH) ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE, @@ -231,18 +229,15 @@ enum { #endif #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) - #define INTERNAL_MODULE_ROWS 0, + #define INTERNAL_MODULE_ROWS 0, (isInternalModuleCrossfire() ? (uint8_t ) 0 : HIDDEN_ROW), #else #define INTERNAL_MODULE_ROWS #endif - -#if (defined(CROSSFIRE) || defined(GHOST)) - #define MAX_BAUD_ROWS 0, -#else - #define MAX_BAUD_ROWS -#endif - +#if defined(HARDWARE_EXTERNAL_MODULE) #define SERIAL_SAMPLE_MODE_ROWS 0, +#else +#define SERIAL_SAMPLE_MODE_ROWS +#endif #if defined(AUX_SERIAL) || defined(USB_SERIAL) static uint8_t _dispSerialPort(uint8_t port_nr) @@ -282,21 +277,6 @@ void onFactoryResetConfirm(const char * result) } #endif -void restartExternalModule() -{ - if (!IS_EXTERNAL_MODULE_ON()) { - return; - } - pauseMixerCalculations(); - pausePulses(); - EXTERNAL_MODULE_OFF(); - RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate - telemetryProtocol = 255; // force telemetry port + module reinitialization - EXTERNAL_MODULE_ON(); - resumePulses(); - resumeMixerCalculations(); -} - static bool _isAux1ModeAvailable(int m) { return isSerialModeAvailable(SP_AUX1, m); } static bool _isAux2ModeAvailable(int m) { return isSerialModeAvailable(SP_AUX2, m); } static bool _isVCPModeAvailable(int m) { return isSerialModeAvailable(SP_VCP, m); } @@ -322,8 +302,8 @@ void menuRadioHardware(event_t event) 0 /* battery calib */, RTC_ROW TX_CAPACITY_MEASUREMENT_ROWS + LABEL(InternalModule), INTERNAL_MODULE_ROWS - MAX_BAUD_ROWS SERIAL_SAMPLE_MODE_ROWS BLUETOOTH_ROWS EXTERNAL_ANTENNA_ROW @@ -533,9 +513,13 @@ void menuRadioHardware(event_t event) #endif #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) - case ITEM_RADIO_HARDWARE_INTERNAL_MODULE: { + case ITEM_RADIO_HARDWARE_LABEL_INTERNAL_MODULE: + lcdDrawTextAlignedLeft(y, STR_INTERNALRF); + break; + + case ITEM_RADIO_HARDWARE_INTERNAL_MODULE_TYPE: { g_eeGeneral.internalModule = - editChoice(HW_SETTINGS_COLUMN2, y, STR_INTERNAL_MODULE, + editChoice(HW_SETTINGS_COLUMN2, y, STR_TYPE, STR_INTERNAL_MODULE_PROTOCOLS, g_eeGeneral.internalModule, MODULE_TYPE_NONE, MODULE_TYPE_MAX, attr, event, isInternalModuleSupported); @@ -548,26 +532,26 @@ void menuRadioHardware(event_t event) } break; #endif -#if (defined(CROSSFIRE) || defined(GHOST)) - case ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE: - lcdDrawTextAlignedLeft(y, STR_MAXBAUDRATE); - lcdDrawNumber(HW_SETTINGS_COLUMN2, y, CROSSFIRE_BAUDRATE, attr|LEFT); +#if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) + case ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE: + lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); + lcdDrawTextAtIndex(HW_SETTINGS_COLUMN2, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),attr | LEFT); if (attr) { - g_eeGeneral.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate), 0, DIM(CROSSFIRE_BAUDRATES) - 1)); + g_eeGeneral.internalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate), 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE)); if (checkIncDec_Ret) { - restartExternalModule(); + restartInternalModule(); } } break; #endif - +#if defined(HARDWARE_EXTERNAL_MODULE) case ITEM_RADIO_HARDWARE_SERIAL_SAMPLE_MODE: g_eeGeneral.uartSampleMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_SAMPLE_MODE, STR_SAMPLE_MODES, g_eeGeneral.uartSampleMode, 0, UART_SAMPLE_MODE_MAX, attr, event); if (attr && checkIncDec_Ret) { restartExternalModule(); } break; - +#endif #if defined(BLUETOOTH) case ITEM_RADIO_HARDWARE_BLUETOOTH_MODE: lcdDrawTextAlignedLeft(y, STR_BLUETOOTH); diff --git a/radio/src/pulses/crossfire.cpp b/radio/src/pulses/crossfire.cpp index 5d1e9df4d..ff5dbda2e 100644 --- a/radio/src/pulses/crossfire.cpp +++ b/radio/src/pulses/crossfire.cpp @@ -144,7 +144,7 @@ static void* crossfireInitInternal(uint8_t module) // serial port setup etx_serial_init params(intmoduleCrossfireInitParams); - params.baudrate = CROSSFIRE_BAUDRATE; + params.baudrate = INT_CROSSFIRE_BAUDRATE; // wakeup mixer when rx buffer is quarter full (16 bytes) params.on_receive = intmoduleCRSF_rx; diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index a5be66bbc..4ed1e40d7 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -225,6 +225,11 @@ inline bool isModuleCrossfire(uint8_t idx) { return g_model.moduleData[idx].type == MODULE_TYPE_CROSSFIRE; } + +inline bool isInternalModuleCrossfire() +{ + return g_eeGeneral.internalModule == MODULE_TYPE_CROSSFIRE; +} #else inline bool isModuleCrossfire(uint8_t idx) { diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index 6226fea3a..78f82c997 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -69,6 +69,39 @@ void ModuleState::startBind(BindInformation* destination, #endif } +#if defined(HARDWARE_INTERNAL_MODULE) +void restartInternalModule() +{ + if (!IS_INTERNAL_MODULE_ON()) { + return; + } + pauseMixerCalculations(); + pausePulses(); + INTERNAL_MODULE_OFF(); + RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate + telemetryProtocol = 255; // force telemetry port + module reinitialization + INTERNAL_MODULE_ON(); + resumePulses(); + resumeMixerCalculations(); +} +#endif +#if defined(HARDWARE_EXTERNAL_MODULE) +void restartExternalModule() +{ + if (!IS_EXTERNAL_MODULE_ON()) { + return; + } + pauseMixerCalculations(); + pausePulses(); + EXTERNAL_MODULE_OFF(); + RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate + telemetryProtocol = 255; // force telemetry port + module reinitialization + EXTERNAL_MODULE_ON(); + resumePulses(); + resumeMixerCalculations(); +} +#endif + void ModuleState::readModuleInformation(ModuleInformation* destination, int8_t first, int8_t last) { diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index 0b3542934..b0ce33c6d 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -254,6 +254,8 @@ void extmodulePxx1SerialStart(); void extmodulePpmStart(); void intmoduleStop(); void extmoduleStop(); +void restartInternalModule(); +void restartExternalModule(); void getModuleStatusString(uint8_t moduleIdx, char * statusText); void getModuleSyncStatusString(uint8_t moduleIdx, char * statusText); #if defined(AFHDS3) diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 87483b853..dba07917f 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -444,7 +444,6 @@ static uint8_t select_mod_type(void* user, uint8_t* data, uint32_t bitoffs) case MODULE_TYPE_NONE: case MODULE_TYPE_PPM: case MODULE_TYPE_DSM2: - case MODULE_TYPE_CROSSFIRE: return 1; case MODULE_TYPE_MULTIMODULE: return 2; @@ -466,6 +465,8 @@ static uint8_t select_mod_type(void* user, uint8_t* data, uint32_t bitoffs) break; case MODULE_TYPE_GHOST: return 8; + case MODULE_TYPE_CROSSFIRE: + return 9; } return 0; } @@ -1752,6 +1753,13 @@ static void r_jitterFilter(void* user, uint8_t* data, uint32_t bitoffs, yaml_put_bits(data, i, bitoffs, 1); } +static void r_telemetryBaudrate(void* user, uint8_t* data, uint32_t bitoffs, + const char* val, uint8_t val_len) +{ + uint32_t i = yaml_str2uint(val, val_len); + yaml_put_bits(data, i, bitoffs, 3); +} + //struct_serialConfig static const struct YamlIdStr enum_SerialPort[] = { { SP_AUX1, "AUX1" }, diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 2356ff78e..2d645ee3b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -380,7 +380,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -665,7 +666,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -678,6 +684,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -725,61 +732,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -792,7 +799,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_WidgetPersistentData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index a2622b157..a5b79fa88 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -351,7 +351,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -633,7 +634,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -646,6 +652,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +695,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +762,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index 88ea0ea88..fdb323b39 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -351,7 +351,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -633,7 +634,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -646,6 +652,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +695,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +762,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index 88ea0ea88..fdb323b39 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -351,7 +351,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -633,7 +634,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -646,6 +652,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +695,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +762,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index dbeb31752..4525810be 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -359,7 +359,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -639,7 +640,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -652,6 +658,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -694,61 +701,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -761,7 +768,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index 635d89788..e5eae7c00 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -351,7 +351,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -633,7 +634,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -646,6 +652,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +695,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +762,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 2055309f4..aa3d02998 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -401,7 +401,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -686,7 +687,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -699,6 +705,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -746,61 +753,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -813,7 +820,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_WidgetPersistentData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 943268070..5e2fad015 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -399,7 +399,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -684,7 +685,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -697,6 +703,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -744,61 +751,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -811,7 +818,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_WidgetPersistentData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index 88ea0ea88..fdb323b39 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -351,7 +351,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -633,7 +634,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -646,6 +652,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +695,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +762,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index d381ab956..fd45bdb41 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -358,7 +358,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -641,7 +642,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -654,6 +660,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -701,61 +708,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -768,7 +775,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index aadf0929f..787052d09 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -397,7 +397,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -680,7 +681,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -693,6 +699,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -740,61 +747,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -807,7 +814,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index 6353788e5..cd51911b5 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -338,7 +338,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -618,7 +619,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -631,6 +637,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -673,61 +680,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -740,7 +747,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index 33067c2de..c971edba1 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -346,7 +346,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -628,7 +629,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -641,6 +647,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -683,61 +690,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -750,7 +757,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index c85241074..abc707a28 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -343,7 +343,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -625,7 +626,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -638,6 +644,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -680,61 +687,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -747,7 +754,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index 1edcbe5a4..b56c93f11 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -345,7 +345,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -629,7 +630,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -642,6 +648,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -684,61 +691,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -751,7 +758,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp index 944938207..c1c0ae7df 100644 --- a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp @@ -351,7 +351,8 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -633,7 +634,12 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), + YAML_END +}; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; static const struct YamlNode union_anonymous_4_elmts[] = { @@ -646,6 +652,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +695,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +762,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/targets/horus/telemetry_driver.cpp b/radio/src/targets/horus/telemetry_driver.cpp index 618b07873..c4bd8698c 100644 --- a/radio/src/targets/horus/telemetry_driver.cpp +++ b/radio/src/targets/horus/telemetry_driver.cpp @@ -267,7 +267,7 @@ void telemetryPortSetDirectionInput() { sportWaitTransmissionComplete(); #if defined(GHOST) && SPORT_MAX_BAUDRATE < 400000 - if (isModuleGhost(EXTERNAL_MODULE) && g_eeGeneral.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { + if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { TELEMETRY_USART->BRR = BRR_115K; } #endif diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index f634c5b21..887e81adf 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -229,7 +229,7 @@ void telemetryPortSetDirectionInput() { sportWaitTransmissionComplete(); #if defined(GHOST) && SPORT_MAX_BAUDRATE < 400000 - if (isModuleGhost(EXTERNAL_MODULE) && g_eeGeneral.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { + if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { TELEMETRY_USART->BRR = BRR_115K; } #endif diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index 044cd3415..b3dce3dfd 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -110,6 +110,13 @@ const uint32_t CROSSFIRE_BAUDRATES[] = { 3750000, 5250000, }; + +#if defined(RADIO_TPRO) +#define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 3 +#else +#define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 1 +#endif + const uint8_t CROSSFIRE_FRAME_PERIODS[] = { 16, 4, @@ -132,8 +139,9 @@ const uint8_t CROSSFIRE_FRAME_PERIODS[] = { % DIM(CROSSFIRE_BAUDRATES) #endif -#define CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate)] -#define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate)] * 1000) +#define INT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate)] +#define EXT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate)] +#define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate)] * 1000) #define CROSSFIRE_TELEM_MIRROR_BAUDRATE 115200 diff --git a/radio/src/telemetry/ghost.cpp b/radio/src/telemetry/ghost.cpp index 5fcf48353..2b12768c1 100755 --- a/radio/src/telemetry/ghost.cpp +++ b/radio/src/telemetry/ghost.cpp @@ -91,7 +91,7 @@ const GhostSensor ghostSensors[] = { uint8_t getGhostModuleAddr() { #if SPORT_MAX_BAUDRATE < 400000 - return g_eeGeneral.telemetryBaudrate == GHST_TELEMETRY_RATE_400K ? GHST_ADDR_MODULE_SYM : GHST_ADDR_MODULE_ASYM; + return g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate == GHST_TELEMETRY_RATE_400K ? GHST_ADDR_MODULE_SYM : GHST_ADDR_MODULE_ASYM; #else return GHST_ADDR_MODULE_SYM; #endif diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index c2d577359..b9c3ebaba 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -450,7 +450,7 @@ void telemetryInit(uint8_t protocol) #if defined(CROSSFIRE) else if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) { - telemetryPortInit(CROSSFIRE_BAUDRATE, TELEMETRY_SERIAL_DEFAULT); + telemetryPortInit(EXT_CROSSFIRE_BAUDRATE, TELEMETRY_SERIAL_DEFAULT); #if defined(LUA) outputTelemetryBuffer.reset(); #endif diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index e987dc4b8..b65850e5d 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -201,6 +201,7 @@ const char STR_BEEPCOUNTDOWN[] = TR_BEEPCOUNTDOWN; const char STR_PERSISTENT[] = TR_PERSISTENT; const char STR_BACKLIGHT_LABEL[] = TR_BACKLIGHT_LABEL; const char STR_GHOST_MENU_LABEL[] = TR_GHOST_MENU_LABEL; +const char STR_STATUS[] = TR_STATUS; const char STR_BLDELAY[] = TR_BLDELAY; const char STR_RXCHANNELORD[] = TR_RXCHANNELORD; const char STR_STICKS[] = TR_STICKS; @@ -457,8 +458,9 @@ const char STR_FORMATTING[] = TR_FORMATTING; const char STR_TEMP_CALIB[] = TR_TEMP_CALIB; const char STR_TIME[] = TR_TIME; const char STR_MAXBAUDRATE[] = TR_MAXBAUDRATE; +const char STR_BAUDRATE[] = TR_BAUDRATE; const char STR_SAMPLE_MODE[] = TR_SAMPLE_MODE; -const char STR_BAUDRATE[] = TR_BAUDRATE; +const char STR_BLUETOOTH_BAUDRATE[] = TR_BLUETOOTH_BAUDRATE; const char STR_SD_INFO_TITLE[] = TR_SD_INFO_TITLE; const char STR_SD_TYPE[] = TR_SD_TYPE; const char STR_SD_SPEED[] = TR_SD_SPEED; diff --git a/radio/src/translations.h b/radio/src/translations.h index 275983329..505c22bcc 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -323,6 +323,7 @@ extern const char STR_BEEPCOUNTDOWN[]; extern const char STR_PERSISTENT[]; extern const char STR_BACKLIGHT_LABEL[]; extern const char STR_GHOST_MENU_LABEL[]; +extern const char STR_STATUS[]; extern const char STR_BLDELAY[]; #if defined(PWM_BACKLIGHT) || defined(COLORLCD) @@ -704,9 +705,10 @@ extern const char STR_FORMATTING[]; extern const char STR_TEMP_CALIB[]; extern const char STR_TIME[]; extern const char STR_MAXBAUDRATE[]; +extern const char STR_BAUDRATE[]; extern const char STR_SAMPLE_MODE[]; extern const char STR_SAMPLE_MODES[]; -extern const char STR_BAUDRATE[]; +extern const char STR_BLUETOOTH_BAUDRATE[]; extern const char STR_SD_INFO_TITLE[]; extern const char STR_SD_TYPE[]; extern const char STR_SD_SPEED[]; diff --git a/radio/src/translations/cn.h.txt b/radio/src/translations/cn.h.txt index f5ba7beae..3139efe10 100644 --- a/radio/src/translations/cn.h.txt +++ b/radio/src/translations/cn.h.txt @@ -474,6 +474,7 @@ #define TR_BACKLIGHT_LABEL "背光" #define TR_BLDELAY INDENT "Duration" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLONBRIGHTNESS "背光开" #define TR_BLOFFBRIGHTNESS "背光关" #define TR_KEYS_BACKLIGHT "按键背光" @@ -768,6 +769,7 @@ #define TR_TEMP_CALIB "温度校准" #define TR_TIME "时间" #define TR_MAXBAUDRATE "最大带宽" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -777,7 +779,7 @@ #define TR_BLUETOOTH_DIST_ADDR "目标地址" #define TR_BLUETOOTH_LOCAL_ADDR "本机地址" #define TR_BLUETOOTH_PIN_CODE "PIN码" -#define TR_BAUDRATE "蓝牙带宽" +#define TR_BLUETOOTH_BAUDRATE "蓝牙带宽" #define LEN_BLUETOOTH_MODES "\004" #define TR_BLUETOOTH_MODES "---\0" "回传" "教练" #define TR_SELECT_TEMPLATE_FOLDER "SELECT A TEMPLATE FOLDER:" diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index d0e513eea..0a26d8498 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -510,6 +510,7 @@ #define TR_PERSISTENT INDENT"Trvalé" #define TR_BACKLIGHT_LABEL "Podsvětlení" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Zhasnout po" #define TR_BLONBRIGHTNESS TR3(INDENT"Jas Zap.", INDENT"Jas Zap.", INDENT"Jas zapnutého LCD") #define TR_BLOFFBRIGHTNESS TR3(INDENT"Jas Vyp.", INDENT"Jas Vyp.", INDENT"Jas vypnutého LCD") @@ -807,6 +808,7 @@ #define TR_TEMP_CALIB " +=\006Teplota" #define TR_TIME "Čas" #define TR_MAXBAUDRATE "Max baudů" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -825,7 +827,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Vzdál. addr" #define TR_BLUETOOTH_LOCAL_ADDR "Lokál. addr" #define TR_BLUETOOTH_PIN_CODE TR("PIN kód", "PIN kód") -#define TR_BAUDRATE "Baudrate BT" +#define TR_BLUETOOTH_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Povoleno\0 " diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 50e70359c..0d47943b1 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -513,6 +513,7 @@ #define TR_PERSISTENT TR(INDENT "Permanent", INDENT "Permanent") #define TR_BACKLIGHT_LABEL "LCD-Beleuchtung" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Dauer" #define TR_BLONBRIGHTNESS INDENT "An-Helligkeit" #define TR_BLOFFBRIGHTNESS INDENT "Aus-Helligkeit" @@ -809,6 +810,7 @@ #define TR_TEMP_CALIB "Temp. abgl." #define TR_TIME "Uhrzeit:" #define TR_MAXBAUDRATE "Max Baud" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -827,7 +829,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 7740e909a..b34eae0a3 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -511,6 +511,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistent") #define TR_BACKLIGHT_LABEL "Backlight" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Duration" #define TR_BLONBRIGHTNESS INDENT "ON brightness" #define TR_BLOFFBRIGHTNESS INDENT "OFF brightness" @@ -813,6 +814,7 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Time" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -831,7 +833,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 3c9a1b618..75e33003b 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -510,6 +510,7 @@ #define TR_PERSISTENT TR(INDENT"Persisten.", INDENT"Persistente") #define TR_BACKLIGHT_LABEL "Luz fondo" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Duración" #define TR_BLONBRIGHTNESS INDENT"MAS brillo" #define TR_BLOFFBRIGHTNESS INDENT"MENOS brillo" @@ -811,6 +812,8 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Hora" #define TR_MAXBAUDRATE "Máx bauds" +#define TR_BAUDRATE "Baudrate" + #define TR_SAMPLE_MODE "Modo de muestra" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -829,7 +832,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dir. remota" #define TR_BLUETOOTH_LOCAL_ADDR "Dir. local" #define TR_BLUETOOTH_PIN_CODE "Código PIN" -#define TR_BAUDRATE "Velocidad BT" +#define TR_BLUETOOTH_BAUDRATE "Velocidad BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Activo\0 " diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index ad455602d..a1cb940c9 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -524,6 +524,7 @@ #define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistent") #define TR_BACKLIGHT_LABEL "Backlight" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Duration" #define TR_BLONBRIGHTNESS INDENT"ON Brightness" #define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness" @@ -825,6 +826,7 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Time" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -843,7 +845,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 9b3ce7b35..2bdf2a225 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -531,6 +531,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistant") #define TR_BACKLIGHT_LABEL "Rétroéclairage" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Durée" #define TR_BLONBRIGHTNESS INDENT "Luminosité ON" #define TR_BLOFFBRIGHTNESS INDENT "Luminosité OFF" @@ -830,6 +831,7 @@ #define TR_TEMP_CALIB "Calib. temp" #define TR_TIME "Heure" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -848,7 +850,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Addr dist." #define TR_BLUETOOTH_LOCAL_ADDR "Addr locale" #define TR_BLUETOOTH_PIN_CODE "Code PIN" -#define TR_BAUDRATE "Baudrate BT" +#define TR_BLUETOOTH_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Activé\0 " diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 133407bbd..327badac2 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -535,6 +535,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistente") #define TR_BACKLIGHT_LABEL TR("Retroillu.", "Retroilluminazione") #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Durata" #define TR_BLONBRIGHTNESS TR(INDENT "Lumin. ON", INDENT "Luminosità ON") #define TR_BLOFFBRIGHTNESS TR(INDENT "Lumin. OFF", INDENT "Luminosità OFF") @@ -831,6 +832,7 @@ #define TR_TEMP_CALIB "Temp. Calib." #define TR_TIME "Ora" #define TR_MAXBAUDRATE "Max Bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -849,7 +851,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Ind. Dist." #define TR_BLUETOOTH_LOCAL_ADDR "Ind. Loc." #define TR_BLUETOOTH_PIN_CODE "Codice PIN" -#define TR_BAUDRATE "Baudrate BT" +#define TR_BLUETOOTH_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Attivo\0 " diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 0050bc2ef..efeb64b0c 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -515,6 +515,7 @@ #define TR_PERSISTENT TR(INDENT "Vasth.", INDENT "Vasthouden") #define TR_BACKLIGHT_LABEL "LCD-Verlichting" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Duur" #define TR_BLONBRIGHTNESS INDENT "Aan-Helderheid" #define TR_BLOFFBRIGHTNESS INDENT "Uit-Helderheid" @@ -817,6 +818,7 @@ #define TR_TEMP_CALIB "Temp. Calib." #define TR_TIME "Tijd:" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -835,7 +837,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 0b2f51411..a722029b8 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -531,6 +531,7 @@ #define TR_PERSISTENT TR(INDENT "Dokł.", INDENT "Dokładny") #define TR_BACKLIGHT_LABEL "Podświetl" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Czas trwania" #define TR_BLONBRIGHTNESS INDENT"Jasnośc wł." #define TR_BLOFFBRIGHTNESS INDENT"Jasność wył." @@ -828,6 +829,7 @@ #define TR_TEMP_CALIB "Temp. kalibracji" #define TR_TIME "Czas" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -846,7 +848,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "Prędkość BT" +#define TR_BLUETOOTH_BAUDRATE "Prędkość BT" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 8030aa56b..37fcb8484 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -535,6 +535,7 @@ #define TR_PERSISTENT INDENT "Persist." #define TR_BACKLIGHT_LABEL "Backlight" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Tempo Backlight" #define TR_BLONBRIGHTNESS INDENT "ON Brightness" #define TR_BLOFFBRIGHTNESS INDENT "OFF Brightness" @@ -836,6 +837,7 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Time" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -854,7 +856,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 75128366e..21f339c8f 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -538,6 +538,7 @@ #define TR_PERSISTENT TR("Jämt på ", INDENT"Alltid På") #define TR_BACKLIGHT_LABEL "Belysning" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Av efter" #define TR_BLONBRIGHTNESS INDENT "På Ljusstyrka" #define TR_BLOFFBRIGHTNESS INDENT "Av Ljusstyrka" @@ -836,6 +837,7 @@ #define TR_TEMP_CALIB "Temp. kalib." #define TR_TIME "Tid " #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -854,7 +856,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/tw.h.txt b/radio/src/translations/tw.h.txt index ae79c6734..a4328692f 100644 --- a/radio/src/translations/tw.h.txt +++ b/radio/src/translations/tw.h.txt @@ -473,6 +473,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "關機保持") #define TR_BACKLIGHT_LABEL "背光" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Duration" #define TR_BLONBRIGHTNESS "背光開" #define TR_BLOFFBRIGHTNESS "背光關" @@ -768,6 +769,7 @@ #define TR_TEMP_CALIB "溫度校準" #define TR_TIME "時間" #define TR_MAXBAUDRATE "最大帶寬" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -786,7 +788,7 @@ #define TR_BLUETOOTH_DIST_ADDR "目標地址" #define TR_BLUETOOTH_LOCAL_ADDR "本機地址" #define TR_BLUETOOTH_PIN_CODE "PIN碼" -#define TR_BAUDRATE "藍牙帶寬" +#define TR_BLUETOOTH_BAUDRATE "藍牙帶寬" #define LEN_BLUETOOTH_MODES "\004" #define TR_BLUETOOTH_MODES "---\0" "回傳" "教練"