1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-14 11:59:50 +03:00

Merge branch '2.3.1' into 2.3

# Conflicts:
#	CREDITS.txt
#	radio/src/gui/480x272/radio_hardware.cpp
This commit is contained in:
Kilrah 2019-10-05 11:41:48 +02:00
commit b40dfdf12b
72 changed files with 544 additions and 419 deletions

View file

@ -6,7 +6,7 @@ set(VERSION_REVISION "1")
set(VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX}) set(VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX})
set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR}) set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR})
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}${VERSION_SUFFIX}) set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}${VERSION_SUFFIX})
set(SDCARD_REVISION "0021") set(SDCARD_REVISION "0022")
set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION}) set(SDCARD_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}V${SDCARD_REVISION})
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
@ -225,6 +225,11 @@ endif()
add_subdirectory(${RADIO_SRC_DIRECTORY}) add_subdirectory(${RADIO_SRC_DIRECTORY})
add_custom_target(tests-radio
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/gtests-radio
DEPENDS gtests-radio
)
if(Qt5Core_FOUND AND NOT DISABLE_COMPANION) if(Qt5Core_FOUND AND NOT DISABLE_COMPANION)
add_subdirectory(${COMPANION_SRC_DIRECTORY}) add_subdirectory(${COMPANION_SRC_DIRECTORY})
add_custom_target(gtests DEPENDS gtests-radio gtests-companion) add_custom_target(gtests DEPENDS gtests-radio gtests-companion)

View file

@ -85,6 +85,7 @@ RawSwitchItemModel::RawSwitchItemModel(const GeneralSettings * const generalSett
Firmware * fw = getCurrentFirmware(); Firmware * fw = getCurrentFirmware();
// Descending switch direction: NOT (!) switches // Descending switch direction: NOT (!) switches
addItems(SWITCH_TYPE_ACT, -1);
addItems(SWITCH_TYPE_SENSOR, -CPN_MAX_SENSORS); addItems(SWITCH_TYPE_SENSOR, -CPN_MAX_SENSORS);
addItems(SWITCH_TYPE_TELEMETRY, -1); addItems(SWITCH_TYPE_TELEMETRY, -1);
addItems(SWITCH_TYPE_FLIGHT_MODE, -fw->getCapability(FlightModes)); addItems(SWITCH_TYPE_FLIGHT_MODE, -fw->getCapability(FlightModes));
@ -107,6 +108,7 @@ RawSwitchItemModel::RawSwitchItemModel(const GeneralSettings * const generalSett
addItems(SWITCH_TYPE_SENSOR, CPN_MAX_SENSORS); addItems(SWITCH_TYPE_SENSOR, CPN_MAX_SENSORS);
addItems(SWITCH_TYPE_ON, 1); addItems(SWITCH_TYPE_ON, 1);
addItems(SWITCH_TYPE_ONE, 1); addItems(SWITCH_TYPE_ONE, 1);
addItems(SWITCH_TYPE_ACT, 1);
} }
void RawSwitchItemModel::setDynamicItemData(QStandardItem * item, const RawSwitch & rsw) const void RawSwitchItemModel::setDynamicItemData(QStandardItem * item, const RawSwitch & rsw) const

View file

@ -109,6 +109,7 @@ class GeneralSettings {
bool adjustRTC; bool adjustRTC;
bool optrexDisplay; bool optrexDisplay;
unsigned int inactivityTimer; unsigned int inactivityTimer;
unsigned int telemetryBaudrate;
bool minuteBeep; bool minuteBeep;
bool preBeep; bool preBeep;
bool flashBeep; bool flashBeep;
@ -140,6 +141,7 @@ class GeneralSettings {
unsigned int rotarySteps; unsigned int rotarySteps;
unsigned int countryCode; unsigned int countryCode;
bool jitterFilter; bool jitterFilter;
bool rtcCheckDisable;
unsigned int imperial; unsigned int imperial;
char ttsLanguage[2+1]; char ttsLanguage[2+1];
int beepVolume; int beepVolume;

View file

@ -127,12 +127,12 @@ QString ModuleData::protocolToString(unsigned protocol)
"FrSky XJT (D16)", "FrSky XJT (D8)", "FrSky XJT (LR12)", "FrSky DJT", "FrSky XJT (D16)", "FrSky XJT (D8)", "FrSky XJT (LR12)", "FrSky DJT",
"TBS Crossfire", "TBS Crossfire",
"DIY Multiprotocol Module", "DIY Multiprotocol Module",
"FrSky PXX R9M", "FrSky R9M",
"FrSky PXX R9M Lite", "FrSky R9M Lite",
"FrSky PXX R9M Lite Pro", "FrSky R9M Lite Pro",
"SBUS output at VBat", "SBUS output at VBat",
"FrSky ACCESS ISRM", "FrSky ACCST ISRM D16", "FrSky ACCESS ISRM", "FrSky ACCST ISRM D16",
"FrSky ACCESS R9M", "FrSky ACCESS R9M 2019",
"FrSky ACCESS R9M Lite", "FrSky ACCESS R9M Lite",
"FrSky ACCESS R9M Lite Pro", "FrSky ACCESS R9M Lite Pro",
"FrSky XJT lite (D16)", "FrSky XJT lite (D8)", "FrSky XJT lite (LR12)" "FrSky XJT lite (D16)", "FrSky XJT lite (D8)", "FrSky XJT lite (LR12)"

View file

@ -217,6 +217,10 @@ class SwitchesConversionTable: public ConversionTable {
addConversion(RawSwitch(SWITCH_TYPE_SENSOR, i), val++); addConversion(RawSwitch(SWITCH_TYPE_SENSOR, i), val++);
} }
} }
if (version >= 219) {
addConversion(RawSwitch(SWITCH_TYPE_ACT, -1), -val+offset);
addConversion(RawSwitch(SWITCH_TYPE_ACT, 1), val++);
}
} }
@ -1914,7 +1918,7 @@ class SensorField: public TransformedField {
if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) { if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) {
_id = sensor.id; _id = sensor.id;
_subid = sensor.subid; _subid = sensor.subid;
_instance = (sensor.instance & 0x1F) | (sensor.rxIdx << 5) | (sensor.moduleIdx << 7); _instance = sensor.instance == 0 ? 0 : ((sensor.instance - 1) & 0x1F) | (sensor.rxIdx << 5) | (sensor.moduleIdx << 7);
_ratio = sensor.ratio; _ratio = sensor.ratio;
_offset = sensor.offset; _offset = sensor.offset;
} }
@ -1942,12 +1946,12 @@ class SensorField: public TransformedField {
sensor.id = _id; sensor.id = _id;
sensor.subid = _subid; sensor.subid = _subid;
if (model.moduleData[0].isPxx1Module() || model.moduleData[1].isPxx1Module()) { if (model.moduleData[0].isPxx1Module() || model.moduleData[1].isPxx1Module()) {
sensor.instance = (_instance & 0x1F) + (version <= 218 ? -1 : 0); // 5 bits instance sensor.instance = (_instance & 0x1F) + (version <= 218 ? 0 : 1); // 5 bits instance
sensor.rxIdx = 0x03; // 2 bits Rx idx sensor.rxIdx = 0x03; // 2 bits Rx idx
sensor.moduleIdx = 0x01; // 1 bit module idx sensor.moduleIdx = 0x01; // 1 bit module idx
} }
else { else {
sensor.instance = _instance & 0x1F; sensor.instance = (_instance & 0x1F) + 1;
sensor.rxIdx = (_instance >> 5) & 0x03; // 2 bits Rx idx sensor.rxIdx = (_instance >> 5) & 0x03; // 2 bits Rx idx
sensor.moduleIdx = (_instance >> 7) & 0x1; // 1 bit module idx sensor.moduleIdx = (_instance >> 7) & 0x1; // 1 bit module idx
} }
@ -2361,8 +2365,8 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig
internalField.Append(new UnsignedField<8>(this, modelData.rssiSource)); internalField.Append(new UnsignedField<8>(this, modelData.rssiSource));
if (IS_TARANIS_X9(board)) { if (IS_TARANIS_X9(board)) {
// TODO TOPBAR internalField.Append(new UnsignedField<8>(this, modelData.frsky.voltsSource));
internalField.Append(new SpareBitsField<16>(this)); internalField.Append(new UnsignedField<8>(this, modelData.frsky.altitudeSource));
} }
internalField.Append(new BoolField<1>(this, modelData.rssiAlarms.disabled)); internalField.Append(new BoolField<1>(this, modelData.rssiAlarms.disabled));
@ -2571,7 +2575,8 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type
internalField.Append(new SignedField<2>(this, generalData.antennaMode)); internalField.Append(new SignedField<2>(this, generalData.antennaMode));
else else
internalField.Append(new SpareBitsField<2>(this)); internalField.Append(new SpareBitsField<2>(this));
internalField.Append(new SpareBitsField<3>(this)); internalField.Append(new BoolField<1>(this, generalData.rtcCheckDisable));
internalField.Append(new SpareBitsField<2>(this));
for (int i=0; i<4; i++) { for (int i=0; i<4; i++) {
internalField.Append(new SignedField<16>(this, generalData.trainer.calib[i])); internalField.Append(new SignedField<16>(this, generalData.trainer.calib[i]));
@ -2602,7 +2607,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type
} }
internalField.Append(new UnsignedField<8>(this, generalData.inactivityTimer)); internalField.Append(new UnsignedField<8>(this, generalData.inactivityTimer));
internalField.Append(new SpareBitsField<3>(this)); // telemetryBaudrate internalField.Append(new UnsignedField<3>(this, generalData.telemetryBaudrate));
if (IS_HORUS(board)) if (IS_HORUS(board))
internalField.Append(new SpareBitsField<3>(this)); internalField.Append(new SpareBitsField<3>(this));
else if (IS_TARANIS(board)) else if (IS_TARANIS(board))

View file

@ -803,13 +803,15 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port)
case PULSES_MULTIMODULE: case PULSES_MULTIMODULE:
case PULSES_CROSSFIRE: case PULSES_CROSSFIRE:
return true; return true;
case PULSES_ACCESS_R9M:
return IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || board == BOARD_TARANIS_X9DP_2019 || board == BOARD_X10_EXPRESS || (IS_HORUS(board) && id.contains("internalaccess"));
case PULSES_PXX_R9M_LITE:
case PULSES_ACCESS_R9M_LITE: case PULSES_ACCESS_R9M_LITE:
case PULSES_ACCESS_R9M_LITE_PRO: case PULSES_ACCESS_R9M_LITE_PRO:
return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board));
case PULSES_XJT_LITE_X16: case PULSES_XJT_LITE_X16:
case PULSES_XJT_LITE_D8: case PULSES_XJT_LITE_D8:
case PULSES_XJT_LITE_LR12: case PULSES_XJT_LITE_LR12:
return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); return (IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board));
default: default:
return false; return false;
} }

View file

@ -115,6 +115,9 @@ QString RawSwitch::toString(Board::Type board, const GeneralSettings * const gen
case SWITCH_TYPE_ONE: case SWITCH_TYPE_ONE:
return tr("One"); return tr("One");
case SWITCH_TYPE_ACT:
return tr("Act");
case SWITCH_TYPE_FLIGHT_MODE: case SWITCH_TYPE_FLIGHT_MODE:
if (modelData) if (modelData)
return modelData->flightModeData[index-1].nameToString(index - 1); return modelData->flightModeData[index-1].nameToString(index - 1);

View file

@ -45,6 +45,7 @@ enum RawSwitchType {
SWITCH_TYPE_TIMER_MODE, SWITCH_TYPE_TIMER_MODE,
SWITCH_TYPE_TELEMETRY, SWITCH_TYPE_TELEMETRY,
SWITCH_TYPE_SENSOR, SWITCH_TYPE_SENSOR,
SWITCH_TYPE_ACT,
MAX_SWITCH_TYPE MAX_SWITCH_TYPE
}; };

View file

@ -200,6 +200,15 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
} }
else { else {
ui->filterEnable->hide(); ui->filterEnable->hide();
ui->filterLabel->hide();
}
if (IS_STM32(board)) {
ui->rtcCheckDisable->setChecked(!generalSettings.rtcCheckDisable);
}
else {
ui->rtcCheckDisable->hide();
ui->rtcCheckLabel->hide();
} }
disableMouseScrolling(); disableMouseScrolling();
@ -217,6 +226,11 @@ void HardwarePanel::on_filterEnable_stateChanged()
generalSettings.jitterFilter = !ui->filterEnable->isChecked(); generalSettings.jitterFilter = !ui->filterEnable->isChecked();
} }
void HardwarePanel::on_rtcCheckDisable_stateChanged()
{
generalSettings.rtcCheckDisable = !ui->rtcCheckDisable->isChecked();
}
void HardwarePanel::on_PPM_MultiplierDSB_editingFinished() void HardwarePanel::on_PPM_MultiplierDSB_editingFinished()
{ {
int val = (int)(ui->PPM_MultiplierDSB->value()*10)-10; int val = (int)(ui->PPM_MultiplierDSB->value()*10)-10;

View file

@ -49,6 +49,7 @@ class HardwarePanel : public GeneralPanel
void on_txCurrentCalibration_editingFinished(); void on_txCurrentCalibration_editingFinished();
void on_txVoltageCalibration_editingFinished(); void on_txVoltageCalibration_editingFinished();
void on_filterEnable_stateChanged(); void on_filterEnable_stateChanged();
void on_rtcCheckDisable_stateChanged();
void on_serialPortMode_currentIndexChanged(int index); void on_serialPortMode_currentIndexChanged(int index);

View file

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>470</width> <width>470</width>
<height>1585</height> <height>1618</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -57,7 +57,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="43" column="1"> <item row="44" column="1">
<widget class="QSpinBox" name="PPM2"> <widget class="QSpinBox" name="PPM2">
<property name="toolTip"> <property name="toolTip">
<string/> <string/>
@ -169,7 +169,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="39" column="1"> <item row="40" column="1">
<widget class="QSpinBox" name="txCurrentCalibration"> <widget class="QSpinBox" name="txCurrentCalibration">
<property name="minimum"> <property name="minimum">
<number>-49</number> <number>-49</number>
@ -192,27 +192,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="12" column="0"> <item row="45" column="1">
<widget class="QLabel" name="rs2Label">
<property name="text">
<string>RS2</string>
</property>
</widget>
</item>
<item row="40" column="0" colspan="3">
<widget class="Line" name="ppmSeparator">
<property name="minimumSize">
<size>
<width>0</width>
<height>10</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="44" column="1">
<widget class="QSpinBox" name="PPM3"> <widget class="QSpinBox" name="PPM3">
<property name="toolTip"> <property name="toolTip">
<string/> <string/>
@ -231,6 +211,26 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="41" column="0" colspan="3">
<widget class="Line" name="ppmSeparator">
<property name="minimumSize">
<size>
<width>0</width>
<height>10</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="rs2Label">
<property name="text">
<string>RS2</string>
</property>
</widget>
</item>
<item row="13" column="0" colspan="3"> <item row="13" column="0" colspan="3">
<widget class="Line" name="potsTypeSeparator_1"> <widget class="Line" name="potsTypeSeparator_1">
<property name="minimumSize"> <property name="minimumSize">
@ -267,7 +267,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="39" column="0"> <item row="40" column="0">
<widget class="QLabel" name="txCurrentCalibrationLabel"> <widget class="QLabel" name="txCurrentCalibrationLabel">
<property name="text"> <property name="text">
<string>Current Offset</string> <string>Current Offset</string>
@ -284,7 +284,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="43" column="0"> <item row="44" column="0">
<widget class="QLabel" name="label_33"> <widget class="QLabel" name="label_33">
<property name="text"> <property name="text">
<string>PPM 2</string> <string>PPM 2</string>
@ -312,6 +312,9 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="34" column="1">
<widget class="AutoComboBox" name="antennaMode"/>
</item>
<item row="19" column="1"> <item row="19" column="1">
<widget class="AutoLineEdit" name="sfName"> <widget class="AutoLineEdit" name="sfName">
<property name="maxLength"> <property name="maxLength">
@ -322,6 +325,19 @@
<item row="8" column="2"> <item row="8" column="2">
<widget class="AutoComboBox" name="pot5Type"/> <widget class="AutoComboBox" name="pot5Type"/>
</item> </item>
<item row="20" column="2">
<widget class="AutoComboBox" name="sgType">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item row="21" column="2"> <item row="21" column="2">
<widget class="AutoComboBox" name="shType"> <widget class="AutoComboBox" name="shType">
<property name="toolTip"> <property name="toolTip">
@ -342,17 +358,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="20" column="2"> <item row="14" column="2">
<widget class="AutoComboBox" name="sgType"> <widget class="AutoComboBox" name="saType">
<property name="toolTip"> <property name="toolTip">
<string/> <string/>
</property> </property>
<property name="statusTip"> <property name="statusTip">
<string/> <string/>
</property> </property>
<property name="whatsThis">
<string/>
</property>
</widget> </widget>
</item> </item>
<item row="18" column="2"> <item row="18" column="2">
@ -375,16 +388,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="14" column="2">
<widget class="AutoComboBox" name="saType">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
</widget>
</item>
<item row="14" column="0"> <item row="14" column="0">
<widget class="QLabel" name="saLabel"> <widget class="QLabel" name="saLabel">
<property name="text"> <property name="text">
@ -434,6 +437,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="2">
<widget class="AutoComboBox" name="pot2Type">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
</widget>
</item>
<item row="29" column="2"> <item row="29" column="2">
<widget class="AutoComboBox" name="spType"> <widget class="AutoComboBox" name="spType">
<property name="toolTip"> <property name="toolTip">
@ -447,23 +460,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="10" column="1">
<widget class="AutoLineEdit" name="rsName">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="AutoComboBox" name="pot2Type">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
</widget>
</item>
<item row="35" column="1"> <item row="35" column="1">
<widget class="QCheckBox" name="filterEnable"> <widget class="QCheckBox" name="filterEnable">
<property name="text"> <property name="text">
@ -471,6 +467,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="10" column="1">
<widget class="AutoLineEdit" name="rsName">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="AutoLineEdit" name="rudName"> <widget class="AutoLineEdit" name="rudName">
<property name="maxLength"> <property name="maxLength">
@ -512,7 +515,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="46" column="1"> <item row="47" column="1">
<widget class="QDoubleSpinBox" name="PPM_MultiplierDSB"> <widget class="QDoubleSpinBox" name="PPM_MultiplierDSB">
<property name="decimals"> <property name="decimals">
<number>1</number> <number>1</number>
@ -545,6 +548,19 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="31" column="2">
<widget class="AutoComboBox" name="srType">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item row="38" column="0"> <item row="38" column="0">
<widget class="QLabel" name="txVoltageCalibrationLabel"> <widget class="QLabel" name="txVoltageCalibrationLabel">
<property name="text"> <property name="text">
@ -562,19 +578,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="31" column="2">
<widget class="AutoComboBox" name="srType">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item row="20" column="0"> <item row="20" column="0">
<widget class="QLabel" name="sgLabel"> <widget class="QLabel" name="sgLabel">
<property name="text"> <property name="text">
@ -589,9 +592,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="34" column="1">
<widget class="AutoComboBox" name="antennaMode"/>
</item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="eleLabel"> <widget class="QLabel" name="eleLabel">
<property name="text"> <property name="text">
@ -599,6 +599,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="22" column="0">
<widget class="QLabel" name="siLabel">
<property name="text">
<string>SI</string>
</property>
</widget>
</item>
<item row="7" column="1"> <item row="7" column="1">
<widget class="AutoLineEdit" name="pot4Name"> <widget class="AutoLineEdit" name="pot4Name">
<property name="maxLength"> <property name="maxLength">
@ -613,10 +620,10 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="22" column="0"> <item row="25" column="0">
<widget class="QLabel" name="siLabel"> <widget class="QLabel" name="slLabel">
<property name="text"> <property name="text">
<string>SI</string> <string>SL</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -627,13 +634,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="25" column="0">
<widget class="QLabel" name="slLabel">
<property name="text">
<string>SL</string>
</property>
</widget>
</item>
<item row="27" column="1"> <item row="27" column="1">
<widget class="AutoLineEdit" name="snName"> <widget class="AutoLineEdit" name="snName">
<property name="maxLength"> <property name="maxLength">
@ -688,7 +688,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="45" column="1"> <item row="46" column="1">
<widget class="QSpinBox" name="PPM4"> <widget class="QSpinBox" name="PPM4">
<property name="toolTip"> <property name="toolTip">
<string/> <string/>
@ -707,7 +707,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="41" column="0"> <item row="42" column="0">
<widget class="QLabel" name="label_23"> <widget class="QLabel" name="label_23">
<property name="text"> <property name="text">
<string>PPM 1</string> <string>PPM 1</string>
@ -727,14 +727,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="45" column="0"> <item row="46" column="0">
<widget class="QLabel" name="label_35"> <widget class="QLabel" name="label_35">
<property name="text"> <property name="text">
<string>PPM 4</string> <string>PPM 4</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="41" column="1"> <item row="42" column="1">
<widget class="QSpinBox" name="PPM1"> <widget class="QSpinBox" name="PPM1">
<property name="toolTip"> <property name="toolTip">
<string/> <string/>
@ -766,6 +766,20 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="15" column="0">
<widget class="QLabel" name="sbLabel">
<property name="text">
<string>SB</string>
</property>
</widget>
</item>
<item row="31" column="1">
<widget class="AutoLineEdit" name="srName">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item row="38" column="1"> <item row="38" column="1">
<widget class="QDoubleSpinBox" name="txVoltageCalibration"> <widget class="QDoubleSpinBox" name="txVoltageCalibration">
<property name="statusTip"> <property name="statusTip">
@ -788,21 +802,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="15" column="0"> <item row="47" column="0">
<widget class="QLabel" name="sbLabel">
<property name="text">
<string>SB</string>
</property>
</widget>
</item>
<item row="31" column="1">
<widget class="AutoLineEdit" name="srName">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item row="46" column="0">
<widget class="QLabel" name="label_30"> <widget class="QLabel" name="label_30">
<property name="text"> <property name="text">
<string>PPM Multiplier</string> <string>PPM Multiplier</string>
@ -903,16 +903,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="34" column="0">
<widget class="QLabel" name="antennaLabel">
<property name="text">
<string>Antenna</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="27" column="2"> <item row="27" column="2">
<widget class="AutoComboBox" name="snType"> <widget class="AutoComboBox" name="snType">
<property name="toolTip"> <property name="toolTip">
@ -933,7 +923,17 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="44" column="0"> <item row="34" column="0">
<widget class="QLabel" name="antennaLabel">
<property name="text">
<string>Antenna</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="45" column="0">
<widget class="QLabel" name="label_34"> <widget class="QLabel" name="label_34">
<property name="text"> <property name="text">
<string>PPM 3</string> <string>PPM 3</string>
@ -1029,6 +1029,26 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1">
<widget class="AutoLineEdit" name="eleName">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item row="26" column="2">
<widget class="AutoComboBox" name="smType">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item row="36" column="1"> <item row="36" column="1">
<widget class="QComboBox" name="serialPortMode"> <widget class="QComboBox" name="serialPortMode">
<item> <item>
@ -1058,26 +1078,6 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="1" column="1">
<widget class="AutoLineEdit" name="eleName">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item row="26" column="2">
<widget class="AutoComboBox" name="smType">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item row="10" column="0"> <item row="10" column="0">
<widget class="QLabel" name="rsLabel"> <widget class="QLabel" name="rsLabel">
<property name="text"> <property name="text">
@ -1113,6 +1113,20 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="39" column="1">
<widget class="QCheckBox" name="rtcCheckDisable">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="39" column="0">
<widget class="QLabel" name="rtcCheckLabel">
<property name="text">
<string>RTC Batt Check</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>

View file

@ -217,10 +217,7 @@ ModulePanel::ModulePanel(QWidget * parent, ModelData & model, ModuleData & modul
// The protocols available on this board // The protocols available on this board
for (unsigned int i=0; i<PULSES_PROTOCOL_LAST; i++) { for (unsigned int i=0; i<PULSES_PROTOCOL_LAST; i++) {
if (firmware->isAvailable((PulsesProtocol) i, moduleIdx)) { if (firmware->isAvailable((PulsesProtocol) i, moduleIdx)) {
if (IS_TARANIS_XLITE(firmware->getBoard()) && i == PULSES_PXX_R9M) //TODO remove when mini are handled as a different module type ui->protocol->addItem(ModuleData::protocolToString(i), i);
ui->protocol->addItem("FrSky R9M Mini", (QVariant) i);
else
ui->protocol->addItem(ModuleData::protocolToString(i), i);
if (i == module.protocol) if (i == module.protocol)
ui->protocol->setCurrentIndex(ui->protocol->count()-1); ui->protocol->setCurrentIndex(ui->protocol->count()-1);
} }

View file

@ -42,7 +42,7 @@ TEST(Conversions, ConversionX9DPFrom22)
EXPECT_STREQ("Thr", model.inputNames[0]); EXPECT_STREQ("Thr", model.inputNames[0]);
EXPECT_STREQ("Tes", model.sensorData[0].label); EXPECT_STREQ("Tes", model.sensorData[0].label);
EXPECT_EQ(10, model.sensorData[0].id); EXPECT_EQ(10, model.sensorData[0].id);
EXPECT_EQ(9, model.sensorData[0].instance); EXPECT_EQ(10, model.sensorData[0].instance);
EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model.logicalSw[0].val1); EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model.logicalSw[0].val1);
} }
@ -77,7 +77,7 @@ TEST(Conversions, ConversionX9DPFrom23)
EXPECT_STREQ("Rud", model1.inputNames[0]); EXPECT_STREQ("Rud", model1.inputNames[0]);
EXPECT_STREQ("Tes", model1.sensorData[0].label); EXPECT_STREQ("Tes", model1.sensorData[0].label);
EXPECT_EQ(10, model1.sensorData[0].id); EXPECT_EQ(10, model1.sensorData[0].id);
EXPECT_EQ(10, model1.sensorData[0].instance); EXPECT_EQ(11, model1.sensorData[0].instance);
EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model1.logicalSw[0].val1); EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model1.logicalSw[0].val1);
const ModelData & model2 = radioData.models[1]; const ModelData & model2 = radioData.models[1];
@ -96,7 +96,7 @@ TEST(Conversions, ConversionX9DPFrom23)
EXPECT_STREQ("Rud", model2.inputNames[0]); EXPECT_STREQ("Rud", model2.inputNames[0]);
EXPECT_STREQ("Tes", model2.sensorData[0].label); EXPECT_STREQ("Tes", model2.sensorData[0].label);
EXPECT_EQ(10, model2.sensorData[0].id); EXPECT_EQ(10, model2.sensorData[0].id);
EXPECT_EQ(10, model2.sensorData[0].instance); EXPECT_EQ(11, model2.sensorData[0].instance);
EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model2.logicalSw[0].val1); EXPECT_EQ(RawSource(SOURCE_TYPE_TELEMETRY,0).toValue(), model2.logicalSw[0].val1);
} }
@ -130,7 +130,7 @@ TEST(Conversions, ConversionX7From22)
EXPECT_STREQ("Tes", model.sensorData[0].label); EXPECT_STREQ("Tes", model.sensorData[0].label);
EXPECT_EQ(10, model.sensorData[0].id); EXPECT_EQ(10, model.sensorData[0].id);
EXPECT_EQ(9, model.sensorData[0].instance); EXPECT_EQ(10, model.sensorData[0].instance);
EXPECT_EQ(900, model.limitData[0].max); // -100 EXPECT_EQ(900, model.limitData[0].max); // -100
EXPECT_EQ(10, model.flightModeData[0].gvars[0]); EXPECT_EQ(10, model.flightModeData[0].gvars[0]);
@ -178,7 +178,7 @@ TEST(Conversions, ConversionXLiteFrom22)
EXPECT_STREQ("Tes", model.sensorData[0].label); EXPECT_STREQ("Tes", model.sensorData[0].label);
EXPECT_EQ(10, model.sensorData[0].id); EXPECT_EQ(10, model.sensorData[0].id);
EXPECT_EQ(8, model.sensorData[0].instance); EXPECT_EQ(9, model.sensorData[0].instance);
EXPECT_EQ(900, model.limitData[0].max); // -100 EXPECT_EQ(900, model.limitData[0].max); // -100
EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func);
@ -284,7 +284,7 @@ TEST(Conversions, ConversionX10From22)
EXPECT_STREQ("Rud", model.inputNames[0]); EXPECT_STREQ("Rud", model.inputNames[0]);
EXPECT_STREQ("Tes", model.sensorData[0].label); EXPECT_STREQ("Tes", model.sensorData[0].label);
EXPECT_EQ(10, model.sensorData[0].id); EXPECT_EQ(10, model.sensorData[0].id);
EXPECT_EQ(9, model.sensorData[0].instance); EXPECT_EQ(10, model.sensorData[0].instance);
EXPECT_EQ(5 + 2 + 3, model.thrTraceSrc); // CH3 EXPECT_EQ(5 + 2 + 3, model.thrTraceSrc); // CH3
} }
@ -360,6 +360,6 @@ TEST(Conversions, ConversionX12SFrom22)
EXPECT_STREQ("Rud", model.inputNames[0]); EXPECT_STREQ("Rud", model.inputNames[0]);
EXPECT_STREQ("Tes", model.sensorData[0].label); EXPECT_STREQ("Tes", model.sensorData[0].label);
EXPECT_EQ(10, model.sensorData[0].id); EXPECT_EQ(10, model.sensorData[0].id);
EXPECT_EQ(9, model.sensorData[0].instance); EXPECT_EQ(10, model.sensorData[0].instance);
EXPECT_EQ(5 + 2 + 3, model.thrTraceSrc); // CH3 EXPECT_EQ(5 + 2 + 3, model.thrTraceSrc); // CH3
} }

View file

@ -91,7 +91,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT then elseif event == EVT_VIRTUAL_NEXT then
selectDevice(1) selectDevice(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectDevice(-1) selectDevice(-1)
end end

View file

@ -455,15 +455,15 @@ local function runDevicePage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_INC then
incrField(1) incrField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_DEC then
incrField(-1) incrField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end

View file

@ -332,15 +332,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end
@ -500,7 +500,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT_PAGE then elseif event == EVT_VIRTUAL_NEXT_PAGE then
selectPage(1) selectPage(1)
elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then elseif event == EVT_VIRTUAL_PREV_PAGE then
killEvents(event); killEvents(event);
selectPage(-1) selectPage(-1)
end end

View file

@ -221,15 +221,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end

View file

@ -268,15 +268,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end
@ -348,7 +348,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT_PAGE then elseif event == EVT_VIRTUAL_NEXT_PAGE then
selectPage(1) selectPage(1)
elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then elseif event == EVT_VIRTUAL_PREV_PAGE then
killEvents(event); killEvents(event);
selectPage(-1) selectPage(-1)
end end

View file

@ -90,7 +90,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT then elseif event == EVT_VIRTUAL_NEXT then
selectDevice(1) selectDevice(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectDevice(-1) selectDevice(-1)
end end

View file

@ -452,13 +452,13 @@ local function runDevicePage(event)
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then
incrField(1) incrField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_PREV or event == EVT_VIRTUAL_PREV_REPT then
incrField(-1) incrField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end

View file

@ -332,15 +332,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end
@ -500,7 +500,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT_PAGE then elseif event == EVT_VIRTUAL_NEXT_PAGE then
selectPage(1) selectPage(1)
elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then elseif event == EVT_VIRTUAL_PREV_PAGE then
killEvents(event); killEvents(event);
selectPage(-1) selectPage(-1)
end end

View file

@ -221,15 +221,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end

View file

@ -268,15 +268,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end
@ -348,7 +348,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT_PAGE then elseif event == EVT_VIRTUAL_NEXT_PAGE then
selectPage(1) selectPage(1)
elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then elseif event == EVT_VIRTUAL_PREV_PAGE then
killEvents(event); killEvents(event);
selectPage(-1) selectPage(-1)
end end

View file

@ -90,7 +90,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT then elseif event == EVT_VIRTUAL_NEXT then
selectDevice(1) selectDevice(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectDevice(-1) selectDevice(-1)
end end

View file

@ -450,15 +450,15 @@ local function runDevicePage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
incrField(1) incrField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
incrField(-1) incrField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end

View file

@ -332,15 +332,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end
@ -500,7 +500,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT_PAGE then elseif event == EVT_VIRTUAL_NEXT_PAGE then
selectPage(1) selectPage(1)
elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then elseif event == EVT_VIRTUAL_PREV_PAGE then
killEvents(event); killEvents(event);
selectPage(-1) selectPage(-1)
end end

View file

@ -221,15 +221,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end

View file

@ -268,15 +268,15 @@ local function runFieldsPage(event)
end end
end end
elseif edit then elseif edit then
if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then if event == EVT_VIRTUAL_INC or event == EVT_VIRTUAL_INC_REPT then
addField(1) addField(1)
elseif event == EVT_VIRTUAL_PREVIOUS or event == EVT_VIRTUAL_PREVIOUS_REPT then elseif event == EVT_VIRTUAL_DEC or event == EVT_VIRTUAL_DEC_REPT then
addField(-1) addField(-1)
end end
else else
if event == EVT_VIRTUAL_NEXT then if event == EVT_VIRTUAL_NEXT then
selectField(1) selectField(1)
elseif event == EVT_VIRTUAL_PREVIOUS then elseif event == EVT_VIRTUAL_PREV then
selectField(-1) selectField(-1)
end end
end end
@ -348,7 +348,7 @@ local function run(event)
return 2 return 2
elseif event == EVT_VIRTUAL_NEXT_PAGE then elseif event == EVT_VIRTUAL_NEXT_PAGE then
selectPage(1) selectPage(1)
elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then elseif event == EVT_VIRTUAL_PREV_PAGE then
killEvents(event); killEvents(event);
selectPage(-1) selectPage(-1)
end end

View file

@ -343,17 +343,17 @@ enum TelemetryUnit {
enum TelemetryScreenType { enum TelemetryScreenType {
TELEMETRY_SCREEN_TYPE_NONE, TELEMETRY_SCREEN_TYPE_NONE,
TELEMETRY_SCREEN_TYPE_VALUES, TELEMETRY_SCREEN_TYPE_VALUES,
TELEMETRY_SCREEN_TYPE_GAUGES, TELEMETRY_SCREEN_TYPE_BARS,
#if defined(LUA)
TELEMETRY_SCREEN_TYPE_SCRIPT, TELEMETRY_SCREEN_TYPE_SCRIPT,
#if defined(LUA)
TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_SCRIPT TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_SCRIPT
#else #else
TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_GAUGES TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_BARS
#endif #endif
}; };
#define MAX_TELEMETRY_SCREENS 4 #define MAX_TELEMETRY_SCREENS 4
#define TELEMETRY_SCREEN_TYPE(screenIndex) TelemetryScreenType((g_model.screensType >> (2*(screenIndex))) & 0x03) #define TELEMETRY_SCREEN_TYPE(screenIndex) TelemetryScreenType((g_model.screensType >> (2*(screenIndex))) & 0x03)
#define IS_BARS_SCREEN(screenIndex) (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_GAUGES) #define IS_BARS_SCREEN(screenIndex) (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_BARS)
constexpr int16_t FAILSAFE_CHANNEL_HOLD = 2000; constexpr int16_t FAILSAFE_CHANNEL_HOLD = 2000;
constexpr int16_t FAILSAFE_CHANNEL_NOPULSE = 2001; constexpr int16_t FAILSAFE_CHANNEL_NOPULSE = 2001;
@ -802,7 +802,7 @@ static_assert(MIXSRC_FIRST_LOGICAL_SWITCH == MIXSRC_FIRST_SWITCH + STORAGE_NUM_S
#define MIXSRC_FIRST (MIXSRC_NONE + 1) #define MIXSRC_FIRST (MIXSRC_NONE + 1)
#define MIXSRC_LAST MIXSRC_LAST_CH #define MIXSRC_LAST MIXSRC_LAST_CH
#define MIXSRC_LAST_SWITCH (MIXSRC_FIRST_SWITCH + NUM_SWITCHES - 1) #define MIXSRC_LAST_SWITCH (MIXSRC_FIRST_SWITCH + STORAGE_NUM_SWITCHES - 1)
#define INPUTSRC_FIRST MIXSRC_Rud #define INPUTSRC_FIRST MIXSRC_Rud
#define INPUTSRC_LAST MIXSRC_LAST_TELEM #define INPUTSRC_LAST MIXSRC_LAST_TELEM

View file

@ -690,7 +690,7 @@ PACK(struct TrainerData {
swarnstate_t switchUnlockStates; \ swarnstate_t switchUnlockStates; \
swconfig_t switchConfig; \ swconfig_t switchConfig; \
char switchNames[STORAGE_NUM_SWITCHES][LEN_SWITCH_NAME]; \ char switchNames[STORAGE_NUM_SWITCHES][LEN_SWITCH_NAME]; \
char anaNames[NUM_STICKS+NUM_POTS+NUM_SLIDERS][LEN_ANA_NAME]; \ char anaNames[NUM_STICKS+STORAGE_NUM_POTS+STORAGE_NUM_SLIDERS][LEN_ANA_NAME]; \
BLUETOOTH_FIELDS BLUETOOTH_FIELDS
#elif defined(PCBSKY9X) #elif defined(PCBSKY9X)
#define EXTRA_GENERAL_FIELDS \ #define EXTRA_GENERAL_FIELDS \
@ -703,7 +703,7 @@ PACK(struct TrainerData {
uint8_t sticksGain; \ uint8_t sticksGain; \
uint8_t rotarySteps; \ uint8_t rotarySteps; \
char switchNames[STORAGE_NUM_SWITCHES][LEN_SWITCH_NAME]; \ char switchNames[STORAGE_NUM_SWITCHES][LEN_SWITCH_NAME]; \
char anaNames[NUM_STICKS+NUM_POTS+NUM_SLIDERS][LEN_ANA_NAME]; char anaNames[NUM_STICKS+STORAGE_NUM_POTS+STORAGE_NUM_SLIDERS][LEN_ANA_NAME];
#else #else
#define EXTRA_GENERAL_FIELDS #define EXTRA_GENERAL_FIELDS
#endif #endif
@ -735,7 +735,8 @@ PACK(struct RadioData {
NOBACKUP(int8_t txVoltageCalibration); NOBACKUP(int8_t txVoltageCalibration);
uint8_t backlightMode:3; uint8_t backlightMode:3;
int8_t antennaMode:2; int8_t antennaMode:2;
int8_t spare1:3; uint8_t disableRtcWarning:1;
int8_t spare1:2;
NOBACKUP(TrainerData trainer); NOBACKUP(TrainerData trainer);
NOBACKUP(uint8_t view); // index of view in main screen NOBACKUP(uint8_t view); // index of view in main screen
NOBACKUP(BUZZER_FIELD); /* 2bits */ NOBACKUP(BUZZER_FIELD); /* 2bits */

View file

@ -246,7 +246,6 @@ void readModelNotes();
#define IS_ROTARY_EVENT(evt) (EVT_KEY_MASK(evt) >= 0x0e) #define IS_ROTARY_EVENT(evt) (EVT_KEY_MASK(evt) >= 0x0e)
void repeatLastCursorMove(event_t event); void repeatLastCursorMove(event_t event);
#define REPEAT_LAST_CURSOR_MOVE() { if (EVT_KEY_MASK(event) >= 0x0e) putEvent(event); else repeatLastCursorMove(event); } #define REPEAT_LAST_CURSOR_MOVE() { if (EVT_KEY_MASK(event) >= 0x0e) putEvent(event); else repeatLastCursorMove(event); }
#define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE()
#else #else
#define IS_ROTARY_LEFT(evt) (0) #define IS_ROTARY_LEFT(evt) (0)
#define IS_ROTARY_RIGHT(evt) (0) #define IS_ROTARY_RIGHT(evt) (0)
@ -255,7 +254,6 @@ void readModelNotes();
#define IS_ROTARY_EVENT(evt) (0) #define IS_ROTARY_EVENT(evt) (0)
void repeatLastCursorMove(event_t event); void repeatLastCursorMove(event_t event);
#define REPEAT_LAST_CURSOR_MOVE() repeatLastCursorMove(event) #define REPEAT_LAST_CURSOR_MOVE() repeatLastCursorMove(event)
#define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE()
#endif #endif
// TODO enum // TODO enum

View file

@ -52,21 +52,44 @@ enum MenuModelDisplayItems {
#endif #endif
#define DISPLAY_COL3 (17*FW+2) #define DISPLAY_COL3 (17*FW+2)
#if defined(LUA) inline uint8_t SCREEN_TYPE_COLUMNS(uint8_t screenIndex)
#define SCREEN_TYPE_ROWS 1
#define DISPLAY_LINE_ROWS(x) ((TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE || TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_SCRIPT) ? HIDDEN_ROW : (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_GAUGES ? (uint8_t)2 : (uint8_t)1))
#else
#define SCREEN_TYPE_ROWS 0
#define DISPLAY_LINE_ROWS(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_GAUGES ? (uint8_t)2 : (uint8_t)1))
#endif
#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x)
#define TELEMETRY_CURRENT_SCREEN(k) (k < ITEM_DISPLAY_SCREEN_LABEL2 ? 0 : (k < ITEM_DISPLAY_SCREEN_LABEL3 ? 1 : (k < ITEM_DISPLAY_SCREEN_LABEL4 ? 2 : 3)))
#if defined(LUA)
void onTelemetryScriptFileSelectionMenu(const char *result)
{ {
int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition - HEADER_LINE); if (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_SCRIPT)
return 1;
else
return 0;
}
inline uint8_t SCREEN_LINE_COLUMNS(uint8_t screenIndex, uint8_t lineIndex)
{
switch (TELEMETRY_SCREEN_TYPE(screenIndex)) {
case TELEMETRY_SCREEN_TYPE_VALUES:
return 1;
case TELEMETRY_SCREEN_TYPE_BARS:
return g_model.screens[screenIndex].bars[lineIndex].source ? 2 : 0;
default:
return HIDDEN_ROW;
}
}
#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_COLUMNS(x), SCREEN_LINE_COLUMNS(x, 0), SCREEN_LINE_COLUMNS(x, 1), SCREEN_LINE_COLUMNS(x, 2), SCREEN_LINE_COLUMNS(x, 3)
inline uint8_t DISPLAY_CURRENT_SCREEN(uint8_t line)
{
if (line < ITEM_DISPLAY_SCREEN_LABEL2)
return 0;
else if (line < ITEM_DISPLAY_SCREEN_LABEL3)
return 1;
else if (line < ITEM_DISPLAY_SCREEN_LABEL4)
return 2;
else
return 3;
}
#if defined(LUA)
void onTelemetryScriptFileSelectionMenu(const char * result)
{
int screenIndex = DISPLAY_CURRENT_SCREEN(menuVerticalPosition - HEADER_LINE);
if (result == STR_UPDATE_LIST) { if (result == STR_UPDATE_LIST) {
if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) { if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) {
@ -82,7 +105,6 @@ void onTelemetryScriptFileSelectionMenu(const char *result)
} }
#endif #endif
int skipHiddenLines(int noRows, const uint8_t * mstate_tab, int row) int skipHiddenLines(int noRows, const uint8_t * mstate_tab, int row)
{ {
for(int i=0; i<noRows; ++i) { for(int i=0; i<noRows; ++i) {
@ -120,7 +142,7 @@ void menuModelDisplay(event_t event)
case ITEM_DISPLAY_SCREEN_LABEL3: case ITEM_DISPLAY_SCREEN_LABEL3:
case ITEM_DISPLAY_SCREEN_LABEL4: case ITEM_DISPLAY_SCREEN_LABEL4:
{ {
uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k); uint8_t screenIndex = DISPLAY_CURRENT_SCREEN(k);
drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1); drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1);
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event);
@ -149,9 +171,6 @@ void menuModelDisplay(event_t event)
} }
} }
} }
else if (attr) {
MOVE_CURSOR_FROM_HERE();
}
#endif #endif
break; break;
} }
@ -207,9 +226,6 @@ void menuModelDisplay(event_t event)
drawSourceCustomValue(DISPLAY_COL3, y, bar.source, bar.barMax, (menuHorizontalPosition==2 ? attr : 0) | lf); drawSourceCustomValue(DISPLAY_COL3, y, bar.source, bar.barMax, (menuHorizontalPosition==2 ? attr : 0) | lf);
} }
} }
else if (attr) {
MOVE_CURSOR_FROM_HERE();
}
if (attr && s_editMode>0) { if (attr && s_editMode>0) {
switch (menuHorizontalPosition) { switch (menuHorizontalPosition) {
case 0: case 0:

View file

@ -612,7 +612,7 @@ void menuModelSetup(event_t event)
} }
int current = 0; int current = 0;
for (int i = 0; i < switchWarningsCount; i++) { for (int i = 0; i < NUM_SWITCHES; i++) {
if (SWITCH_WARNING_ALLOWED(i)) { if (SWITCH_WARNING_ALLOWED(i)) {
div_t qr = div(current, MAX_SWITCH_PER_LINE); div_t qr = div(current, MAX_SWITCH_PER_LINE);
if (!READ_ONLY() && event==EVT_KEY_BREAK(KEY_ENTER) && attr && l_posHorz == current && old_posHorz >= 0) { if (!READ_ONLY() && event==EVT_KEY_BREAK(KEY_ENTER) && attr && l_posHorz == current && old_posHorz >= 0) {
@ -1284,7 +1284,7 @@ void menuModelSetup(event_t event)
if (isModuleR9MNonAccess(moduleIdx) || isModuleD16(moduleIdx)) { if (isModuleR9MNonAccess(moduleIdx) || isModuleD16(moduleIdx)) {
#if defined(PCBXLITE) #if defined(PCBXLITE)
if (EVT_KEY_MASK(event) == KEY_ENTER) { if (EVT_KEY_MASK(event) == KEY_ENTER) {
#elif defined(PCBSKY9X) || defined(PCBAR9X) #elif defined(NAVIGATION_9X)
if (event == EVT_KEY_FIRST(KEY_ENTER)) { if (event == EVT_KEY_FIRST(KEY_ENTER)) {
#else #else
if (event == EVT_KEY_BREAK(KEY_ENTER)) { if (event == EVT_KEY_BREAK(KEY_ENTER)) {

View file

@ -104,7 +104,7 @@ void menuModelSensor(event_t event)
if (sensor->type == TELEM_TYPE_CUSTOM) { if (sensor->type == TELEM_TYPE_CUSTOM) {
lcdDrawTextAlignedLeft(y, STR_ID); lcdDrawTextAlignedLeft(y, STR_ID);
lcdDrawHexNumber(SENSOR_2ND_COLUMN, y, sensor->id, LEFT|(menuHorizontalPosition==0 ? attr : 0)); lcdDrawHexNumber(SENSOR_2ND_COLUMN, y, sensor->id, LEFT|(menuHorizontalPosition==0 ? attr : 0));
lcdDrawHexChar(SENSOR_3RD_COLUMN, y, sensor->instance & 0x1f, LEFT|(menuHorizontalPosition==1 ? attr : 0)); lcdDrawHexChar(SENSOR_3RD_COLUMN, y, (sensor->instance & 0x1F) + 1, LEFT|(menuHorizontalPosition==1 ? attr : 0));
if (attr && s_editMode > 0) { if (attr && s_editMode > 0) {
switch (menuHorizontalPosition) { switch (menuHorizontalPosition) {
case 0: case 0:

View file

@ -64,7 +64,7 @@ void menuRadioDiagKeys(event_t event)
#else #else
if (i < NUM_SWITCHES) { if (i < NUM_SWITCHES) {
if (SWITCH_EXISTS(i)) { if (SWITCH_EXISTS(i)) {
y = MENU_HEADER_HEIGHT + 1 + FH*i; y = (NUM_SWITCHES > 6 ? 0 : MENU_HEADER_HEIGHT) + FH*i;
getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i); getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i);
getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3)); getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3));
drawSwitch(8*FW+4, y, sw, 0); drawSwitch(8*FW+4, y, sw, 0);

View file

@ -643,7 +643,6 @@ void menuRadioSetup(event_t event)
resumePulses(); resumePulses();
waitKeysReleased(); waitKeysReleased();
} }
MOVE_CURSOR_FROM_HERE();
break; break;
} }
} }

View file

@ -280,7 +280,6 @@ void menuChannelsView(event_t event);
#endif #endif
#define REPEAT_LAST_CURSOR_MOVE() { if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) putEvent(event); else menuHorizontalPosition = 0; } #define REPEAT_LAST_CURSOR_MOVE() { if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) putEvent(event); else menuHorizontalPosition = 0; }
#define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE()
#define MENU_FIRST_LINE_EDIT (menuTab ? (MAXCOL((uint16_t)0) >= HIDDEN_ROW ? (MAXCOL((uint16_t)1) >= HIDDEN_ROW ? 2 : 1) : 0) : 0) #define MENU_FIRST_LINE_EDIT (menuTab ? (MAXCOL((uint16_t)0) >= HIDDEN_ROW ? (MAXCOL((uint16_t)1) >= HIDDEN_ROW ? 2 : 1) : 0) : 0)
#define POS_HORZ_INIT(posVert) ((COLATTR(posVert) & NAVIGATION_LINE_BY_LINE) ? -1 : 0) #define POS_HORZ_INIT(posVert) ((COLATTR(posVert) & NAVIGATION_LINE_BY_LINE) ? -1 : 0)

View file

@ -51,21 +51,44 @@ enum MenuModelDisplayItems {
#define DISPLAY_COL2 (16*FW) #define DISPLAY_COL2 (16*FW)
#define DISPLAY_COL3 (28*FW+2) #define DISPLAY_COL3 (28*FW+2)
#if defined(LUA) inline uint8_t SCREEN_TYPE_COLUMNS(uint8_t screenIndex)
#define SCREEN_TYPE_ROWS 1 {
#define DISPLAY_LINE_ROWS(x) ((TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE || TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_SCRIPT) ? HIDDEN_ROW : (uint8_t)2) if (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_SCRIPT)
#else return 1;
#define SCREEN_TYPE_ROWS 0 else
#define DISPLAY_LINE_ROWS(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (uint8_t)2) return 0;
#endif }
#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x), DISPLAY_LINE_ROWS(x)
#define TELEMETRY_CURRENT_SCREEN(k) (k < ITEM_DISPLAY_SCREEN_LABEL2 ? 0 : (k < ITEM_DISPLAY_SCREEN_LABEL3 ? 1 : (k < ITEM_DISPLAY_SCREEN_LABEL4 ? 2 : 3))) inline uint8_t SCREEN_LINE_COLUMNS(uint8_t screenIndex, uint8_t lineIndex)
{
switch (TELEMETRY_SCREEN_TYPE(screenIndex)) {
case TELEMETRY_SCREEN_TYPE_VALUES:
return 2;
case TELEMETRY_SCREEN_TYPE_BARS:
return g_model.screens[screenIndex].bars[lineIndex].source ? 2 : 0;
default:
return HIDDEN_ROW;
}
}
#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_COLUMNS(x), SCREEN_LINE_COLUMNS(x, 0), SCREEN_LINE_COLUMNS(x, 1), SCREEN_LINE_COLUMNS(x, 2), SCREEN_LINE_COLUMNS(x, 3)
inline uint8_t DISPLAY_CURRENT_SCREEN(uint8_t line)
{
if (line < ITEM_DISPLAY_SCREEN_LABEL2)
return 0;
else if (line < ITEM_DISPLAY_SCREEN_LABEL3)
return 1;
else if (line < ITEM_DISPLAY_SCREEN_LABEL4)
return 2;
else
return 3;
}
#if defined(LUA) #if defined(LUA)
void onTelemetryScriptFileSelectionMenu(const char *result) void onTelemetryScriptFileSelectionMenu(const char *result)
{ {
int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition); int screenIndex = DISPLAY_CURRENT_SCREEN(menuVerticalPosition);
if (result == STR_UPDATE_LIST) { if (result == STR_UPDATE_LIST) {
if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) { if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) {
@ -122,7 +145,7 @@ void menuModelDisplay(event_t event)
case ITEM_DISPLAY_SCREEN_LABEL3: case ITEM_DISPLAY_SCREEN_LABEL3:
case ITEM_DISPLAY_SCREEN_LABEL4: case ITEM_DISPLAY_SCREEN_LABEL4:
{ {
uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k); uint8_t screenIndex = DISPLAY_CURRENT_SCREEN(k);
drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1); drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1);
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event);
@ -151,9 +174,6 @@ void menuModelDisplay(event_t event)
} }
} }
} }
else if (attr) {
MOVE_CURSOR_FROM_HERE();
}
#endif #endif
break; break;
} }
@ -195,7 +215,7 @@ void menuModelDisplay(event_t event)
if (IS_BARS_SCREEN(screenIndex)) { if (IS_BARS_SCREEN(screenIndex)) {
FrSkyBarData & bar = g_model.screens[screenIndex].bars[lineIndex]; FrSkyBarData & bar = g_model.screens[screenIndex].bars[lineIndex];
drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition==0 ? attr : 0); drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition == 0 ? attr : 0);
int16_t barMax, barMin; int16_t barMax, barMin;
LcdFlags lf = LEFT; LcdFlags lf = LEFT;
getMixSrcRange(bar.source, barMin, barMax, &lf); getMixSrcRange(bar.source, barMin, barMax, &lf);
@ -209,9 +229,6 @@ void menuModelDisplay(event_t event)
drawSourceCustomValue(DISPLAY_COL3, y, bar.source, bar.barMax, (menuHorizontalPosition==2 ? attr : 0) | lf); drawSourceCustomValue(DISPLAY_COL3, y, bar.source, bar.barMax, (menuHorizontalPosition==2 ? attr : 0) | lf);
} }
} }
else if (attr) {
MOVE_CURSOR_FROM_HERE();
}
if (attr && s_editMode>0) { if (attr && s_editMode>0) {
switch (menuHorizontalPosition) { switch (menuHorizontalPosition) {
case 0: case 0:

View file

@ -114,7 +114,7 @@ void menuModelSensor(event_t event)
if (sensor->type == TELEM_TYPE_CUSTOM) { if (sensor->type == TELEM_TYPE_CUSTOM) {
lcdDrawTextAlignedLeft(y, STR_ID); lcdDrawTextAlignedLeft(y, STR_ID);
lcdDrawHexNumber(SENSOR_2ND_COLUMN, y, sensor->id, LEFT|(menuHorizontalPosition==0 ? attr : 0)); lcdDrawHexNumber(SENSOR_2ND_COLUMN, y, sensor->id, LEFT|(menuHorizontalPosition==0 ? attr : 0));
lcdDrawNumber(SENSOR_3RD_COLUMN, y, sensor->instance, LEFT|(menuHorizontalPosition==1 ? attr : 0)); lcdDrawNumber(SENSOR_3RD_COLUMN, y, (sensor->instance & 0x1F) + 1, LEFT|(menuHorizontalPosition==1 ? attr : 0));
if (attr) { if (attr) {
switch (menuHorizontalPosition) { switch (menuHorizontalPosition) {
case 0: case 0:

View file

@ -115,7 +115,7 @@ bool menuModelSensor(event_t event)
if (sensor->type == TELEM_TYPE_CUSTOM) { if (sensor->type == TELEM_TYPE_CUSTOM) {
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_ID); lcdDrawText(MENUS_MARGIN_LEFT, y, STR_ID);
lcdDrawHexNumber(SENSOR_2ND_COLUMN, y, sensor->id, LEFT|(menuHorizontalPosition==0 ? attr : 0)); lcdDrawHexNumber(SENSOR_2ND_COLUMN, y, sensor->id, LEFT|(menuHorizontalPosition==0 ? attr : 0));
lcdDrawNumber(SENSOR_3RD_COLUMN, y, sensor->instance, LEFT|(menuHorizontalPosition==1 ? attr : 0)); lcdDrawNumber(SENSOR_3RD_COLUMN, y, (sensor->instance & 0x1F) + 1, LEFT|(menuHorizontalPosition==1 ? attr : 0));
if (attr) { if (attr) {
switch (menuHorizontalPosition) { switch (menuHorizontalPosition) {
case 0: case 0:

View file

@ -54,6 +54,7 @@ enum MenuRadioHardwareItems {
ITEM_RADIO_HARDWARE_SJ, // Gimbal switch right ITEM_RADIO_HARDWARE_SJ, // Gimbal switch right
ITEM_RADIO_HARDWARE_BATTERY_CALIB, ITEM_RADIO_HARDWARE_BATTERY_CALIB,
ITEM_RADIO_HARDWARE_RTC_BATTERY, ITEM_RADIO_HARDWARE_RTC_BATTERY,
ITEM_RADIO_HARDWARE_RTC_CHECK,
ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE, ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE,
#if defined(BLUETOOTH) #if defined(BLUETOOTH)
ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, ITEM_RADIO_HARDWARE_BLUETOOTH_MODE,
@ -123,6 +124,7 @@ bool menuRadioHardware(event_t event)
0, /* battery */ 0, /* battery */
READONLY_ROW, /* RTC */ READONLY_ROW, /* RTC */
0, /* RTC check */
0, /* max baudrate */ 0, /* max baudrate */
@ -276,6 +278,14 @@ bool menuRadioHardware(event_t event)
} }
break; break;
#if defined(BLUETOOTH) #if defined(BLUETOOTH)
case ITEM_RADIO_HARDWARE_RTC_CHECK:
{
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RTC_CHECK);
uint8_t b = 1 - g_eeGeneral.disableRtcWarning;
g_eeGeneral.disableRtcWarning = 1 - editCheckBox(b, HW_SETTINGS_COLUMN + 50, y, attr, event);
break;
}
case ITEM_RADIO_HARDWARE_BLUETOOTH_MODE: case ITEM_RADIO_HARDWARE_BLUETOOTH_MODE:
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_BLUETOOTH); lcdDrawText(MENUS_MARGIN_LEFT, y, STR_BLUETOOTH);
g_eeGeneral.bluetoothMode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_BLUETOOTH_MODES, g_eeGeneral.bluetoothMode, BLUETOOTH_OFF, BLUETOOTH_TRAINER, attr, event); g_eeGeneral.bluetoothMode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_BLUETOOTH_MODES, g_eeGeneral.bluetoothMode, BLUETOOTH_OFF, BLUETOOTH_TRAINER, attr, event);

View file

@ -151,6 +151,7 @@ enum {
#if defined(STM32) #if defined(STM32)
ITEM_RADIO_HARDWARE_RTC_BATTERY, ITEM_RADIO_HARDWARE_RTC_BATTERY,
ITEM_RADIO_HARDWARE_RTC_CHECK,
#endif #endif
#if defined(TX_CAPACITY_MEASUREMENT) #if defined(TX_CAPACITY_MEASUREMENT)
@ -257,7 +258,7 @@ void onHardwareAntennaSwitchConfirm(const char * result)
#endif #endif
#if defined(STM32) #if defined(STM32)
#define RTC_ROW READONLY_ROW, #define RTC_ROW READONLY_ROW, 0,
#else #else
#define RTC_ROW #define RTC_ROW
#endif #endif
@ -512,6 +513,10 @@ void menuRadioHardware(event_t event)
lcdDrawTextAlignedLeft(y, STR_RTC_BATT); lcdDrawTextAlignedLeft(y, STR_RTC_BATT);
putsVolts(HW_SETTINGS_COLUMN2, y, getRTCBatteryVoltage(), PREC2|LEFT); putsVolts(HW_SETTINGS_COLUMN2, y, getRTCBatteryVoltage(), PREC2|LEFT);
break; break;
case ITEM_RADIO_HARDWARE_RTC_CHECK:
g_eeGeneral.disableRtcWarning = 1 - editCheckBox(1 - g_eeGeneral.disableRtcWarning, HW_SETTINGS_COLUMN2, y, STR_RTC_CHECK, attr, event);
break;
#endif #endif
#if defined(TX_CAPACITY_MEASUREMENT) #if defined(TX_CAPACITY_MEASUREMENT)

View file

@ -408,8 +408,12 @@ void menuRadioSdManager(event_t _event)
POPUP_MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE); POPUP_MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE);
if (information.productFamily == FIRMWARE_FAMILY_EXTERNAL_MODULE) if (information.productFamily == FIRMWARE_FAMILY_EXTERNAL_MODULE)
POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE); POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE);
if (HAS_SPORT_UPDATE_CONNECTOR() && (information.productFamily == FIRMWARE_FAMILY_RECEIVER || information.productFamily == FIRMWARE_FAMILY_SENSOR)) if (information.productFamily == FIRMWARE_FAMILY_RECEIVER || information.productFamily == FIRMWARE_FAMILY_SENSOR) {
POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); if (HAS_SPORT_UPDATE_CONNECTOR())
POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE);
else
POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MODULE);
}
#if defined(PXX2) #if defined(PXX2)
if (information.productFamily == FIRMWARE_FAMILY_RECEIVER) if (information.productFamily == FIRMWARE_FAMILY_RECEIVER)
POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA); POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA);

View file

@ -606,6 +606,9 @@ bool isInternalModuleAvailable(int moduleType)
bool isExternalModuleAvailable(int moduleType) bool isExternalModuleAvailable(int moduleType)
{ {
if (moduleType == MODULE_TYPE_R9M_LITE_PRO_PXX1)
return false;
#if !defined(HARDWARE_EXTERNAL_MODULE_SIZE_SML) #if !defined(HARDWARE_EXTERNAL_MODULE_SIZE_SML)
if (isModuleTypeR9MLite(moduleType) || moduleType == MODULE_TYPE_XJT_LITE_PXX2) if (isModuleTypeR9MLite(moduleType) || moduleType == MODULE_TYPE_XJT_LITE_PXX2)
return false; return false;

View file

@ -58,10 +58,10 @@
#define FIND_FIELD_DESC 0x01 #define FIND_FIELD_DESC 0x01
#define KEY_EVENTS(xxx, yyy) \ #define KEY_EVENTS(xxx, yyy) \
{ "EVT_"#xxx"_FIRST", EVT_KEY_FIRST(yyy) }, \ { "EVT_"#xxx"_FIRST", EVT_KEY_FIRST(yyy) }, \
{ "EVT_"#xxx"_BREAK", EVT_KEY_BREAK(yyy) }, \ { "EVT_"#xxx"_BREAK", EVT_KEY_BREAK(yyy) }, \
{ "EVT_"#xxx"_LONG", EVT_KEY_LONG(yyy) }, \ { "EVT_"#xxx"_LONG", EVT_KEY_LONG(yyy) }, \
{ "EVT_"#xxx"_REPT", EVT_KEY_REPT(yyy) } { "EVT_"#xxx"_REPT", EVT_KEY_REPT(yyy) }
/*luadoc /*luadoc
@function getVersion() @function getVersion()
@ -1383,7 +1383,7 @@ static int luaChdir(lua_State * L)
@function loadScript(file [, mode], [,env]) @function loadScript(file [, mode], [,env])
Load a Lua script file. This is similar to Lua's own [loadfile()](https://www.lua.org/manual/5.2/manual.html#pdf-loadfile) Load a Lua script file. This is similar to Lua's own [loadfile()](https://www.lua.org/manual/5.2/manual.html#pdf-loadfile)
API method, but it uses OpenTx's optional pre-compilation feature to save memory and time during load. API method, but it uses OpenTx's optional pre-compilation feature to save memory and time during load.
Return values are same as from Lua API loadfile() method: If the script was loaded w/out errors Return values are same as from Lua API loadfile() method: If the script was loaded w/out errors
then the loaded script (or "chunk") is returned as a function. Otherwise, returns nil plus the error message. then the loaded script (or "chunk") is returned as a function. Otherwise, returns nil plus the error message.
@ -1679,53 +1679,61 @@ const luaR_value_entry opentxConstants[] = {
{ "FIXEDWIDTH", FIXEDWIDTH }, { "FIXEDWIDTH", FIXEDWIDTH },
#endif #endif
// Virtual Page Next/Previous // Virtual events
#if defined(KEYS_GPIO_REG_PGUP) && defined(KEYS_GPIO_REG_PGDN) #if defined(ROTARY_ENCODER_NAVIGATION)
{ "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_FIRST(KEY_PGUP) }, { "EVT_VIRTUAL_PREV", EVT_ROTARY_LEFT },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_FIRST(KEY_PGDN) }, { "EVT_VIRTUAL_NEXT", EVT_ROTARY_RIGHT },
#elif defined(KEYS_GPIO_REG_PGDN) { "EVT_VIRTUAL_DEC", EVT_ROTARY_LEFT },
{ "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_LONG(KEY_PGDN) }, { "EVT_VIRTUAL_INC", EVT_ROTARY_RIGHT },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PGDN) }, #elif defined(PCBX9D) || defined(PCBX9DP) // key reverted between field nav and value change
#elif defined(KEYS_GPIO_REG_UP) && defined(KEYS_GPIO_REG_DOWN) { "EVT_VIRTUAL_PREV", EVT_KEY_FIRST(KEY_PLUS) },
{ "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_LONG(KEY_UP) }, { "EVT_VIRTUAL_PREV_REPT", EVT_KEY_REPT(KEY_PLUS) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_LONG(KEY_DOWN) }, { "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_MINUS) },
#elif defined(KEYS_GPIO_REG_PAGE) { "EVT_VIRTUAL_NEXT_REPT", EVT_KEY_REPT(KEY_MINUS) },
{ "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_LONG(KEY_PAGE) }, { "EVT_VIRTUAL_DEC", EVT_KEY_FIRST(KEY_MINUS) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGE) }, { "EVT_VIRTUAL_DEC_REPT", EVT_KEY_REPT(KEY_MINUS) },
{ "EVT_VIRTUAL_INC", EVT_KEY_FIRST(KEY_PLUS) },
{ "EVT_VIRTUAL_INC_REPT", EVT_KEY_REPT(KEY_PLUS) },
#else
{ "EVT_VIRTUAL_PREV", EVT_KEY_FIRST(KEY_LEFT) },
{ "EVT_VIRTUAL_PREV_REPT", EVT_KEY_REPT(KEY_LEFT) },
{ "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_RIGHT) },
{ "EVT_VIRTUAL_NEXT_REPT", EVT_KEY_REPT(KEY_RIGHT) },
{ "EVT_VIRTUAL_DEC", EVT_KEY_FIRST(KEY_LEFT) },
{ "EVT_VIRTUAL_DEC_REPT", EVT_KEY_REPT(KEY_LEFT) },
{ "EVT_VIRTUAL_INC", EVT_KEY_FIRST(KEY_RIGHT) },
{ "EVT_VIRTUAL_INC_REPT", EVT_KEY_REPT(KEY_RIGHT) },
#endif #endif
// Virtual exit #if defined(NAVIGATION_9X) || defined(NAVIGATION_XLITE)
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) }, { "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_UP) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_UP) },
// Virtual enter { "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_DOWN) },
#if defined(KEYS_GPIO_REG_ENTER) { "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_DOWN) },
{ "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) }, { "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) },
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) }, { "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
#endif { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
// Virtual menu { "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_PAGE) },
#if defined(KEYS_GPIO_REG_MENU) { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGE) },
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MENU) }, { "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MENU) },
{ "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MENU) }, { "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MENU) },
#elif defined(KEYS_GPIO_REG_SHIFT) { "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) },
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_SHIFT) }, { "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
{ "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_SHIFT) }, { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
#elif defined(NAVIGATION_HORUS)
#if defined(KEYS_GPIO_REG_PGUP)
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_BREAK(KEY_PGUP) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PGDN) },
#else
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_PGDN) },
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PGDN) },
#endif #endif
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MODEL) },
// Virtual generic plus-next-right minus-previous-left { "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MODEL) },
#if defined(ROTARY_ENCODER_NAVIGATION) { "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) },
{ "EVT_VIRTUAL_NEXT", EVT_ROTARY_RIGHT}, { "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
{ "EVT_VIRTUAL_PREVIOUS", EVT_ROTARY_LEFT }, { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
#elif defined(KEYS_GPIO_REG_RIGHT) && defined(KEYS_GPIO_REG_LEFT)
{ "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_RIGHT) },
{ "EVT_VIRTUAL_NEXT_REPT", EVT_KEY_REPT(KEY_RIGHT) },
{ "EVT_VIRTUAL_PREVIOUS", EVT_KEY_FIRST(KEY_LEFT) },
{ "EVT_VIRTUAL_PREVIOUS_REPT", EVT_KEY_REPT(KEY_LEFT) },
#elif defined(KEYS_GPIO_REG_PLUS) && defined(KEYS_GPIO_REG_MINUS)
{ "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_PLUS) },
{ "EVT_VIRTUAL_NEXT_REPT", EVT_KEY_REPT(KEY_PLUS) },
{ "EVT_VIRTUAL_PREVIOUS", EVT_KEY_FIRST(KEY_MINUS) },
{ "EVT_VIRTUAL_PREVIOUS_REPT", EVT_KEY_REPT(KEY_MINUS) },
#endif #endif
#if defined(KEYS_GPIO_REG_EXIT) #if defined(KEYS_GPIO_REG_EXIT)

View file

@ -869,10 +869,13 @@ static void checkRTCBattery()
void checkFailsafe() void checkFailsafe()
{ {
for (int i=0; i<NUM_MODULES; i++) { for (int i=0; i<NUM_MODULES; i++) {
#if defined(MULTIMODULE)
if (isModuleMultimodule(i)) { if (isModuleMultimodule(i)) {
getMultiModuleStatus(i).requiresFailsafeCheck = true; getMultiModuleStatus(i).requiresFailsafeCheck = true;
} }
else if (isModuleFailsafeAvailable(i)) { else
#endif
if (isModuleFailsafeAvailable(i)) {
ModuleData & moduleData = g_model.moduleData[i]; ModuleData & moduleData = g_model.moduleData[i];
if (moduleData.failsafeMode == FAILSAFE_NOT_SET) { if (moduleData.failsafeMode == FAILSAFE_NOT_SET) {
ALERT(STR_FAILSAFEWARN, STR_NO_FAILSAFE, AU_ERROR); ALERT(STR_FAILSAFEWARN, STR_NO_FAILSAFE, AU_ERROR);
@ -912,7 +915,8 @@ void checkAll()
#endif #endif
#if defined(STM32) #if defined(STM32)
checkRTCBattery(); if (!g_eeGeneral.disableRtcWarning)
checkRTCBattery();
#endif #endif
if (g_model.displayChecklist && modelHasNotes()) { if (g_model.displayChecklist && modelHasNotes()) {

View file

@ -33,7 +33,7 @@ enum ModuleType {
MODULE_TYPE_R9M_PXX2, MODULE_TYPE_R9M_PXX2,
MODULE_TYPE_R9M_LITE_PXX1, MODULE_TYPE_R9M_LITE_PXX1,
MODULE_TYPE_R9M_LITE_PXX2, MODULE_TYPE_R9M_LITE_PXX2,
MODULE_TYPE_R9M_LITE_PRO_PXX1, MODULE_TYPE_R9M_LITE_PRO_PXX1, // Doesn't exist
MODULE_TYPE_R9M_LITE_PRO_PXX2, MODULE_TYPE_R9M_LITE_PRO_PXX2,
MODULE_TYPE_SBUS, MODULE_TYPE_SBUS,
MODULE_TYPE_XJT_LITE_PXX2, MODULE_TYPE_XJT_LITE_PXX2,

View file

@ -1226,7 +1226,7 @@ void convertModelData_217_to_218(ModelData &model)
} }
} }
} }
else if (((oldModel.frsky.screensType >> (2*i)) & 0x03) == TELEMETRY_SCREEN_TYPE_GAUGES) { else if (((oldModel.frsky.screensType >> (2*i)) & 0x03) == TELEMETRY_SCREEN_TYPE_BARS) {
for (int j = 0; j < 4; j++) { for (int j = 0; j < 4; j++) {
newModel.frsky.screens[i].bars[j].source = convertSource_217_to_218(oldModel.frsky.screens[i].bars[j].source); newModel.frsky.screens[i].bars[j].source = convertSource_217_to_218(oldModel.frsky.screens[i].bars[j].source);
} }

View file

@ -355,7 +355,7 @@ void convertModelData_218_to_219(ModelData &model)
} }
} }
} }
else if (screenType == TELEMETRY_SCREEN_TYPE_GAUGES) { else if (screenType == TELEMETRY_SCREEN_TYPE_BARS) {
for (int j = 0; j < 4; j++) { for (int j = 0; j < 4; j++) {
newModel.screens[i].bars[j].source = convertSource_218_to_219(oldModel.frsky.screens[i].bars[j].source); newModel.screens[i].bars[j].source = convertSource_218_to_219(oldModel.frsky.screens[i].bars[j].source);
} }

View file

@ -504,7 +504,7 @@ PACK(struct ModelData_v218 {
swarnstate218_t switchUnlockStates; \ swarnstate218_t switchUnlockStates; \
swconfig218_t switchConfig; \ swconfig218_t switchConfig; \
char switchNames[NUM_SWITCHES_218][LEN_SWITCH_NAME_218]; \ char switchNames[NUM_SWITCHES_218][LEN_SWITCH_NAME_218]; \
char anaNames[NUM_STICKS+NUM_POTS+NUM_SLIDERS][LEN_ANA_NAME_218]; \ char anaNames[NUM_STICKS+STORAGE_NUM_POTS+STORAGE_NUM_SLIDERS][LEN_ANA_NAME_218]; \
BLUETOOTH_FIELDS_218 BLUETOOTH_FIELDS_218
#elif defined(PCBSKY9X) #elif defined(PCBSKY9X)
#define EXTRA_GENERAL_FIELDS_218 \ #define EXTRA_GENERAL_FIELDS_218 \
@ -517,7 +517,7 @@ PACK(struct ModelData_v218 {
uint8_t sticksGain; \ uint8_t sticksGain; \
uint8_t rotarySteps; \ uint8_t rotarySteps; \
char switchNames[NUM_SWITCHES_218][LEN_SWITCH_NAME_218]; \ char switchNames[NUM_SWITCHES_218][LEN_SWITCH_NAME_218]; \
char anaNames[NUM_STICKS+NUM_POTS+NUM_SLIDERS][LEN_ANA_NAME_218]; char anaNames[NUM_STICKS+STORAGE_NUM_POTS+STORAGE_NUM_SLIDERS][LEN_ANA_NAME_218];
#else #else
#define EXTRA_GENERAL_FIELDS_218 EXTRA_GENERAL_FIELDS_GENERAL_218 #define EXTRA_GENERAL_FIELDS_218 EXTRA_GENERAL_FIELDS_GENERAL_218
#endif #endif

View file

@ -33,7 +33,6 @@
#define SWITCH_WARNING_LIST_Y 4*FH+4 #define SWITCH_WARNING_LIST_Y 4*FH+4
#endif #endif
enum LogicalSwitchContextState { enum LogicalSwitchContextState {
SWITCH_START, SWITCH_START,
SWITCH_DELAY, SWITCH_DELAY,

View file

@ -40,6 +40,7 @@ if (PCB STREQUAL X10)
set(FONTS_TARGET x10_fonts) set(FONTS_TARGET x10_fonts)
set(LCD_DRIVER lcd_driver.cpp) set(LCD_DRIVER lcd_driver.cpp)
set(LUA_EXPORT lua_export_x10) set(LUA_EXPORT lua_export_x10)
set(INTERNAL_GPS OFF)
if (PCBREV STREQUAL EXPRESS) if (PCBREV STREQUAL EXPRESS)
set(FLAVOUR x10express) set(FLAVOUR x10express)
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF) option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)

View file

@ -592,7 +592,7 @@ uint8_t gpsGetByte(uint8_t * byte);
extern uint8_t gpsTraceEnabled; extern uint8_t gpsTraceEnabled;
#endif #endif
void gpsSendByte(uint8_t byte); void gpsSendByte(uint8_t byte);
#if defined(PCBX12S) #if defined(INTERNAL_GPS)
#define PILOTPOS_MIN_HDOP 500 #define PILOTPOS_MIN_HDOP 500
#endif #endif

View file

@ -139,7 +139,7 @@ void adcInit()
uint16_t getRTCBatteryVoltage() uint16_t getRTCBatteryVoltage()
{ {
return (rtcBatteryVoltage * ADC_VREF_PREC2) / 2048; return (rtcBatteryVoltage * 2 * ADC_VREF_PREC2) / 2048;
} }
const uint16_t adcCommands[MOUSE1+2] = const uint16_t adcCommands[MOUSE1+2] =

View file

@ -498,14 +498,19 @@ enum Analogs {
#define NUM_SLIDERS 4 #define NUM_SLIDERS 4
#define STORAGE_NUM_POTS 4 #define STORAGE_NUM_POTS 4
#define STORAGE_NUM_SLIDERS 4 #define STORAGE_NUM_SLIDERS 4
#else #elif defined(PCBX9DP)
#define NUM_POTS 3 #define NUM_POTS 3
#define NUM_SLIDERS 2 #define NUM_SLIDERS 2
#define STORAGE_NUM_POTS 3 #define STORAGE_NUM_POTS 3
#define STORAGE_NUM_SLIDERS 2 #define STORAGE_NUM_SLIDERS 2
#else
#define NUM_POTS 2
#define NUM_SLIDERS 2
#define STORAGE_NUM_POTS 3
#define STORAGE_NUM_SLIDERS 2
#endif #endif
#define NUM_XPOTS NUM_POTS #define NUM_XPOTS STORAGE_NUM_POTS
#define NUM_TRIMS 4 #define NUM_TRIMS 4
#define NUM_MOUSE_ANALOGS 0 #define NUM_MOUSE_ANALOGS 0
#define STORAGE_NUM_MOUSE_ANALOGS 0 #define STORAGE_NUM_MOUSE_ANALOGS 0

View file

@ -531,8 +531,8 @@
#define HARDWARE_SWITCH_J #define HARDWARE_SWITCH_J
#define SWITCHES_GPIO_REG_I GPIOC->IDR #define SWITCHES_GPIO_REG_I GPIOC->IDR
#define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13 #define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13
#define SWITCHES_GPIO_REG_J GPIOC->IDR #define SWITCHES_GPIO_REG_J GPIOD->IDR
#define SWITCHES_GPIO_PIN_J GPIO_Pin_10 // PC.10 #define SWITCHES_GPIO_PIN_J GPIO_Pin_10 // PD.10
#endif #endif
#if defined(PCBX9E) #if defined(PCBX9E)
@ -642,8 +642,8 @@
#elif defined(RADIO_X7) #elif defined(RADIO_X7)
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE) #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
#define KEYS_GPIOA_PINS GPIO_Pin_5 #define KEYS_GPIOA_PINS GPIO_Pin_5
#define KEYS_GPIOC_PINS (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_10 | GPIO_Pin_13) #define KEYS_GPIOC_PINS (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_13)
#define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15) #define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15)
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15) #define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)
#elif defined(PCBX9LITES) #elif defined(PCBX9LITES)
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE) #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)

View file

@ -199,6 +199,8 @@ uint32_t switchState(uint8_t index)
ADD_3POS_CASE(D, 3); ADD_3POS_CASE(D, 3);
ADD_2POS_CASE(F); ADD_2POS_CASE(F);
ADD_2POS_CASE(H); ADD_2POS_CASE(H);
ADD_2POS_CASE(I);
ADD_2POS_CASE(J);
#else #else
ADD_3POS_CASE(D, 3); ADD_3POS_CASE(D, 3);
ADD_3POS_CASE(E, 4); ADD_3POS_CASE(E, 4);

View file

@ -574,6 +574,7 @@ const char STR_MENU_DISPLAY[] = TR_MENU_DISPLAY;
const char STR_MENU_OTHER[] = TR_MENU_OTHER; const char STR_MENU_OTHER[] = TR_MENU_OTHER;
const char STR_MENU_INVERT[] = TR_MENU_INVERT; const char STR_MENU_INVERT[] = TR_MENU_INVERT;
const char STR_JITTER_FILTER[] = TR_JITTER_FILTER; const char STR_JITTER_FILTER[] = TR_JITTER_FILTER;
const char STR_RTC_CHECK[] = TR_RTC_CHECK;
const char STR_EXIT[] = TR_EXIT; const char STR_EXIT[] = TR_EXIT;
const char STR_MODULE_RANGE[] = TR_MODULE_RANGE; const char STR_MODULE_RANGE[] = TR_MODULE_RANGE;
const char STR_RECEIVER_OPTIONS[] = TR_RECEIVER_OPTIONS; const char STR_RECEIVER_OPTIONS[] = TR_RECEIVER_OPTIONS;

View file

@ -853,6 +853,7 @@ extern const char STR_MENU_DISPLAY[];
extern const char STR_MENU_OTHER[]; extern const char STR_MENU_OTHER[];
extern const char STR_MENU_INVERT[]; extern const char STR_MENU_INVERT[];
extern const char STR_JITTER_FILTER[]; extern const char STR_JITTER_FILTER[];
extern const char STR_RTC_CHECK[];
#if MENUS_LOCK == 1 #if MENUS_LOCK == 1
extern const char STR_UNLOCKED[]; extern const char STR_UNLOCKED[];

View file

@ -1147,6 +1147,7 @@
#define TR_MENU_OTHER "Ostatní" #define TR_MENU_OTHER "Ostatní"
#define TR_MENU_INVERT "Invertovat" #define TR_MENU_INVERT "Invertovat"
#define TR_JITTER_FILTER "ADC Filtr" #define TR_JITTER_FILTER "ADC Filtr"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1152,6 +1152,7 @@
#define TR_MENU_OTHER "Weitere" #define TR_MENU_OTHER "Weitere"
#define TR_MENU_INVERT "Invertieren<!>" #define TR_MENU_INVERT "Invertieren<!>"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
// ---------------------------------------------------------------- // ----------------------------------------------------------------
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1151,6 +1151,7 @@
#define TR_MENU_OTHER "Other" #define TR_MENU_OTHER "Other"
#define TR_MENU_INVERT "Invert" #define TR_MENU_INVERT "Invert"
#define TR_JITTER_FILTER "ADC filter" #define TR_JITTER_FILTER "ADC filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1172,6 +1172,7 @@
#define TR_MENU_OTHER "Other" #define TR_MENU_OTHER "Other"
#define TR_MENU_INVERT "Invert" #define TR_MENU_INVERT "Invert"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1160,6 +1160,7 @@
#define TR_MENU_OTHER "Other" #define TR_MENU_OTHER "Other"
#define TR_MENU_INVERT "Invert" #define TR_MENU_INVERT "Invert"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -455,10 +455,10 @@
#endif #endif
#define TR_PROTO TR(INDENT "Proto.", INDENT "Protocole") #define TR_PROTO TR(INDENT "Proto.", INDENT "Protocole")
#define TR_PPMFRAME INDENT "Trame PPM" #define TR_PPMFRAME INDENT "Trame PPM"
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate") #define TR_REFRESHRATE INDENT "Période"
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ") #define STR_WARN_BATTVOLTAGE TR(INDENT "Signal est VBAT: ", INDENT "ATTENTION: signal est à VBAT: ")
#define TR_MS "ms" #define TR_MS "ms"
#define TR_FREQUENCY INDENT "Frequency" #define TR_FREQUENCY INDENT "Fréquence"
#define TR_SWITCH TR("Inter", "Interrupteur") #define TR_SWITCH TR("Inter", "Interrupteur")
#define TR_TRIMS "Trims" #define TR_TRIMS "Trims"
#define TR_FADEIN "Fondu ON" #define TR_FADEIN "Fondu ON"
@ -478,12 +478,12 @@
#define TR_SUBTYPE INDENT "Sous-type" #define TR_SUBTYPE INDENT "Sous-type"
#define TR_NOFREEEXPO "Max expos atteint!" #define TR_NOFREEEXPO "Max expos atteint!"
#define TR_NOFREEMIXER "Max mixages atteint!" #define TR_NOFREEMIXER "Max mixages atteint!"
#define TR_SOURCE "Source" #define TR_SOURCE "Source"
#define TR_WEIGHT "Ratio" #define TR_WEIGHT "Ratio"
#define TR_EXPO TR("Expo", "Exponentiel") #define TR_EXPO TR("Expo", "Exponentiel")
#define TR_SIDE "Coté" #define TR_SIDE "Coté"
#define TR_DIFFERENTIAL "Différentiel" #define TR_DIFFERENTIAL "Différentiel"
#define TR_OFFSET "Décalage" #define TR_OFFSET "Décalage"
#define TR_TRIM "Trim" #define TR_TRIM "Trim"
#define TR_DREX "DRex" #define TR_DREX "DRex"
#define DREX_CHBOX_OFFSET 30 #define DREX_CHBOX_OFFSET 30
@ -491,8 +491,8 @@
#define TR_FLMODE TR("Phase", "Phases") #define TR_FLMODE TR("Phase", "Phases")
#define TR_MIXWARNING "Alerte" #define TR_MIXWARNING "Alerte"
#define TR_OFF "OFF" #define TR_OFF "OFF"
#define TR_ANTENNA "Antenna" #define TR_ANTENNA "Antenne"
#define TR_NO_INFORMATION TR("No info", "No information") #define TR_NO_INFORMATION TR("Pas d'info", "Pas d'information")
#define TR_MULTPX "Opération" #define TR_MULTPX "Opération"
#define TR_DELAYDOWN "Retard bas" #define TR_DELAYDOWN "Retard bas"
#define TR_DELAYUP "Retard haut" #define TR_DELAYUP "Retard haut"
@ -516,7 +516,7 @@
#define TR_HAPTIC_LABEL "Vibreur" #define TR_HAPTIC_LABEL "Vibreur"
#define TR_HAPTICSTRENGTH INDENT "Force" #define TR_HAPTICSTRENGTH INDENT "Force"
#define TR_GYRO_LABEL "Gyro" #define TR_GYRO_LABEL "Gyro"
#define TR_GYRO_OFFSET "Offset" #define TR_GYRO_OFFSET "Décalage"
#define TR_GYRO_MAX "Max" #define TR_GYRO_MAX "Max"
#define TR_CONTRAST "Contraste" #define TR_CONTRAST "Contraste"
#define TR_ALARMS_LABEL "Alarmes" #define TR_ALARMS_LABEL "Alarmes"
@ -540,8 +540,8 @@
#define TR_BLOFFBRIGHTNESS INDENT "Luminosité OFF" #define TR_BLOFFBRIGHTNESS INDENT "Luminosité OFF"
#define TR_BLCOLOR INDENT "Couleur" #define TR_BLCOLOR INDENT "Couleur"
#define TR_SPLASHSCREEN "Logo d'accueil" #define TR_SPLASHSCREEN "Logo d'accueil"
#define TR_PWR_ON_DELAY "Pwr On delay" #define TR_PWR_ON_DELAY "Délai btn ON"
#define TR_PWR_OFF_DELAY "Pwr Off delay" #define TR_PWR_OFF_DELAY "Délai btn OFF"
#define TR_THROTTLEWARNING TR(INDENT "Alerte gaz", INDENT "Alerte gaz") #define TR_THROTTLEWARNING TR(INDENT "Alerte gaz", INDENT "Alerte gaz")
#define TR_SWITCHWARNING TR(INDENT "Alerte int", INDENT "Pos. interrupteurs") #define TR_SWITCHWARNING TR(INDENT "Alerte int", INDENT "Pos. interrupteurs")
#define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders")
@ -579,11 +579,11 @@
#define OFS_RX 4 #define OFS_RX 4
#define TR_ACCEL "Acc:" #define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA" #define TR_NODATA CENTER "NO DATA"
#define TR_US "us" #define TR_US "us"
#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" #define TR_TMR1LATMINUS "Tmr1Lat min\037\124us"
#define TR_TMIXMAXMS "Tmix max" #define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack" #define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" pour reset" #define TR_MENUTORESET TR_ENTER" pour reset"
#define TR_PPM_TRAINER "TR" #define TR_PPM_TRAINER "TR"
@ -648,8 +648,8 @@
#define TR_MULTI_RFTUNE TR(INDENT "Ajust.fréq", INDENT "Ajustement fréq.") #define TR_MULTI_RFTUNE TR(INDENT "Ajust.fréq", INDENT "Ajustement fréq.")
#define TR_MULTI_TELEMETRY "Télémétrie" #define TR_MULTI_TELEMETRY "Télémétrie"
#define TR_MULTI_VIDFREQ TR(INDENT "Fréq. vidéo", INDENT "Fréquence vidéo") #define TR_MULTI_VIDFREQ TR(INDENT "Fréq. vidéo", INDENT "Fréquence vidéo")
#define TR_RFPOWER TR(INDENT "Puiss. RF", INDENT "Puissance RF") #define TR_RFPOWER TR(INDENT "Puiss. RF", INDENT "Puissance RF")
#define TR_MULTI_FIXEDID TR("FixedID", "Fixed ID") #define TR_MULTI_FIXEDID "ID fixe"
#define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Option perso") #define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Option perso")
#define TR_MULTI_AUTOBIND TR(INDENT "Bind auto", INDENT "Bind automatique") #define TR_MULTI_AUTOBIND TR(INDENT "Bind auto", INDENT "Bind automatique")
#define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodét.", INDENT "Autodétection") #define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodét.", INDENT "Autodétection")
@ -704,37 +704,37 @@
#define TR_CAT_NOT_EMPTY "Categorie non vide" #define TR_CAT_NOT_EMPTY "Categorie non vide"
#define TR_SDCARD_ERROR "Erreur carte SD" #define TR_SDCARD_ERROR "Erreur carte SD"
#define TR_NO_SDCARD "Carte SD indisponible" #define TR_NO_SDCARD "Carte SD indisponible"
#define TR_WAITING_FOR_RX "Waiting for RX..." #define TR_WAITING_FOR_RX "Attente du RX..."
#define TR_WAITING_FOR_TX "Waiting for TX..." #define TR_WAITING_FOR_TX "Attente du TX..."
#define TR_NO_TOOLS "No tools available" #define TR_NO_TOOLS "Pas d'outils dispo"
#define TR_NORMAL "Normal" #define TR_NORMAL "Normal"
#define TR_NOT_INVERTED "Not inv" #define TR_NOT_INVERTED "Non inv"
#define TR_NOT_CONNECTED "!Connected" #define TR_NOT_CONNECTED "!Connecté"
#define TR_CONNECTED "Connected" #define TR_CONNECTED "Connecté"
#define TR_FLEX_915 "Flex 915MHz" #define TR_FLEX_915 "Flex 915MHz"
#define TR_FLEX_868 "Flex 868MHz" #define TR_FLEX_868 "Flex 868MHz"
#define TR_16CH_WITHOUT_TELEMETRY TR("16CH without telem.", "16CH without telemetry") #define TR_16CH_WITHOUT_TELEMETRY TR("16CH sans télém.", "16CH sans télémétrie")
#define TR_16CH_WITH_TELEMETRY TR("16CH with telem.", "16CH with telemetry") #define TR_16CH_WITH_TELEMETRY TR("16CH avec télém.", "16CH avec télémétrie")
#define TR_8CH_WITH_TELEMETRY TR("8CH with telem.", "8CH with telemetry") #define TR_8CH_WITH_TELEMETRY TR("8CH avec télém.", "8CH avec télémétrie")
#define TR_EXT_ANTENNA "Ext. antenna" #define TR_EXT_ANTENNA "Antenne externe"
#define TR_PIN "Pin" #define TR_PIN "Pin"
#define TR_UPDATE_RX_OPTIONS "Update RX options?" #define TR_UPDATE_RX_OPTIONS "Sauver options RX?"
#define TR_UPDATE_TX_OPTIONS "Update TX options?" #define TR_UPDATE_TX_OPTIONS "Sauver options TX?"
#define TR_MODULES_RX_VERSION "Modules / RX version" #define TR_MODULES_RX_VERSION "Versions modules / RX"
#define TR_MENU_MODULES_RX_VERSION "MODULES / RX VERSION" #define TR_MENU_MODULES_RX_VERSION "VERSIONS MODULES / RX "
#define TR_MENU_FIRM_OPTIONS "FIRMWARE OPTIONS" #define TR_MENU_FIRM_OPTIONS "OPTIONS FIRMWARE"
#define TR_GYRO "Gyro" #define TR_GYRO "Gyro"
#define TR_STICKS_POTS_SLIDERS "Sticks/Pots/Sliders" #define TR_STICKS_POTS_SLIDERS "Manches/Pots/leviers"
#define TR_PWM_STICKS_POTS_SLIDERS "PWM Sticks/Pots/Sliders" #define TR_PWM_STICKS_POTS_SLIDERS "Manches PWM/Pots/leviers"
#define TR_RF_PROTOCOL "RF Protocol" #define TR_RF_PROTOCOL "Protocole RF"
#define TR_MODULE_OPTIONS "Module options" #define TR_MODULE_OPTIONS "Options module"
#define TR_POWER "Power" #define TR_POWER "Puissance"
#define TR_NO_TX_OPTIONS "No TX options" #define TR_NO_TX_OPTIONS "Pas d'options TX"
#define TR_RTC_BATT "RTC Batt" #define TR_RTC_BATT "Pile RTC"
#define TR_POWER_METER_EXT "Power Meter (EXT)" #define TR_POWER_METER_EXT "Puissancemètre (EXT)"
#define TR_POWER_METER_INT "Power Meter (INT)" #define TR_POWER_METER_INT "Puissancemètre (INT)"
#define TR_SPECTRUM_ANALYSER_EXT "Spectrum (EXT)" #define TR_SPECTRUM_ANALYSER_EXT TR("Spectre (EXT)", "Analyseur spectre (EXT)")
#define TR_SPECTRUM_ANALYSER_INT "Spectrum (INT)" #define TR_SPECTRUM_ANALYSER_INT TR("Spectre (INT)", "Analyseur spectre (INT)")
#define TR_SDCARD_FULL "Carte SD pleine" #define TR_SDCARD_FULL "Carte SD pleine"
#define TR_INCOMPATIBLE "Incompatible" #define TR_INCOMPATIBLE "Incompatible"
#define TR_WARNING "ALERTE" #define TR_WARNING "ALERTE"
@ -748,9 +748,9 @@
#define TR_NIGHTLY_WARNING TR("NIGHTLY", "NIGHTLY BUILD") #define TR_NIGHTLY_WARNING TR("NIGHTLY", "NIGHTLY BUILD")
#define TR_NIGHTLY_NOTSAFE "Version de test uniq." #define TR_NIGHTLY_NOTSAFE "Version de test uniq."
#define TR_WRONG_SDCARDVERSION "Version requise: " #define TR_WRONG_SDCARDVERSION "Version requise: "
#define TR_WARN_RTC_BATTERY_LOW "RTC Battery low" #define TR_WARN_RTC_BATTERY_LOW "Batterie RTC faible"
#define TR_WARN_MULTI_LOWPOWER "Low power mode" #define TR_WARN_MULTI_LOWPOWER "Mode basse puis."
#define TR_BATTERY "BATTERY" #define TR_BATTERY "BATTERIE"
#define TR_WRONG_PCBREV "PCB incorrect détecté" #define TR_WRONG_PCBREV "PCB incorrect détecté"
#define TR_EMERGENCY_MODE "MODE SECOURS" #define TR_EMERGENCY_MODE "MODE SECOURS"
#define TR_PCBREV_ERROR "Erreur PCB" #define TR_PCBREV_ERROR "Erreur PCB"
@ -799,11 +799,11 @@
#define TR_TIME "Heure" #define TR_TIME "Heure"
#define TR_MAXBAUDRATE "Max bauds" #define TR_MAXBAUDRATE "Max bauds"
#define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH "Bluetooth"
#define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_DISC "Découvrir"
#define TR_BLUETOOTH_INIT "Init" #define TR_BLUETOOTH_INIT "Init"
#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" #define TR_BLUETOOTH_DIST_ADDR INDENT "Addr dist."
#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" #define TR_BLUETOOTH_LOCAL_ADDR INDENT "Addr locale"
#define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BLUETOOTH_PIN_CODE "Code PIN"
#define TR_BAUDRATE "Baudrate BT" #define TR_BAUDRATE "Baudrate BT"
#define LEN_BLUETOOTH_MODES "\012" #define LEN_BLUETOOTH_MODES "\012"
#if defined(PCBX9E) #if defined(PCBX9E)
@ -831,9 +831,9 @@
#define TR_VIEW_TEXT "Voir texte" #define TR_VIEW_TEXT "Voir texte"
#define TR_FLASH_BOOTLOADER "Flasher BootLoader" #define TR_FLASH_BOOTLOADER "Flasher BootLoader"
#define TR_FLASH_EXTERNAL_DEVICE TR("Flasher S.Port", "Flasher S.Port externe") #define TR_FLASH_EXTERNAL_DEVICE TR("Flasher S.Port", "Flasher S.Port externe")
#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA" #define TR_FLASH_RECEIVER_OTA "Flasher RX OTA"
#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module") #define TR_FLASH_BLUETOOTH_MODULE TR("Flash module BT", "Flash module Bluetooth")
#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit" #define TR_FLASH_POWER_MANAGEMENT_UNIT "Flasher pwr mngt unit"
#define TR_CURRENT_VERSION "Version courante :" #define TR_CURRENT_VERSION "Version courante :"
#define TR_FLASH_INTERNAL_MODULE TR("Flasher module int.", "Flasher module interne") #define TR_FLASH_INTERNAL_MODULE TR("Flasher module int.", "Flasher module interne")
#define TR_FLASH_INTERNAL_MULTI TR("Flash Int. Multi", "Flash Internal Multi") #define TR_FLASH_INTERNAL_MULTI TR("Flash Int. Multi", "Flash Internal Multi")
@ -844,16 +844,16 @@
#define TR_WRITING TR("\14Ecriture...", "\032Ecriture...") #define TR_WRITING TR("\14Ecriture...", "\032Ecriture...")
#define TR_CONFIRM_FORMAT "Confirmer Formatage?" #define TR_CONFIRM_FORMAT "Confirmer Formatage?"
#define TR_INTERNALRF "HF interne" #define TR_INTERNALRF "HF interne"
#define TR_INTERNAL_MODULE TR("Int. module","Internal module") #define TR_INTERNAL_MODULE TR("Module int.","Module interne")
#define TR_EXTERNAL_MODULE TR("Ext. module","External module") #define TR_EXTERNAL_MODULE TR("Module ext.","Module externe")
#define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" #define TR_OPENTX_UPGRADE_REQUIRED "Màj OpenTX nécessaire"
#define TR_TELEMETRY_DISABLED "Telem. disabled" #define TR_TELEMETRY_DISABLED "Télém. désactivée"
#define TR_MORE_OPTIONS_AVAILABLE "More options available" #define TR_MORE_OPTIONS_AVAILABLE "Autres options disponibles"
#define TR_NO_MODULE_INFORMATION "No module information" #define TR_NO_MODULE_INFORMATION "Pas d'info module"
#define TR_EXTERNALRF "HF externe" #define TR_EXTERNALRF "HF externe"
#define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Type failsafe") #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Type failsafe")
#define TR_FAILSAFESET "REGLAGES FAILSAFE" #define TR_FAILSAFESET "REGLAGES FAILSAFE"
#define TR_REG_ID TR("ID Enr.", "ID Enregisrement") #define TR_REG_ID TR("ID Enr.", "ID Enregistr.")
#define TR_OWNER_ID "ID Radio" #define TR_OWNER_ID "ID Radio"
#define TR_PINMAPSET "PINMAP" #define TR_PINMAPSET "PINMAP"
#define TR_HOLD "Hold" #define TR_HOLD "Hold"
@ -907,7 +907,7 @@
#define TR_PXX2_SELECT_RX "Sélect RX..." #define TR_PXX2_SELECT_RX "Sélect RX..."
#define TR_PXX2_DEFAULT "<défaut>" #define TR_PXX2_DEFAULT "<défaut>"
#define TR_BT_SELECT_DEVICE "Sélect appareil..." #define TR_BT_SELECT_DEVICE "Sélect appareil..."
#define TR_DISCOVER "Découvrir" #define TR_DISCOVER "Découvrir"
#define TR_BUTTON_INIT BUTTON("Init") #define TR_BUTTON_INIT BUTTON("Init")
#define TR_WAITING "Attente..." #define TR_WAITING "Attente..."
#define TR_RECEIVER_DELETE "Suppr récept.?" #define TR_RECEIVER_DELETE "Suppr récept.?"
@ -916,8 +916,8 @@
#define TR_BIND "Bind" #define TR_BIND "Bind"
#define TR_REGISTER TR("Enr", "Enregistr.") #define TR_REGISTER TR("Enr", "Enregistr.")
#define TR_MODULE_RANGE BUTTON(TR("Prt", "Port.")) #define TR_MODULE_RANGE BUTTON(TR("Prt", "Port."))
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS") #define TR_RECEIVER_OPTIONS TR("OPTIONS REC.", "OPTIONS RECEPTEUR")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete")) #define TR_DEL_BUTTON BUTTON(TR("Eff", "Effacer"))
#define TR_RESET_BTN BUTTON("RAZ") #define TR_RESET_BTN BUTTON("RAZ")
#define TR_DEBUG "Debug" #define TR_DEBUG "Debug"
#define TR_KEYS_BTN BUTTON(TR("Btns","Inters")) #define TR_KEYS_BTN BUTTON(TR("Btns","Inters"))
@ -939,18 +939,18 @@
#define TR_ANTENNACONFIRM1 "Vraiment changer?" #define TR_ANTENNACONFIRM1 "Vraiment changer?"
#if defined(PCBX12S) #if defined(PCBX12S)
#define LEN_ANTENNA_MODES "\021" #define LEN_ANTENNA_MODES "\021"
#define TR_ANTENNA_MODES "Interne\0 ""Ask\0 ""Par modèle\0 ""Interne + Externe" #define TR_ANTENNA_MODES "Interne\0 ""Demander\0 ""Par modèle\0 ""Interne + Externe"
#else #else
#define LEN_ANTENNA_MODES "\011" #define LEN_ANTENNA_MODES "\012"
#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" #define TR_ANTENNA_MODES "Interne\0 ""Demander\0 ""Par modèle""Externe\0 "
#endif #endif
#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") #define TR_USE_INTERNAL_ANTENNA TR("Util antenne int", "Utiliser antenne interne")
#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") #define TR_USE_EXTERNAL_ANTENNA TR("Util antenne ext", "Utiliser antenne externe")
#define TR_ANTENNACONFIRM2 TR("Vérif antenne", "Installer l'antenne d'abord!") #define TR_ANTENNACONFIRM2 TR("Vérif antenne", "Installer l'antenne d'abord!")
#define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Nécessite firm." #define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Nécessite firm."
#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" #define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Nécessite FCC"
#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" #define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Nécessite EU"
#define TR_MODULE_PROTOCOL_WARN_LINE2 "R9M non certifié" #define TR_MODULE_PROTOCOL_WARN_LINE2 "R9M non certifié"
#define TR_LOWALARM INDENT "Alarme basse" #define TR_LOWALARM INDENT "Alarme basse"
#define TR_CRITICALALARM INDENT "Alarme critique" #define TR_CRITICALALARM INDENT "Alarme critique"
#define TR_RSSIALARM_WARN TR("RSSI", "TELEMETRIE") #define TR_RSSIALARM_WARN TR("RSSI", "TELEMETRIE")
@ -981,7 +981,7 @@
#define TR_PREFLIGHT "Vérifications avant vol" #define TR_PREFLIGHT "Vérifications avant vol"
#define TR_CHECKLIST TR(INDENT "Notes", INDENT "Afficher notes") #define TR_CHECKLIST TR(INDENT "Notes", INDENT "Afficher notes")
#define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS") #define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS")
#define TR_AUX_SERIAL_MODE "Port série" #define TR_AUX_SERIAL_MODE "Port série"
#define TR_SCRIPT "Script" #define TR_SCRIPT "Script"
#define TR_INPUTS "Entrées" #define TR_INPUTS "Entrées"
#define TR_OUTPUTS "Sorties" #define TR_OUTPUTS "Sorties"
@ -1175,6 +1175,7 @@
#define TR_MENU_OTHER "Autres" #define TR_MENU_OTHER "Autres"
#define TR_MENU_INVERT "Inverser" #define TR_MENU_INVERT "Inverser"
#define TR_JITTER_FILTER "Filtre ADC" #define TR_JITTER_FILTER "Filtre ADC"
#define TR_RTC_CHECK TR("Vérif. RTC", "Vérif. pile RTC")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1168,6 +1168,7 @@
#define TR_MENU_OTHER "Altro" #define TR_MENU_OTHER "Altro"
#define TR_MENU_INVERT "Inverti" #define TR_MENU_INVERT "Inverti"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1162,6 +1162,7 @@ TR_GYR_VSRCRAW
#define TR_MENU_OTHER "Verdere" #define TR_MENU_OTHER "Verdere"
#define TR_MENU_INVERT "Inverteer" #define TR_MENU_INVERT "Inverteer"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1168,6 +1168,7 @@
#define TR_MENU_OTHER "Inny " #define TR_MENU_OTHER "Inny "
#define TR_MENU_INVERT "Odwróć" #define TR_MENU_INVERT "Odwróć"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1157,6 +1157,7 @@
#define TR_MENU_OTHER "Other" #define TR_MENU_OTHER "Other"
#define TR_MENU_INVERT "Invert" #define TR_MENU_INVERT "Invert"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -1168,6 +1168,7 @@
#define TR_MENU_OTHER "Annat" #define TR_MENU_OTHER "Annat"
#define TR_MENU_INVERT "Invertera" #define TR_MENU_INVERT "Invertera"
#define TR_JITTER_FILTER "ADC Filter" #define TR_JITTER_FILTER "ADC Filter"
#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage")
#define ZSTR_RSSI "RSSI" #define ZSTR_RSSI "RSSI"
#define ZSTR_R9PW "R9PW" #define ZSTR_R9PW "R9PW"

View file

@ -38,12 +38,9 @@
#elif defined(PCBX9E) #elif defined(PCBX9E)
#define TR_POTS_VSRCRAW "\310F1\0""\310F2\0""\310F3\0""\310F4\0""\311S1\0""\311S2\0""\311LS\0""\311RS\0" #define TR_POTS_VSRCRAW "\310F1\0""\310F2\0""\310F3\0""\310F4\0""\311S1\0""\311S2\0""\311LS\0""\311RS\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0"
#elif defined(PCBXLITES)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0"
#elif defined(PCBXLITE) #elif defined(PCBXLITE)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0" #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0"
#elif defined(RADIO_X7) #elif defined(RADIO_X7)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0" #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SF\0""\312SH\0""\312SI\0""\312SJ\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SF\0""\312SH\0""\312SI\0""\312SJ\0"
@ -56,12 +53,9 @@
#elif defined(PCBX9LITE) #elif defined(PCBX9LITE)
#define TR_POTS_VSRCRAW "\310S1\0" #define TR_POTS_VSRCRAW "\310S1\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0"
#elif defined(PCBX9DP) && PCBREV >= 2019
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\311LS\0""\311RS\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0"
#elif defined(PCBTARANIS) #elif defined(PCBTARANIS)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\311LS\0""\311RS\0" #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\311LS\0""\311RS\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0"
#elif defined(PCBSKY9X) #elif defined(PCBSKY9X)
#define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 "
#define TR_SW_VSRCRAW "3POS" "THR\0""RUD\0""ELE\0""AIL\0""GEA\0""TRN\0" #define TR_SW_VSRCRAW "3POS" "THR\0""RUD\0""ELE\0""AIL\0""GEA\0""TRN\0"

View file

@ -64,7 +64,7 @@ if [[ " SKY9X ARM9X ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=SKY9X -DHELI=YES DLUA=YES -DTELEMETRY=FRSKY -DPPM_LIMITS_SYMETRICAL=YES -DVARIO=YES -DAUTOSWITCH=YES -DAUTOSOURCE=YES -DAUDIO=YES -DGPS=YES -DPPM_CENTER_ADJUSTABLE=YES -DFLIGHT_MODES=YES -DOVERRIDE_CHANNEL_FUNCTION=YES -DFRSKY_STICKS=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=SKY9X -DHELI=YES DLUA=YES -DTELEMETRY=FRSKY -DPPM_LIMITS_SYMETRICAL=YES -DVARIO=YES -DAUTOSWITCH=YES -DAUTOSOURCE=YES -DAUDIO=YES -DGPS=YES -DPPM_CENTER_ADJUSTABLE=YES -DFLIGHT_MODES=YES -DOVERRIDE_CHANNEL_FUNCTION=YES -DFRSKY_STICKS=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " AR9X ARM9X ALL " =~ " ${FLAVOR} " ]] ; then if [[ " AR9X ARM9X ALL " =~ " ${FLAVOR} " ]] ; then
@ -73,7 +73,7 @@ if [[ " AR9X ARM9X ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=AR9X -DHELI=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=AR9X -DHELI=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " 9XRPRO ARM9X ALL " =~ " ${FLAVOR} " ]] ; then if [[ " 9XRPRO ARM9X ALL " =~ " ${FLAVOR} " ]] ; then
@ -82,7 +82,7 @@ if [[ " 9XRPRO ARM9X ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=9XRPRO -DHELI=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=9XRPRO -DHELI=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X9LITE ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X9LITE ALL " =~ " ${FLAVOR} " ]] ; then
@ -91,7 +91,7 @@ if [[ " X9LITE ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X9LITE -DHELI=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X9LITE -DHELI=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X9LITES ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X9LITES ALL " =~ " ${FLAVOR} " ]] ; then
@ -109,7 +109,7 @@ if [[ " X7 ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X7 -DHELI=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X7 -DHELI=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " XLITE ALL " =~ " ${FLAVOR} " ]] ; then if [[ " XLITE ALL " =~ " ${FLAVOR} " ]] ; then
@ -118,7 +118,7 @@ if [[ " XLITE ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=XLITE -DHELI=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=XLITE -DHELI=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " XLITES ALL " =~ " ${FLAVOR} " ]] ; then if [[ " XLITES ALL " =~ " ${FLAVOR} " ]] ; then
@ -127,7 +127,7 @@ if [[ " XLITES ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=XLITES -DHELI=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=XLITES -DHELI=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X9D X9 ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X9D X9 ALL " =~ " ${FLAVOR} " ]] ; then
@ -136,7 +136,7 @@ if [[ " X9D X9 ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X9D -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X9D -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X9D+ X9 ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X9D+ X9 ALL " =~ " ${FLAVOR} " ]] ; then
@ -145,7 +145,7 @@ if [[ " X9D+ X9 ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X9D+2019 X9 ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X9D+2019 X9 ALL " =~ " ${FLAVOR} " ]] ; then
@ -154,7 +154,7 @@ if [[ " X9D+2019 X9 ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DPCBREV=2019 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X9D+ -DPCBREV=2019 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X9E X9 ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X9E X9 ALL " =~ " ${FLAVOR} " ]] ; then
@ -163,7 +163,7 @@ if [[ " X9E X9 ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X9E -DHELI=YES -DLUA=YES -DGVARS=YES -DPPM_UNIT=PERCENT_PREC1 ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X9E -DHELI=YES -DLUA=YES -DGVARS=YES -DPPM_UNIT=PERCENT_PREC1 ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X10 HORUS ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X10 HORUS ALL " =~ " ${FLAVOR} " ]] ; then
@ -172,7 +172,7 @@ if [[ " X10 HORUS ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X10 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X10 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " X12S HORUS ALL " =~ " ${FLAVOR} " ]] ; then if [[ " X12S HORUS ALL " =~ " ${FLAVOR} " ]] ; then
@ -181,7 +181,7 @@ if [[ " X12S HORUS ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X12S -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X12S -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " T12 ALL " =~ " ${FLAVOR} " ]] ; then if [[ " T12 ALL " =~ " ${FLAVOR} " ]] ; then
@ -190,7 +190,7 @@ if [[ " T12 ALL " =~ " ${FLAVOR} " ]] ; then
cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=T12 -DHELI=YES -DGVARS=YES ${SRCDIR} cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=T12 -DHELI=YES -DGVARS=YES ${SRCDIR}
make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} ${FIRMARE_TARGET}
make -j${CORES} libsimulator make -j${CORES} libsimulator
make -j${CORES} tests make -j${CORES} tests-radio
fi fi
if [[ " DEFAULT ALL " =~ " ${FLAVOR} " ]] ; then if [[ " DEFAULT ALL " =~ " ${FLAVOR} " ]] ; then
@ -198,4 +198,5 @@ if [[ " DEFAULT ALL " =~ " ${FLAVOR} " ]] ; then
rm -rf * rm -rf *
cmake ${COMMON_OPTIONS} ${SRCDIR} cmake ${COMMON_OPTIONS} ${SRCDIR}
make -j${CORES} make -j${CORES}
make -j${CORES} tests
fi fi