feat: Configurable external CRSF baud rates (see #1581)

CRSF modules baudrate
This commit is contained in:
Peter Feerick
2022-03-22 16:06:57 +10:00
committed by GitHub
59 changed files with 1295 additions and 821 deletions
@@ -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<GeneralSettings>::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<GeneralSettings>::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;
@@ -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);
};
}
@@ -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<ModuleData>::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<ModuleData>::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"]) {
+8 -8
View File
@@ -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();
+7 -6
View File
@@ -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();
};
+14
View File
@@ -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;
}
+6
View File
@@ -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);
};
@@ -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();
}
+31 -10
View File
@@ -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();
}
}
+1
View File
@@ -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);
+23 -2
View File
@@ -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();
}
+324 -317
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1075</width>
<height>438</height>
<height>527</height>
</rect>
</property>
<property name="windowTitle">
@@ -91,6 +91,329 @@
<property name="spacing">
<number>6</number>
</property>
<item row="2" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<layout class="QFormLayout" name="formLayout_col1">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="horizontalSpacing">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>4</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_protocol">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Protocol</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="AutoComboBox" name="protocol">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>180</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="AutoComboBox" name="telemetryBaudrate">
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="registrationIdLabel">
<property name="text">
<string>Registration ID</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="registrationId">
<property name="inputMask">
<string notr="true"/>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_multiProtocol">
<property name="text">
<string>Multi Radio Protocol</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="multiProtocol">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_multiSubType">
<property name="text">
<string>Sub Type</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="multiSubType">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="warning_r9mFlex">
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>198</red>
<green>17</green>
<blue>36</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>198</red>
<green>17</green>
<blue>36</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>106</red>
<green>104</green>
<blue>100</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="text">
<string>WARNING: Requires non-certified firmware!</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_failsafeMode">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Failsafe Mode</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="failsafeMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
<item>
<property name="text">
<string>Not set</string>
</property>
</item>
<item>
<property name="text">
<string>Hold</string>
</property>
</item>
<item>
<property name="text">
<string>Custom</string>
</property>
</item>
<item>
<property name="text">
<string>No Pulses</string>
</property>
</item>
<item>
<property name="text">
<string>Receiver</string>
</property>
</item>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_trainerMode">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Trainer Mode</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="AutoComboBox" name="trainerMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QCheckBox" name="disableTelem">
<property name="text">
<string>Disable Telemetry</string>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QCheckBox" name="disableChMap">
<property name="text">
<string>Disable Ch. Map</string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QCheckBox" name="racingMode">
<property name="text">
<string>Racing Mode</string>
</property>
</widget>
</item>
<item row="13" column="1">
<widget class="QCheckBox" name="raw12bits">
<property name="text">
<string>Raw 12 bits</string>
</property>
</widget>
</item>
<item row="15" column="0" colspan="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="0" column="1">
<layout class="QFormLayout" name="formLayout_2">
<property name="labelAlignment">
@@ -777,322 +1100,6 @@
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QFormLayout" name="formLayout_col1">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="horizontalSpacing">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>4</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_protocol">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Protocol</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="AutoComboBox" name="protocol">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>180</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="registrationIdLabel">
<property name="text">
<string>Registration ID</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="registrationId">
<property name="inputMask">
<string notr="true"/>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_multiProtocol">
<property name="text">
<string>Multi Radio Protocol</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="multiProtocol">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_multiSubType">
<property name="text">
<string>Sub Type</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="multiSubType">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="warning_r9mFlex">
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>198</red>
<green>17</green>
<blue>36</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>198</red>
<green>17</green>
<blue>36</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>106</red>
<green>104</green>
<blue>100</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="text">
<string>WARNING: Requires non-certified firmware!</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_failsafeMode">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Failsafe Mode</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="failsafeMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
<item>
<property name="text">
<string>Not set</string>
</property>
</item>
<item>
<property name="text">
<string>Hold</string>
</property>
</item>
<item>
<property name="text">
<string>Custom</string>
</property>
</item>
<item>
<property name="text">
<string>No Pulses</string>
</property>
</item>
<item>
<property name="text">
<string>Receiver</string>
</property>
</item>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_trainerMode">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Trainer Mode</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="AutoComboBox" name="trainerMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QCheckBox" name="disableTelem">
<property name="text">
<string>Disable Telemetry</string>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QCheckBox" name="racingMode">
<property name="text">
<string>Racing Mode</string>
</property>
</widget>
</item>
<item row="14" column="0" colspan="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="10" column="1">
<widget class="QCheckBox" name="disableChMap">
<property name="text">
<string>Disable Ch. Map</string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QCheckBox" name="raw12bits">
<property name="text">
<string>Raw 12 bits</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" colspan="3">
<widget class="QGroupBox" name="failsafesGroupBox">
<property name="styleSheet">
+7 -2
View File
@@ -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;
+77 -8
View File
@@ -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:
+66
View File
@@ -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:
{
+30 -4
View File
@@ -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,
+70 -45
View File
@@ -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)
+25 -41
View File
@@ -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);
+1 -1
View File
@@ -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;
+5
View File
@@ -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)
{
+33
View File
@@ -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)
{
+2
View File
@@ -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)
@@ -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" },
@@ -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[] = {
+27 -20
View File
@@ -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[] = {
+27 -20
View File
@@ -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[] = {
@@ -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[] = {
@@ -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[] = {
@@ -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[] = {
+27 -20
View File
@@ -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[] = {
@@ -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[] = {
+27 -20
View File
@@ -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[] = {
+27 -20
View File
@@ -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[] = {
+27 -20
View File
@@ -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[] = {
@@ -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[] = {
@@ -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[] = {
@@ -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[] = {
@@ -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[] = {
@@ -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[] = {
+1 -1
View File
@@ -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
@@ -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
+10 -2
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+3 -1
View File
@@ -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;
+3 -1
View File
@@ -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[];
+3 -1
View File
@@ -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:"
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+4 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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 "
+3 -1
View File
@@ -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" "回傳" "教練"