feat: simple global control for backlight/brightness and volume (#6684)

This commit is contained in:
philmoz
2026-01-04 17:56:50 +10:00
committed by GitHub
parent 586a567b0b
commit e80406b274
71 changed files with 812 additions and 374 deletions
@@ -667,6 +667,62 @@ void FlexSwitchesItemModel::update(const int event)
}
}
//
// ControlSourceItemModel
//
ControlSourceItemModel::ControlSourceItemModel(const GeneralSettings * const generalSettings, const ModelData * const modelData,
Firmware * firmware, const Boards * const board, const Board::Type boardType) :
AbstractDynamicItemModel(generalSettings, modelData, firmware, board, boardType)
{
setId(IMID_ControlSource);
setUpdateMask(IMUE_Hardware);
// Descending source direction: inverted (!) sources
addItems(SOURCE_TYPE_SWITCH, -board->getCapability(Board::Switches));
addItems(SOURCE_TYPE_INPUT, -board->getCapability(Board::Inputs), -board->getCapability(Board::Sticks));
// Ascending source direction (including zero)
addItems(SOURCE_TYPE_NONE, 1);
addItems(SOURCE_TYPE_INPUT, board->getCapability(Board::Inputs), board->getCapability(Board::Sticks));
addItems(SOURCE_TYPE_SWITCH, board->getCapability(Board::Switches));
}
void ControlSourceItemModel::setDynamicItemData(QStandardItem * item, const RawSource & src) const
{
item->setText(src.toString(modelData, generalSettings, boardType));
item->setData(src.isAvailable(modelData, generalSettings, boardType, RawSource::AVAILABLE_CONTROLSRC), IMDR_Available);
}
void ControlSourceItemModel::addItems(const RawSourceType & type, int count, const int start)
{
const int idxAdj = (type == SOURCE_TYPE_NONE ? -1 : 0);
int first = start + count < 0 ? start + count : start + 1;
int last = start + count < 0 ? start : start + count + 1;
for (int i = first; i < last; ++i) {
const RawSource src = RawSource(type, i + idxAdj);
QStandardItem * modelItem = new QStandardItem();
modelItem->setData(src.toValue(), IMDR_Id);
modelItem->setData(type, IMDR_Type);
setDynamicItemData(modelItem, src);
appendRow(modelItem);
}
}
void ControlSourceItemModel::update(const int event)
{
if (doUpdate(event)) {
emit aboutToBeUpdated();
for (int i = 0; i < rowCount(); ++i)
setDynamicItemData(item(i), RawSource(item(i)->data(IMDR_Id).toInt()));
emit updateComplete();
}
}
//
// CompoundItemModelFactory
//
@@ -722,6 +778,9 @@ void CompoundItemModelFactory::addItemModel(const int id)
case AbstractItemModel::IMID_FlexSwitches:
registerItemModel(new FlexSwitchesItemModel(generalSettings, modelData, firmware, board, boardType));
break;
case AbstractItemModel::IMID_ControlSource:
registerItemModel(new ControlSourceItemModel(generalSettings, modelData, firmware, board, boardType));
break;
default:
qDebug() << "Error: unknown item model: id";
break;
@@ -47,6 +47,7 @@ class AbstractItemModel: public QStandardItemModel
IMID_CurveRefType,
IMID_CurveRefFunc,
IMID_FlexSwitches,
IMID_ControlSource,
IMID_ReservedCount,
IMID_Custom
};
@@ -81,6 +82,7 @@ class AbstractItemModel: public QStandardItemModel
IMUE_Timers = 1 << 9,
IMUE_Modules = 1 << 10,
IMUE_FunctionSwitches = 1 << 11,
IMUE_Hardware = 1 << 12,
IMUE_All = IMUE_SystemRefresh | IMUE_Channels | IMUE_Curves | IMUE_FlightModes | IMUE_GVars | IMUE_Inputs |
IMUE_LogicalSwitches | IMUE_Scripts | IMUE_TeleSensors | IMUE_Timers | IMUE_Modules | IMUE_FunctionSwitches
};
@@ -349,6 +351,22 @@ class FlexSwitchesItemModel: public AbstractDynamicItemModel
virtual void setDynamicItemData(QStandardItem * item, const int value) const;
};
class ControlSourceItemModel: public AbstractDynamicItemModel
{
Q_OBJECT
public:
explicit ControlSourceItemModel(const GeneralSettings * const generalSettings, const ModelData * const modelData,
Firmware * firmware, const Boards * const board, const Board::Type boardType);
virtual ~ControlSourceItemModel() {};
public slots:
virtual void update(const int event = IMUE_SystemRefresh) override;
protected:
virtual void setDynamicItemData(QStandardItem * item, const RawSource & src) const;
void addItems(const RawSourceType & type, int count, const int start = 0);
};
//
// CompoundItemModelFactory
+10
View File
@@ -752,6 +752,11 @@ bool BoardJson::isInputFlex(const InputDefn & defn)
return defn.type == Board::AIT_FLEX;
}
const bool BoardJson::isInputFlexGyroAxis(int index) const
{
return (index >=0 && index < (int)m_inputs->size()) ? isInputFlexGyroAxis(m_inputs->at(index)) : false;
}
// static
bool BoardJson::isInputFlexGyroAxis(const InputDefn & defn)
{
@@ -761,6 +766,11 @@ bool BoardJson::isInputFlexGyroAxis(const InputDefn & defn)
val[0] == 'T' && val[1] == 'I' && val[2] == 'L' && val[3] == 'T' && val[4] == '_' && (val[5] == 'X' || val[5] == 'Y'));
}
const bool BoardJson::isInputFlexJoystickAxis(int index) const
{
return (index >=0 && index < (int)m_inputs->size()) ? isInputFlexJoystickAxis(m_inputs->at(index)) : false;
}
// static
bool BoardJson::isInputFlexJoystickAxis(const InputDefn & defn)
{
+2
View File
@@ -130,6 +130,8 @@ class BoardJson
const bool isInputCalibrated(int index) const;
const bool isInputConfigurable(int index) const;
const bool isInputIgnored(int index) const;
const bool isInputFlexGyroAxis(int index) const;
const bool isInputFlexJoystickAxis(int index) const;
const bool isInputFlexPot(int index) const;
const bool isInputFlexSwitch(int index) const;
const bool isInputStick(int index) const;
+5
View File
@@ -1159,6 +1159,11 @@ bool Boards::isInputConfigurable(int index, Board::Type board)
return getBoardJson(board)->isInputConfigurable(index);
}
bool Boards::isInputGyroAxis(int index, Board::Type board)
{
return getBoardJson(board)->isInputFlexGyroAxis(index);
}
bool Boards::isInputIgnored(int index, Board::Type board)
{
return getBoardJson(board)->isInputIgnored(index);
+1
View File
@@ -454,6 +454,7 @@ class Boards
static bool isInputAvailable(int index, Board::Type board = Board::BOARD_UNKNOWN);
static bool isInputCalibrated(int index, Board::Type board = Board::BOARD_UNKNOWN);
static bool isInputConfigurable(int index, Board::Type board = Board::BOARD_UNKNOWN);
static bool isInputGyroAxis(int index, Board::Type board = Board::BOARD_UNKNOWN);
static bool isInputIgnored(int index, Board::Type board = Board::BOARD_UNKNOWN);
static bool isInputPot(int index, Board::Type board = Board::BOARD_UNKNOWN);
static bool isInputStick(int index, Board::Type board = Board::BOARD_UNKNOWN);
@@ -25,6 +25,7 @@
#include "yaml_calibdata.h"
#include "yaml_switchconfig.h"
#include "yaml_moduledata.h"
#include "yaml_rawsource.h"
#include "eeprominterface.h"
#include "edgetxinterface.h"
@@ -370,6 +371,9 @@ Node convert<GeneralSettings>::encode(const GeneralSettings& rhs)
if (hasColorLcd)
node["selectedTheme"] = rhs.selectedTheme;
node["backlightSrc"] = rhs.backlightSrc;
node["volumeSrc"] = rhs.volumeSrc;
// Radio level tabs control (global settings)
if (hasColorLcd)
node["radioThemesDisabled"] = (int)rhs.radioThemesDisabled;
@@ -694,6 +698,9 @@ bool convert<GeneralSettings>::decode(const Node& node, GeneralSettings& rhs)
node["selectedTheme"] >> rhs.selectedTheme;
node["backlightSrc"] >> rhs.backlightSrc;
node["volumeSrc"] >> rhs.volumeSrc;
// Radio level tabs control (global settings)
node["radioThemesDisabled"] >> rhs.radioThemesDisabled;
node["radioGFDisabled"] >> rhs.radioGFDisabled;
@@ -432,6 +432,11 @@ void GeneralSettings::convert(RadioDataConversionState & cstate)
customFn[i].convert(cstate.withComponentIndex(i));
}
cstate.setComponent("");
cstate.setSubComp(tr("Backlight Source"));
backlightSrc.convert(cstate);
cstate.setSubComp(tr("Volume Source"));
volumeSrc.convert(cstate);
}
QString GeneralSettings::antennaModeToString() const
@@ -394,6 +394,9 @@ class GeneralSettings {
char selectedTheme[SELECTED_THEME_NAME_LEN + 1];
RawSource backlightSrc;
RawSource volumeSrc;
// Radio level tabs control (global settings)
bool radioThemesDisabled;
bool radioGFDisabled;
+8 -1
View File
@@ -280,7 +280,10 @@ bool RawSource::isStick(Board::Type board) const
return false;
}
bool RawSource::isAvailable(const ModelData * const model, const GeneralSettings * const gs, Board::Type board) const
bool RawSource::isAvailable(const ModelData * const model,
const GeneralSettings * const gs,
Board::Type board,
const int flags) const
{
if (type == SOURCE_TYPE_NONE && index == 0)
return true;
@@ -392,6 +395,10 @@ bool RawSource::isAvailable(const ModelData * const model, const GeneralSettings
gs->serialPort[GeneralSettings::SP_AUX2] == GeneralSettings::AUX_SERIAL_SPACEMOUSE))))
return false;
if (type == SOURCE_TYPE_INPUT && (flags & AVAILABLE_CONTROLSRC) &&
Boards::isInputGyroAxis(abs(index) - 1, board))
return false;
return true;
}
+10 -1
View File
@@ -248,6 +248,12 @@ class RawSource {
AllSourceGroups = InputSourceGroups | GVarsGroup | TelemGroup | ScriptsGroup
};
// flags to refine isAvailable
enum AvailableFlags {
AVAILABLE_ALL,
AVAILABLE_CONTROLSRC = 0x001
};
RawSource() { clear(); }
explicit RawSource(int value):
@@ -272,7 +278,10 @@ class RawSource {
RawSourceRange getRange(const ModelData * model, const GeneralSettings & settings, unsigned int flags=0) const;
bool isStick(Board::Type board = Board::BOARD_UNKNOWN) const;
bool isTimeBased(Board::Type board = Board::BOARD_UNKNOWN) const;
bool isAvailable(const ModelData * const model = nullptr, const GeneralSettings * const gs = nullptr, Board::Type board = Board::BOARD_UNKNOWN) const;
bool isAvailable(const ModelData * const model = nullptr,
const GeneralSettings * const gs = nullptr,
Board::Type board = Board::BOARD_UNKNOWN,
const int flags = 0) const;
bool isSet() const { return type != SOURCE_TYPE_NONE || index != 0; }
void clear() { type = SOURCE_TYPE_NONE; index = 0; }
static StringTagMappingTable getSpecialTypesLookupTable();
+2 -1
View File
@@ -51,8 +51,9 @@ GeneralEdit::GeneralEdit(QWidget * parent, RadioData & radioData, Firmware * fir
editorItemModels->addItemModel(AbstractItemModel::IMID_RawSwitch);
editorItemModels->addItemModel(AbstractItemModel::IMID_CustomFuncAction);
editorItemModels->addItemModel(AbstractItemModel::IMID_CustomFuncResetParam);
editorItemModels->addItemModel(AbstractItemModel::IMID_ControlSource);
addTab(new GeneralSetupPanel(this, generalSettings, firmware), tr("Setup"));
addTab(new GeneralSetupPanel(this, generalSettings, firmware, editorItemModels), tr("Setup"));
addTab(new CustomFunctionsPanel(this, nullptr, generalSettings, firmware, editorItemModels), tr("Global Functions"));
addTab(new TrainerPanel(this, generalSettings, firmware, editorItemModels), tr("Trainer"));
auto hwpnl = new HardwarePanel(this, generalSettings, firmware, editorItemModels);
+34 -4
View File
@@ -25,22 +25,22 @@
#include "filtereditemmodels.h"
#include "autocombobox.h"
#include "namevalidator.h"
#include "helpers.h"
constexpr char FIM_HATSMODE[] {"Hats Mode"};
constexpr char FIM_STICKMODE[] {"Stick Mode"};
constexpr char FIM_TEMPLATESETUP[] {"Template Setup"};
constexpr char FIM_BACKLIGHTMODE[] {"Backlight Mode"};
constexpr char FIM_CONTROLSRC[] {"Control Source"};
GeneralSetupPanel::GeneralSetupPanel(QWidget * parent, GeneralSettings & generalSettings, Firmware * firmware):
GeneralSetupPanel::GeneralSetupPanel(QWidget * parent, GeneralSettings & generalSettings,
Firmware * firmware, CompoundItemModelFactory * sharedItemModels):
GeneralPanel(parent, generalSettings, firmware),
ui(new Ui::GeneralSetup)
{
ui->setupUi(this);
Board::Type board = firmware->getBoard();
panelFilteredModels = new FilteredItemModelFactory();
panelFilteredModels->registerItemModel(new FilteredItemModel(GeneralSettings::hatsModeItemModel()), FIM_HATSMODE);
panelFilteredModels->registerItemModel(new FilteredItemModel(GeneralSettings::stickModeItemModel()), FIM_STICKMODE);
panelFilteredModels->registerItemModel(new FilteredItemModel(GeneralSettings::templateSetupItemModel(),
@@ -48,6 +48,8 @@ ui(new Ui::GeneralSetup)
GeneralSettings::RadioTypeContextSurface),
FIM_TEMPLATESETUP);
panelFilteredModels->registerItemModel(new FilteredItemModel(GeneralSettings::backlightModeItemModel()), FIM_BACKLIGHTMODE);
panelFilteredModels->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_ControlSource)),
FIM_CONTROLSRC);
QLabel *pmsl[] = {ui->ro_label, ui->ro1_label, ui->ro2_label, ui->ro3_label, ui->ro4_label, ui->ro5_label, ui->ro6_label, ui->ro7_label, ui->ro8_label, NULL};
QSlider *tpmsld[] = {ui->chkSA, ui->chkSB, ui->chkSC, ui->chkSD, ui->chkSE, ui->chkSF, ui->chkSG, ui->chkSH, NULL};
@@ -93,6 +95,18 @@ ui(new Ui::GeneralSetup)
lock = true;
ui->volumeCtrl_CB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
ui->volumeCtrl_CB->setModel(panelFilteredModels->getItemModel(FIM_CONTROLSRC));
ui->volumeCtrl_CB->setCurrentIndex(ui->volumeCtrl_CB->findData(generalSettings.volumeSrc.toValue()));
if (ui->volumeCtrl_CB->currentIndex() < 0 && generalSettings.volumeSrc.toValue() == 0)
ui->volumeCtrl_CB->setCurrentIndex(Helpers::getFirstPosValueIndex(ui->volumeCtrl_CB));
ui->brightCtrl_CB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
ui->brightCtrl_CB->setModel(panelFilteredModels->getItemModel(FIM_CONTROLSRC));
ui->brightCtrl_CB->setCurrentIndex(ui->brightCtrl_CB->findData(generalSettings.backlightSrc.toValue()));
if (ui->brightCtrl_CB->currentIndex() < 0 && generalSettings.backlightSrc.toValue() == 0)
ui->brightCtrl_CB->setCurrentIndex(Helpers::getFirstPosValueIndex(ui->brightCtrl_CB));
ui->backlightswCB->setModel(panelFilteredModels->getItemModel(FIM_BACKLIGHTMODE));
ui->backlightswCB->setCurrentIndex(ui->backlightswCB->findData(generalSettings.backlightMode));
@@ -729,6 +743,22 @@ void GeneralSetupPanel::on_OFFBright_SB_editingFinished()
}
}
void GeneralSetupPanel::on_volumeCtrl_CB_currentIndexChanged(int index)
{
if (!lock) {
generalSettings.volumeSrc = RawSource(ui->volumeCtrl_CB->itemData(ui->volumeCtrl_CB->currentIndex()).toInt());
emit modified();
}
}
void GeneralSetupPanel::on_brightCtrl_CB_currentIndexChanged(int index)
{
if (!lock) {
generalSettings.backlightSrc = RawSource(ui->brightCtrl_CB->itemData(ui->brightCtrl_CB->currentIndex()).toInt());
emit modified();
}
}
void GeneralSetupPanel::on_volume_SL_valueChanged()
{
if (!lock) {
+3 -1
View File
@@ -35,7 +35,7 @@ class GeneralSetupPanel : public GeneralPanel
Q_OBJECT
public:
GeneralSetupPanel(QWidget *parent, GeneralSettings & generalSettings, Firmware * firmware);
GeneralSetupPanel(QWidget *parent, GeneralSettings & generalSettings, Firmware * firmware, CompoundItemModelFactory * sharedItemModels);
virtual ~GeneralSetupPanel();
private slots:
@@ -47,6 +47,8 @@ class GeneralSetupPanel : public GeneralPanel
void on_displayTypeCB_currentIndexChanged(int index);
void on_BLBright_SB_editingFinished();
void on_OFFBright_SB_editingFinished();
void on_brightCtrl_CB_currentIndexChanged(int index);
void on_volumeCtrl_CB_currentIndexChanged(int index);
void on_countrycode_CB_currentIndexChanged(int index);
void on_units_CB_currentIndexChanged(int index);
void on_ppm_units_CB_currentIndexChanged(int index);
+24 -2
View File
@@ -651,6 +651,10 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="volumeCtrl_CB">
</widget>
</item>
<item row="14" column="1">
<widget class="QSpinBox" name="BLBright_SB">
<property name="maximum">
@@ -722,13 +726,20 @@
</property>
</widget>
</item>
<item row="16" column="0">
<item row="15" column="0">
<widget class="QLabel" name="label_OFFBright">
<property name="text">
<string>Backlight OFF Brightness</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="label_BrightCtrl">
<property name="text">
<string>Backlight Control</string>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QComboBox" name="backlightswCB">
<property name="toolTip">
@@ -932,7 +943,7 @@
</property>
</widget>
</item>
<item row="16" column="1">
<item row="15" column="1">
<widget class="QSpinBox" name="OFFBright_SB">
<property name="minimum">
<number>5</number>
@@ -942,6 +953,10 @@
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QComboBox" name="brightCtrl_CB">
</widget>
</item>
<item row="19" column="0">
<widget class="QLabel" name="stickReverseLB">
<property name="sizePolicy">
@@ -1147,6 +1162,13 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_volumeCtrl">
<property name="text">
<string>Volume Control</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="speakerPitchSB">
<property name="toolTip">
+22 -3
View File
@@ -365,6 +365,10 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
addParams();
}
connect(this, &HardwarePanel::inputFlexTypeChanged, [=](AutoComboBox *cb, int index)
{ setFlexTypeModel(cb, index); }
);
connect(this, &HardwarePanel::refreshItemModels, [=]() { updateItemModels(); });
addVSpring(grid, 0, grid->rowCount());
addHSpring(grid, grid->columnCount(), 0);
disableMouseScrolling();
@@ -446,6 +450,7 @@ void HardwarePanel::addFlex(int index)
name->setValidator(new NameValidator(board, this));
name->setField(config.name, HARDWARE_NAME_LEN, this);
params->append(name);
connect(name, &AutoLineEdit::editingFinished, [=] () { emit refreshItemModels(); });
AutoComboBox *type = new AutoComboBox(this);
setFlexTypeModel(type, index);
@@ -465,11 +470,10 @@ void HardwarePanel::addFlex(int index)
} else {
invertToggles[index - Boards::getCapability(board, Board::Sticks)]->show();
}
emit InputFlexTypeChanged();
emit inputFlexTypeChanged(type, index);
emit refreshItemModels();
});
connect(this, &HardwarePanel::InputFlexTypeChanged, [=]() { setFlexTypeModel(type, index); });
params->append(type);
AutoCheckBox *inverted = new AutoCheckBox(this);
@@ -508,6 +512,7 @@ void HardwarePanel::addSwitch(int index)
name->setValidator(new NameValidator(board, this));
name->setField(config.name, HARDWARE_NAME_LEN, this);
params->append(name);
connect(name, &AutoLineEdit::editingFinished, [=] () { emit refreshItemModels(); });
AutoComboBox *input = nullptr;
@@ -538,6 +543,12 @@ void HardwarePanel::addSwitch(int index)
type->setField(config.type, this);
params->append(type);
if (!generalSettings.isSwitchFunc(index)) {
connect(type, &AutoComboBox::currentDataChanged, [=] (int val) {
emit refreshItemModels();
});
}
if (generalSettings.isSwitchFlex(index)) {
connect(input, &AutoComboBox::currentDataChanged, [=] (int val) {
if (val < 0) {
@@ -547,6 +558,8 @@ void HardwarePanel::addSwitch(int index)
}
else
type->setModel(tabFilteredModels->getItemModel(FIM_SWITCHTYPE3POS));
emit refreshItemModels();
});
}
@@ -562,6 +575,7 @@ void HardwarePanel::addSwitch(int index)
connect(type, &AutoComboBox::currentDataChanged, [=] (int val) {
start->setEnabled(val == Board::SWITCH_2POS);
emit refreshItemModels();
});
if (Boards::getCapability(board, Board::FunctionSwitchColors)) {
@@ -677,3 +691,8 @@ void HardwarePanel::updateSerialPortUSBVCP()
view->setRowHidden(i, false);
}
}
void HardwarePanel::updateItemModels()
{
editorItemModels->update(AbstractItemModel::IMUE_Hardware);
}
+3 -1
View File
@@ -41,7 +41,8 @@ class HardwarePanel : public GeneralPanel
signals:
void internalModuleChanged();
void InputFlexTypeChanged();
void inputFlexTypeChanged(AutoComboBox *cb, int index);
void refreshItemModels();
private slots:
void on_internalModuleChanged();
@@ -73,4 +74,5 @@ class HardwarePanel : public GeneralPanel
void setFlexTypeModel(AutoComboBox * cb, int index);
void updateSerialPortUSBVCP();
void updateItemModels();
};
+5 -5
View File
@@ -77,15 +77,15 @@ static inline void check_struct()
#endif
#if defined(PCBXLITES)
CHKSIZE(RadioData, 945);
CHKSIZE(RadioData, 948);
#elif defined(RADIO_ST16) || defined(PCBPA01) || defined(RADIO_TX15) || defined(RADIO_T15PRO)
CHKSIZE(RadioData, 1177);
CHKSIZE(RadioData, 1179);
#elif defined(COLORLCD)
CHKSIZE(RadioData, 1057);
CHKSIZE(RadioData, 1059);
#elif defined(RADIO_GX12)
CHKSIZE(RadioData, 1063);
CHKSIZE(RadioData, 1066);
#else
CHKSIZE(RadioData, 943);
CHKSIZE(RadioData, 946);
#endif
#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_BUMBLEBEE)
+23 -21
View File
@@ -1127,6 +1127,26 @@ PACK(struct RadioData {
NOBACKUP(char selectedTheme[SELECTED_THEME_NAME_LEN]);
#endif
NOBACKUP(int16_t backlightSrc:10 CUST(r_mixSrcRawEx,w_mixSrcRawEx));
NOBACKUP(int16_t radioGFDisabled:1);
NOBACKUP(int16_t radioTrainerDisabled:1);
NOBACKUP(int16_t modelHeliDisabled:1);
NOBACKUP(int16_t modelFMDisabled:1);
NOBACKUP(int16_t modelCurvesDisabled:1);
NOBACKUP(int16_t modelGVDisabled:1);
NOBACKUP(int16_t volumeSrc:10 CUST(r_mixSrcRawEx,w_mixSrcRawEx));
NOBACKUP(int16_t modelLSDisabled:1);
NOBACKUP(int16_t modelSFDisabled:1);
NOBACKUP(int16_t modelCustomScriptsDisabled:1);
NOBACKUP(int16_t modelTelemetryDisabled:1);
NOBACKUP(int16_t disableTrainerPoweroffAlarm:1);
NOBACKUP(int16_t disablePwrOnOffHaptic:1);
NOBACKUP(uint8_t modelQuickSelect:1);
#if defined(COLORLCD)
NOBACKUP(uint8_t labelSingleSelect:1); // 0 = multi-select, 1 = single select labels
NOBACKUP(uint8_t labelMultiMode:1); // 0 = match all labels (AND), 1 = match any labels (OR)
@@ -1134,30 +1154,12 @@ PACK(struct RadioData {
// Radio level tabs control (global settings)
NOBACKUP(uint8_t modelSelectLayout:2);
NOBACKUP(uint8_t radioThemesDisabled:1);
#endif
NOBACKUP(uint8_t radioGFDisabled:1);
NOBACKUP(uint8_t radioTrainerDisabled:1);
// Model level tabs control (global setting)
NOBACKUP(uint8_t modelHeliDisabled:1);
NOBACKUP(uint8_t modelFMDisabled:1);
NOBACKUP(uint8_t modelCurvesDisabled:1);
NOBACKUP(uint8_t modelGVDisabled:1);
NOBACKUP(uint8_t modelLSDisabled:1);
NOBACKUP(uint8_t modelSFDisabled:1);
NOBACKUP(uint8_t modelCustomScriptsDisabled:1);
NOBACKUP(uint8_t modelTelemetryDisabled:1);
NOBACKUP(uint8_t disableTrainerPoweroffAlarm:1);
NOBACKUP(uint8_t disablePwrOnOffHaptic:1);
NOBACKUP(uint8_t modelQuickSelect:1);
#if defined(COLORLCD)
NOBACKUP(uint8_t spare:5 SKIP);
NOBACKUP(uint8_t spare:1 SKIP);
#elif LCD_W == 128
uint8_t invertLCD:1; // Invert B&W LCD display
NOBACKUP(uint8_t spare:2 SKIP);
NOBACKUP(uint8_t spare:6 SKIP);
#else
NOBACKUP(uint8_t spare:3 SKIP);
NOBACKUP(uint8_t spare:7 SKIP);
#endif
NOBACKUP(uint8_t pwrOffIfInactive);
+28
View File
@@ -582,6 +582,34 @@ ls_telemetry_value_t maxTelemValue(source_t channel)
return 30000;
}
void calcBacklightValue(int16_t source)
{
getvalue_t raw = getValue(source);
#if defined(COLORLCD)
requiredBacklightBright = BACKLIGHT_LEVEL_MAX - (g_eeGeneral.blOffBright +
((1024 + raw) * ((BACKLIGHT_LEVEL_MAX - g_eeGeneral.backlightBright) - g_eeGeneral.blOffBright) / 2048));
#elif defined(OLED_SCREEN)
requiredBacklightBright = (raw + 1024) * 254 / 2048;
#else
requiredBacklightBright = (1024 - raw) * 100 / 2048;
#endif
}
#define VOLUME_HYSTERESIS 10 // how much must a input value change to actually be considered for new volume setting
getvalue_t requiredSpeakerVolumeRawLast = 1024 + 1; //initial value must be outside normal range
void calcVolumeValue(int16_t source)
{
getvalue_t raw = getValue(source);
// only set volume if input changed more than hysteresis
if (abs(requiredSpeakerVolumeRawLast - raw) > VOLUME_HYSTERESIS) {
requiredSpeakerVolumeRawLast = raw;
}
requiredSpeakerVolume =
((1024 + requiredSpeakerVolumeRawLast) * VOLUME_LEVEL_MAX) /
2048;
}
void checkBacklight()
{
static uint8_t tmr10ms ;
+4
View File
@@ -434,6 +434,7 @@ enum FunctionsActive {
FUNCTION_RACING_MODE,
FUNCTION_DISABLE_TOUCH,
FUNCTION_DISABLE_AUDIO_AMP,
FUNCTION_VOLUME,
};
#define VARIO_FREQUENCY_ZERO 700/*Hz*/
@@ -891,3 +892,6 @@ extern bool modelTelemetryEnabled();
int pwrDelayFromYaml(int delay);
int pwrDelayToYaml(int delay);
void calcBacklightValue(int16_t source);
void calcVolumeValue(int16_t source);
+4 -22
View File
@@ -146,9 +146,6 @@ bool isRepeatDelayElapsed(const CustomFunctionData * functions, CustomFunctionsC
}
}
#define VOLUME_HYSTERESIS 10 // how much must a input value change to actually be considered for new volume setting
getvalue_t requiredSpeakerVolumeRawLast = 1024 + 1; //initial value must be outside normal range
void evalFunctions(CustomFunctionData * functions, CustomFunctionsContext & functionsContext)
{
MASK_FUNC_TYPE newActiveFunctions = 0;
@@ -315,14 +312,8 @@ void evalFunctions(CustomFunctionData * functions, CustomFunctionsContext & func
#if defined(AUDIO)
case FUNC_VOLUME: {
getvalue_t raw = getValue(CFN_PARAM(cfn));
// only set volume if input changed more than hysteresis
if (abs(requiredSpeakerVolumeRawLast - raw) > VOLUME_HYSTERESIS) {
requiredSpeakerVolumeRawLast = raw;
}
requiredSpeakerVolume =
((1024 + requiredSpeakerVolumeRawLast) * VOLUME_LEVEL_MAX) /
2048;
newActiveFunctions |= (1u << FUNCTION_VOLUME);
calcVolumeValue(CFN_PARAM(cfn));
break;
}
#endif
@@ -402,18 +393,9 @@ void evalFunctions(CustomFunctionData * functions, CustomFunctionsContext & func
// like original backlight and turn on
// regardless of backlight settings
requiredBacklightBright = BACKLIGHT_FORCED_ON;
break;
} else {
calcBacklightValue(CFN_PARAM(cfn));
}
getvalue_t raw = limit(-RESX, (int)getValue(CFN_PARAM(cfn)), RESX);
#if defined(COLORLCD)
requiredBacklightBright = BACKLIGHT_LEVEL_MAX - (g_eeGeneral.blOffBright +
((1024 + raw) * ((BACKLIGHT_LEVEL_MAX - g_eeGeneral.backlightBright) - g_eeGeneral.blOffBright) / 2048));
#elif defined(OLED_SCREEN)
requiredBacklightBright = (raw + 1024) * 254 / 2048;
#else
requiredBacklightBright = (1024 - raw) * 100 / 2048;
#endif
break;
}
+51 -17
View File
@@ -49,15 +49,17 @@ int8_t slider_5pos(coord_t y, int8_t value, event_t event, uint8_t attr, const c
enum {
CASE_RTCLOCK(ITEM_RADIO_SETUP_DATE)
CASE_RTCLOCK(ITEM_RADIO_SETUP_TIME)
ITEM_RADIO_SETUP_SOUND_LABEL,
CASE_AUDIO(ITEM_RADIO_SETUP_SOUND_LABEL)
CASE_AUDIO(ITEM_RADIO_SETUP_BEEP_MODE)
ITEM_RADIO_SETUP_SPEAKER_VOLUME,
ITEM_RADIO_SETUP_BEEP_VOLUME,
ITEM_RADIO_SETUP_BEEP_LENGTH,
CASE_AUDIO(ITEM_RADIO_SETUP_SPEAKER_VOLUME)
CASE_AUDIO(ITEM_RADIO_SETUP_BEEP_VOLUME)
CASE_AUDIO(ITEM_RADIO_SETUP_BEEP_LENGTH)
CASE_AUDIO(ITEM_RADIO_SETUP_SPEAKER_PITCH)
ITEM_RADIO_SETUP_WAV_VOLUME,
ITEM_RADIO_SETUP_BACKGROUND_VOLUME,
ITEM_RADIO_SETUP_START_SOUND,
CASE_AUDIO(ITEM_RADIO_SETUP_WAV_VOLUME)
CASE_AUDIO(ITEM_RADIO_SETUP_BACKGROUND_VOLUME)
CASE_AUDIO(ITEM_RADIO_SETUP_VOLUME_SOURCE)
CASE_AUDIO(ITEM_RADIO_SETUP_VOLUME_SOURCE_OVRRIDE)
CASE_AUDIO(ITEM_RADIO_SETUP_START_SOUND)
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_LABEL)
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_VOLUME)
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_PITCH)
@@ -82,6 +84,8 @@ enum {
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_DELAY)
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BRIGHTNESS)
CASE_CONTRAST(ITEM_RADIO_SETUP_CONTRAST)
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_SOURCE)
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_SOURCE_OVERRIDE)
CASE_BACKLIGHT(ITEM_RADIO_SETUP_FLASH_BEEP)
CASE_SPLASH_PARAM(ITEM_RADIO_SETUP_DISABLE_SPLASH)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_ON_SPEED)
@@ -130,6 +134,8 @@ PACK(struct ExpandState {
static struct ExpandState expandState;
static uint8_t SOUND_ROW(uint8_t value) { return expandState.sound ? value : HIDDEN_ROW; }
static uint8_t SOUND_WARNING_ROW(uint8_t value) { return expandState.sound && isFunctionActive(FUNCTION_VOLUME) ? value : HIDDEN_ROW; }
static uint8_t BACKLIGHT_WARNING_ROW(uint8_t value) { return isFunctionActive(FUNCTION_BACKLIGHT) ? value : HIDDEN_ROW; }
static uint8_t ALARMS_ROW(uint8_t value) { return expandState.alarms ? value : HIDDEN_ROW; }
@@ -177,13 +183,15 @@ void menuRadioSetup(event_t event)
// Sound
0,
CASE_AUDIO(SOUND_ROW(0))
SOUND_ROW(0),
SOUND_ROW(0),
SOUND_ROW(0),
CASE_AUDIO(SOUND_ROW(0))
SOUND_ROW(0),
SOUND_ROW(0),
SOUND_ROW(0),
CASE_AUDIO(SOUND_ROW(0))
CASE_AUDIO(SOUND_ROW(0))
CASE_AUDIO(SOUND_ROW(0))
CASE_AUDIO(SOUND_ROW(0))
CASE_AUDIO(SOUND_ROW(0))
CASE_AUDIO(SOUND_ROW(0))
CASE_AUDIO(SOUND_WARNING_ROW(LABEL(0)))
CASE_AUDIO(SOUND_ROW(0))
// Vario
CASE_VARIO(LABEL(VARIO))
CASE_VARIO(0)
@@ -214,6 +222,8 @@ void menuRadioSetup(event_t event)
CASE_BACKLIGHT(0)
CASE_CONTRAST(0)
CASE_BACKLIGHT(0)
CASE_BACKLIGHT(BACKLIGHT_WARNING_ROW(LABEL(0)))
CASE_BACKLIGHT(0)
CASE_SPLASH_PARAM(0)
CASE_PWR_BUTTON_PRESS(0)
CASE_PWR_BUTTON_PRESS(0)
@@ -335,15 +345,14 @@ void menuRadioSetup(event_t event)
break;
#endif
#if defined(AUDIO)
case ITEM_RADIO_SETUP_SOUND_LABEL:
expandState.sound = expandableSection(y, STR_SOUND_LABEL, expandState.sound, attr, event);
break;
#if defined(AUDIO)
case ITEM_RADIO_SETUP_BEEP_MODE:
g_eeGeneral.beepMode = editChoice(LCD_W-2, y, STR_MODE, STR_VBEEPMODE, g_eeGeneral.beepMode, -2, 1, attr|RIGHT, event, INDENT_WIDTH);
break;
#endif
case ITEM_RADIO_SETUP_SPEAKER_VOLUME:
{
@@ -375,7 +384,6 @@ void menuRadioSetup(event_t event)
g_eeGeneral.beepLength = slider_5pos(y, g_eeGeneral.beepLength, event, attr, STR_BEEP_LENGTH);
break;
#if defined(AUDIO)
case ITEM_RADIO_SETUP_SPEAKER_PITCH:
{
lcdDrawTextIndented(y, STR_BEEP_PITCH);
@@ -388,11 +396,24 @@ void menuRadioSetup(event_t event)
}
}
break;
#endif
case ITEM_RADIO_SETUP_VOLUME_SOURCE:
lcdDrawTextIndented(y, STR_CONTROL);
drawSource(LCD_W-2, y, g_eeGeneral.volumeSrc, STREXPANDED|RIGHT|attr);
if (attr)
g_eeGeneral.volumeSrc = checkIncDec(event, g_eeGeneral.volumeSrc,
MIXSRC_NONE, MIXSRC_LAST_SWITCH, EE_MODEL|INCDEC_SOURCE|INCDEC_SOURCE_INVERT|NO_INCDEC_MARKS,
isSourceAvailableForBacklightOrVolume);
break;
case ITEM_RADIO_SETUP_VOLUME_SOURCE_OVRRIDE:
lcdDrawText(LCD_W, y, STR_SF_OVERRIDDEN, RIGHT);
break;
case ITEM_RADIO_SETUP_START_SOUND:
g_eeGeneral.dontPlayHello = !editCheckBox(!g_eeGeneral.dontPlayHello, LCD_W-9, y, STR_PLAY_HELLO, attr, event, INDENT_WIDTH) ;
break;
#endif
#if defined(VARIO)
case ITEM_RADIO_SETUP_VARIO_LABEL:
@@ -565,6 +586,19 @@ void menuRadioSetup(event_t event)
#endif
}
break;
case ITEM_RADIO_SETUP_BACKLIGHT_SOURCE:
lcdDrawTextIndented(y, STR_CONTROL);
drawSource(LCD_W-2, y, g_eeGeneral.backlightSrc, STREXPANDED|RIGHT|attr);
if (attr)
g_eeGeneral.backlightSrc = checkIncDec(event, g_eeGeneral.backlightSrc,
MIXSRC_NONE, MIXSRC_LAST_SWITCH, EE_MODEL|INCDEC_SOURCE|INCDEC_SOURCE_INVERT|NO_INCDEC_MARKS,
isSourceAvailableForBacklightOrVolume);
break;
case ITEM_RADIO_SETUP_BACKLIGHT_SOURCE_OVERRIDE:
lcdDrawText(LCD_W, y, STR_SF_OVERRIDDEN, RIGHT);
break;
#endif
#if !defined(OLED_SCREEN)
+36
View File
@@ -56,6 +56,8 @@ enum MenuRadioSetupItems {
ITEM_RADIO_SETUP_SPEAKER_PITCH,
ITEM_RADIO_SETUP_WAV_VOLUME,
ITEM_RADIO_SETUP_BACKGROUND_VOLUME,
ITEM_RADIO_SETUP_VOLUME_SOURCE,
ITEM_RADIO_SETUP_VOLUME_SOURCE_OVRRIDE,
ITEM_RADIO_SETUP_START_SOUND,
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_LABEL)
CASE_VARIO(ITEM_RADIO_SETUP_VARIO_VOLUME)
@@ -79,6 +81,8 @@ enum MenuRadioSetupItems {
ITEM_RADIO_SETUP_BRIGHTNESS,
ITEM_RADIO_SETUP_CONTRAST,
CASE_PCBX9E_PCBX9DP(ITEM_RADIO_SETUP_BACKLIGHT_COLOR)
ITEM_RADIO_SETUP_BACKLIGHT_SOURCE,
ITEM_RADIO_SETUP_BACKLIGHT_SOURCE_OVERRIDE,
ITEM_RADIO_SETUP_FLASH_BEEP,
CASE_SPLASH_PARAM(ITEM_RADIO_SETUP_DISABLE_SPLASH)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_ON_SPEED)
@@ -129,6 +133,8 @@ PACK(struct ExpandState {
static struct ExpandState expandState;
static uint8_t SOUND_ROW(uint8_t value) { return expandState.sound ? value : HIDDEN_ROW; }
static uint8_t SOUND_WARNING_ROW(uint8_t value) { return expandState.sound && isFunctionActive(FUNCTION_VOLUME) ? value : HIDDEN_ROW; }
static uint8_t BACKLIGHT_WARNING_ROW(uint8_t value) { return isFunctionActive(FUNCTION_BACKLIGHT) ? value : HIDDEN_ROW; }
static uint8_t ALARMS_ROW(uint8_t value) { return expandState.alarms ? value : HIDDEN_ROW; }
@@ -186,6 +192,8 @@ void menuRadioSetup(event_t event)
SOUND_ROW(0), // speaker piutch
SOUND_ROW(0), // wav volume
SOUND_ROW(0), // background volume
SOUND_ROW(0), // volume control
SOUND_WARNING_ROW(LABEL(0)), // volume control override warning
SOUND_ROW(0), // startup sound
// Vario
CASE_VARIO(LABEL(VARIO))
@@ -213,6 +221,8 @@ void menuRadioSetup(event_t event)
0, // brightness
0, // contrast
CASE_PCBX9E_PCBX9DP(0) // backlight color
0, // backlight control
BACKLIGHT_WARNING_ROW(LABEL(0)), // backlight control override warning
0, // flash beep
CASE_SPLASH_PARAM(0) // disable splash
CASE_PWR_BUTTON_PRESS(0) // pwr on speed
@@ -407,6 +417,19 @@ void menuRadioSetup(event_t event)
}
break;
case ITEM_RADIO_SETUP_VOLUME_SOURCE:
lcdDrawTextIndented(y, STR_CONTROL);
drawSource(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.volumeSrc, STREXPANDED|attr);
if (attr)
g_eeGeneral.volumeSrc = checkIncDec(event, g_eeGeneral.volumeSrc,
MIXSRC_NONE, MIXSRC_LAST_SWITCH, EE_MODEL|INCDEC_SOURCE|INCDEC_SOURCE_INVERT|NO_INCDEC_MARKS,
isSourceAvailableForBacklightOrVolume);
break;
case ITEM_RADIO_SETUP_VOLUME_SOURCE_OVRRIDE:
lcdDrawText(RADIO_SETUP_2ND_COLUMN, y, STR_SF_OVERRIDDEN, RIGHT);
break;
case ITEM_RADIO_SETUP_START_SOUND:
g_eeGeneral.dontPlayHello = !editCheckBox(!g_eeGeneral.dontPlayHello, RADIO_SETUP_2ND_COLUMN, y, STR_PLAY_HELLO, attr, event, INDENT_WIDTH) ;
break;
@@ -562,6 +585,19 @@ void menuRadioSetup(event_t event)
break;
#endif
case ITEM_RADIO_SETUP_BACKLIGHT_SOURCE:
lcdDrawTextIndented(y, STR_CONTROL);
drawSource(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.backlightSrc, STREXPANDED|attr);
if (attr)
g_eeGeneral.backlightSrc = checkIncDec(event, g_eeGeneral.backlightSrc,
MIXSRC_NONE, MIXSRC_LAST_SWITCH, EE_MODEL|INCDEC_SOURCE|INCDEC_SOURCE_INVERT|NO_INCDEC_MARKS,
isSourceAvailableForBacklightOrVolume);
break;
case ITEM_RADIO_SETUP_BACKLIGHT_SOURCE_OVERRIDE:
lcdDrawText(RADIO_SETUP_2ND_COLUMN, y, STR_SF_OVERRIDDEN, RIGHT);
break;
case ITEM_RADIO_SETUP_DISABLE_SPLASH:
lcdDrawTextAlignedLeft(y, STR_SPLASHSCREEN);
if (SPLASH_NEEDED()) {
+1 -1
View File
@@ -87,7 +87,7 @@ class SubPage : public Page
Window* setupLine(const char* title, std::function<void(Window*, coord_t, coord_t)> createEdit, coord_t lblYOffset = 0);
static constexpr coord_t EDT_X = LCD_W * 9 / 20;
static LAYOUT_SIZE(EDT_X, LCD_W * 9 / 20, LCD_W * 8 / 20)
protected:
coord_t y = 0;
@@ -31,6 +31,7 @@
#include "edgetx.h"
#include "page.h"
#include "storage/modelslist.h"
#include "sourcechoice.h"
#include "tasks/mixer_task.h"
#include "slider.h"
#include "key_shortcuts.h"
@@ -189,6 +190,26 @@ class DateTimeWindow : public Window
}
};
class ControlTextOverride : public StaticText
{
public:
ControlTextOverride(Window* parent, coord_t x, coord_t y, FunctionsActive func) :
StaticText(parent, {x + XO, y + PAD_MEDIUM, 0, 0}, STR_SF_OVERRIDDEN, COLOR_THEME_WARNING_INDEX, FONT_SZ), func(func)
{
}
void checkEvents() override
{
show(isFunctionActive(func));
}
static LAYOUT_SIZE(FONT_SZ, FONT(STD), FONT(XS))
static LAYOUT_ORIENTATION(XO, PAD_LARGE * 12, PAD_LARGE * 8)
protected:
FunctionsActive func;
};
#if defined(AUDIO)
static SetupLineDef soundPageSetupLines[] = {
{
@@ -255,6 +276,16 @@ static SetupLineDef soundPageSetupLines[] = {
GET_SET_DEFAULT(g_eeGeneral.backgroundVolume)))->setPos(x, y);
}
},
{
// Volume source
STR_DEF(STR_CONTROL),
[](Window* parent, coord_t x, coord_t y) {
auto choice = new SourceChoice(parent, {x, y, 0, 0}, MIXSRC_NONE, MIXSRC_LAST_SWITCH,
GET_SET_DEFAULT(g_eeGeneral.volumeSrc), true);
choice->setAvailableHandler(isSourceAvailableForBacklightOrVolume);
new ControlTextOverride(parent, x, y, FUNCTION_VOLUME);
}
},
#if defined(KCX_BTAUDIO)
{
STR_DEF(STR_BTAUDIO),
@@ -496,6 +527,14 @@ class BacklightPage : public SubPage
});
#endif
// Backlight/Brightness source
setupLine(STR_CONTROL, [=](Window* parent, coord_t x, coord_t y) {
auto choice = new SourceChoice(parent, {x, y, 0, 0}, MIXSRC_NONE, MIXSRC_LAST_SWITCH,
GET_SET_DEFAULT(g_eeGeneral.backlightSrc), true);
choice->setAvailableHandler(isSourceAvailableForBacklightOrVolume);
new ControlTextOverride(parent, x, y, FUNCTION_BACKLIGHT);
});
// Flash beep
setupLine(STR_ALARM, [=](Window* parent, coord_t x, coord_t y) {
new ToggleSwitch(parent, {x, y, 0, 0}, GET_SET_DEFAULT(g_eeGeneral.alarmsFlash));
+5
View File
@@ -308,6 +308,11 @@ bool isSourceAvailable(int source)
);
}
bool isSourceAvailableForBacklightOrVolume(int source)
{
return checkSourceAvailable(source, SRC_SWITCH | SRC_POT | SRC_NONE);
}
bool isLogicalSwitchAvailable(int index)
{
LogicalSwitchData * lsw = lswAddress(index);
+1
View File
@@ -60,6 +60,7 @@ bool isInputAvailable(int input);
bool isThrottleSourceAvailable(int source);
bool isLogicalSwitchAvailable(int index);
bool isAssignableFunctionAvailable(int function);
bool isSourceAvailableForBacklightOrVolume(int source);
bool isSourceAvailable(int source);
int timersSetupCount();
bool isTimerSourceAvailable(int source);
+28 -17
View File
@@ -93,6 +93,31 @@ void addPopupItem(int i_min, int i_max, int rangeMin, int rangeMax, IsValueAvail
}
}
struct popupCheckDef {
MixSources first;
MixSources last;
const char* title;
};
static const popupCheckDef popupChecks[] = {
{ MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, STR_MENU_INPUTS },
#if defined(LUA_MODEL_SCRIPTS)
{ MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, STR_MENU_LUA },
#endif
{ MIXSRC_FIRST_STICK, MIXSRC_LAST_STICK, STR_MENU_STICKS },
{ MIXSRC_FIRST_POT, MIXSRC_LAST_POT, STR_MENU_POTS },
{ MIXSRC_MIN, MIXSRC_MIN, STR_MENU_MIN },
{ MIXSRC_MAX, MIXSRC_MAX, STR_MENU_MAX },
#if defined(HELI)
{ MIXSRC_FIRST_HELI, MIXSRC_LAST_HELI, STR_MENU_HELI },
#endif
{ MIXSRC_FIRST_TRIM, MIXSRC_LAST_TRIM, STR_MENU_TRIMS },
{ MIXSRC_FIRST_SWITCH, MIXSRC_LAST_SWITCH, STR_MENU_SWITCHES },
{ MIXSRC_FIRST_TRAINER, MIXSRC_LAST_TRAINER, STR_MENU_TRAINER },
{ MIXSRC_FIRST_CH, MIXSRC_LAST_CH, STR_MENU_CHANNELS },
{ MIXSRC_FIRST_GVAR, MIXSRC_LAST_GVAR, STR_MENU_GVARS },
};
inline int showPopupMenus(event_t event, int newval, int i_min, int i_max,
unsigned int i_flags, IsValueAvailable isValueAvailable,
bool& isSource)
@@ -105,23 +130,9 @@ inline int showPopupMenus(event_t event, int newval, int i_min, int i_max,
POPUP_MENU_ADD_ITEM(STR_CONSTANT);
}
addPopupItem(i_min, i_max, MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isValueAvailable, STR_MENU_INPUTS);
#if defined(LUA_MODEL_SCRIPTS)
addPopupItem(i_min, i_max, MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isValueAvailable, STR_MENU_LUA);
#endif
if (i_min <= MIXSRC_FIRST_STICK && i_max >= MIXSRC_FIRST_STICK) POPUP_MENU_ADD_ITEM(STR_MENU_STICKS);
if (i_min <= MIXSRC_FIRST_POT && i_max >= MIXSRC_FIRST_POT) POPUP_MENU_ADD_ITEM(STR_MENU_POTS);
if (i_min <= MIXSRC_MIN && i_max >= MIXSRC_MIN) POPUP_MENU_ADD_ITEM(STR_MENU_MIN);
if (i_min <= MIXSRC_MAX && i_max >= MIXSRC_MAX) POPUP_MENU_ADD_ITEM(STR_MENU_MAX);
#if defined(HELI)
if (modelHeliEnabled())
addPopupItem(i_min, i_max, MIXSRC_FIRST_HELI, MIXSRC_LAST_HELI, isValueAvailable, STR_MENU_HELI);
#endif
if (i_min <= MIXSRC_FIRST_TRIM && i_max >= MIXSRC_FIRST_TRIM) POPUP_MENU_ADD_ITEM(STR_MENU_TRIMS);
if (i_min <= MIXSRC_FIRST_SWITCH && i_max >= MIXSRC_FIRST_SWITCH) POPUP_MENU_ADD_ITEM(STR_MENU_SWITCHES);
addPopupItem(i_min, i_max, MIXSRC_FIRST_TRAINER, MIXSRC_LAST_TRAINER, isValueAvailable, STR_MENU_TRAINER);
if (i_min <= MIXSRC_FIRST_CH && i_max >= MIXSRC_FIRST_CH) POPUP_MENU_ADD_ITEM(STR_MENU_CHANNELS);
addPopupItem(i_min, i_max, MIXSRC_FIRST_GVAR, MIXSRC_LAST_GVAR, isValueAvailable, STR_MENU_GVARS);
for (size_t i = 0; i < DIM(popupChecks); i += 1) {
addPopupItem(i_min, i_max, popupChecks[i].first, popupChecks[i].last, isValueAvailable, popupChecks[i].title);
}
if (modelTelemetryEnabled() && i_min <= MIXSRC_FIRST_TELEM && i_max >= MIXSRC_FIRST_TELEM) {
for (int i = 0; i < MAX_TELEMETRY_SENSORS; i++) {
+18 -6
View File
@@ -1194,12 +1194,6 @@ void evalMixes(uint8_t tick10ms)
// must be done after mixing because some functions use the inputs/channels values
// must be done before limits because of the applyLimit function: it checks for safety switches which would be not initialized otherwise
if (tick10ms) {
#if defined(AUDIO)
requiredSpeakerVolume = g_eeGeneral.speakerVolume + VOLUME_LEVEL_DEF;
#endif
requiredBacklightBright = g_eeGeneral.getBrightness();
if (radioGFEnabled()) {
evalFunctions(g_eeGeneral.customFn, globalFunctionsContext);
} else {
@@ -1217,6 +1211,24 @@ void evalMixes(uint8_t tick10ms)
}
}
#endif
#if defined(AUDIO)
if (!isFunctionActive(FUNCTION_VOLUME)) {
if (g_eeGeneral.volumeSrc) {
calcVolumeValue(g_eeGeneral.volumeSrc);
} else {
requiredSpeakerVolume = g_eeGeneral.speakerVolume + VOLUME_LEVEL_DEF;
}
}
#endif
if (!isFunctionActive(FUNCTION_BACKLIGHT)) {
if (g_eeGeneral.backlightSrc) {
calcBacklightValue(g_eeGeneral.backlightSrc);
} else {
requiredBacklightBright = g_eeGeneral.getBrightness();
}
}
}
//========== LIMITS ===============
@@ -367,21 +367,23 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 2 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
+16 -14
View File
@@ -427,25 +427,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
@@ -391,21 +391,23 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 2 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
@@ -418,25 +418,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_UNSIGNED( "stickDeadZone", 3 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
@@ -425,25 +425,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_UNSIGNED( "stickDeadZone", 3 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
@@ -450,25 +450,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
@@ -425,25 +425,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_UNSIGNED( "stickDeadZone", 3 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
@@ -418,25 +418,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_UNSIGNED( "stickDeadZone", 3 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
@@ -450,25 +450,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
+16 -14
View File
@@ -435,25 +435,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
@@ -450,25 +450,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
+15 -13
View File
@@ -376,21 +376,23 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 2 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
@@ -376,21 +376,23 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 2 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
@@ -450,25 +450,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
+16 -14
View File
@@ -426,25 +426,27 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_STRING("selectedTheme", 26),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 5 ),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_ARRAY("keyShortcuts", 8, 6, struct_QuickMenuPage, NULL),
YAML_ARRAY("qmFavorites", 8, 12, struct_QuickMenuPage, NULL),
+15 -13
View File
@@ -367,20 +367,22 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 3 ),
YAML_PADDING( 7 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
@@ -367,20 +367,22 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 3 ),
YAML_PADDING( 7 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
+15 -13
View File
@@ -367,20 +367,22 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_PADDING( 3 ),
YAML_PADDING( 7 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
@@ -367,21 +367,23 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 2 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
@@ -371,21 +371,23 @@ static const struct YamlNode struct_RadioData[] = {
YAML_PADDING( 3 ),
YAML_SIGNED( "imuMax", 8 ),
YAML_SIGNED( "imuOffset", 8 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_SIGNED_CUST( "backlightSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "radioGFDisabled", 1 ),
YAML_SIGNED( "radioTrainerDisabled", 1 ),
YAML_SIGNED( "modelHeliDisabled", 1 ),
YAML_SIGNED( "modelFMDisabled", 1 ),
YAML_SIGNED( "modelCurvesDisabled", 1 ),
YAML_SIGNED( "modelGVDisabled", 1 ),
YAML_SIGNED_CUST( "volumeSrc", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_SIGNED( "modelLSDisabled", 1 ),
YAML_SIGNED( "modelSFDisabled", 1 ),
YAML_SIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_SIGNED( "modelTelemetryDisabled", 1 ),
YAML_SIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_SIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 2 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
+2
View File
@@ -806,6 +806,8 @@
#define TR_VOLUME "音量"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "亮度"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU 温度"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "主板温度"
+2
View File
@@ -805,6 +805,8 @@
#define TR_VOLUME "Hlasitost"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Jas"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "Tepl. CPU\016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Tepl. MB \016>"
+2
View File
@@ -811,6 +811,8 @@
#define TR_VOLUME "Lydstyrke"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Skarphed"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU temp."
#define TR_COPROC "CoProc"
#define TR_COPROC_TEMP TR("CoProc temp", "CoProc temp.")
+2
View File
@@ -801,6 +801,8 @@
#define TR_VOLUME "Lautstärke"
#define TR_LCD "Bildschirm"
#define TR_BRIGHTNESS "Helligkeit"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU-Temp.\016>"
#define TR_COPROC "CoProz."
#define TR_COPROC_TEMP "MB Temp. \016>"
+2
View File
@@ -807,6 +807,8 @@
#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Brightness"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU temp."
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp."
+2
View File
@@ -801,6 +801,8 @@
#define TR_VOLUME "Volumen"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Brillo"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU Temp.\016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp. \016>"
+2
View File
@@ -801,6 +801,8 @@
#define TR_VOLUME "Äänenvoimakkuus"
#define TR_LCD "LCD-näyttö"
#define TR_BRIGHTNESS "Kirkkaus"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU:n lämpötila\016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp. \016>"
+2
View File
@@ -805,6 +805,8 @@
#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Luminosité"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "Temp. CPU\016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Temp. CM \016>"
+2
View File
@@ -809,6 +809,8 @@
#define TR_VOLUME "עוצמה"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "בהירות"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "טמפ' גבוה במעבד"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp."
+2
View File
@@ -806,6 +806,8 @@
#define TR_VOLUME "Volume Audio"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Luminosità"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "Temp CPU \016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Temp. MB \016>"
+2
View File
@@ -805,6 +805,8 @@
#define TR_VOLUME "音量"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "輝度"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU温度"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB温度"
+2
View File
@@ -841,6 +841,8 @@
#define TR_VOLUME "볼륨"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "밝기"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU 온도"
#define TR_COPROC "보조 프로세서"
#define TR_COPROC_TEMP "메인보드 온도"
+2
View File
@@ -803,6 +803,8 @@
#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Helderheid"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU-Temp.\016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp. \016>"
+2
View File
@@ -800,6 +800,8 @@
#define TR_VOLUME "Głośność"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Jasność"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "Temp. CPU\016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Temp. MB"
+2
View File
@@ -806,6 +806,8 @@
#define TR_VOLUME "Volume"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Brilho"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU temp."
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB Temp."
+2
View File
@@ -808,6 +808,8 @@
#define TR_VOLUME "Громкость"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Подсветка"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "Темпер проц"
#define TR_COPROC "Сопроцессор"
#define TR_COPROC_TEMP "Темпер сопроц"
+2
View File
@@ -806,6 +806,8 @@
#define TR_VOLUME "Volym"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "Ljusstyrka"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU temp.\016>"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "MB temp. \016>"
+2
View File
@@ -803,6 +803,8 @@
#define TR_VOLUME "音量"
#define TR_LCD "LCD"
#define TR_BRIGHTNESS "亮度"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU 溫度"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "主板溫度"
+2
View File
@@ -807,6 +807,8 @@
#define TR_VOLUME "Загальна гучн."
#define TR_LCD "LCD" /*use english*/
#define TR_BRIGHTNESS "Яскравість"
#define TR_CONTROL "Control"
#define TR_SF_OVERRIDDEN "Overridden by SF/GF"
#define TR_CPU_TEMP "CPU темп."
#define TR_COPROC "Сопроцессор"
#define TR_COPROC_TEMP "MB темп."
+2
View File
@@ -464,6 +464,7 @@
#define STR_CONNECTED currentLangStrings->STR_CONNECTED
#define STR_CONSTANT currentLangStrings->STR_CONSTANT
#define STR_CONTRAST currentLangStrings->STR_CONTRAST
#define STR_CONTROL currentLangStrings->STR_CONTROL
#define STR_COPROC_TEMP currentLangStrings->STR_COPROC_TEMP
#define STR_COPROC currentLangStrings->STR_COPROC
#define STR_COPY_FILE currentLangStrings->STR_COPY_FILE
@@ -907,6 +908,7 @@
#define STR_SF_LCD_TO_VIDEO currentLangStrings->STR_SF_LCD_TO_VIDEO
#define STR_SF_LOGS currentLangStrings->STR_SF_LOGS
#define STR_SF_MOD_BIND currentLangStrings->STR_SF_MOD_BIND
#define STR_SF_OVERRIDDEN currentLangStrings->STR_SF_OVERRIDDEN
#define STR_SF_PLAY_SCRIPT currentLangStrings->STR_SF_PLAY_SCRIPT
#define STR_SF_RACING_MODE currentLangStrings->STR_SF_RACING_MODE
#define STR_SF_RANGE_CHECK currentLangStrings->STR_SF_RANGE_CHECK
+2
View File
@@ -463,6 +463,7 @@ STR(CONFIRMRESET)
STR(CONNECTED)
STR(CONSTANT)
STR(CONTRAST)
STR(CONTROL)
STR(COPROC_TEMP)
STR(COPROC)
STR(COPY_FILE)
@@ -906,6 +907,7 @@ STR(SF_INST_TRIM)
STR(SF_LCD_TO_VIDEO)
STR(SF_LOGS)
STR(SF_MOD_BIND)
STR(SF_OVERRIDDEN)
STR(SF_PLAY_SCRIPT)
STR(SF_RACING_MODE)
STR(SF_RANGE_CHECK)