diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d9b3abb6..15d83b917 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(VERSION_REVISION "1") set(VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX}) set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR}) 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}) cmake_minimum_required(VERSION 2.8) @@ -225,6 +225,11 @@ endif() 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) add_subdirectory(${COMPANION_SRC_DIRECTORY}) add_custom_target(gtests DEPENDS gtests-radio gtests-companion) diff --git a/companion/src/datamodels/rawitemdatamodels.cpp b/companion/src/datamodels/rawitemdatamodels.cpp index f1e613d4a..1cba1c180 100644 --- a/companion/src/datamodels/rawitemdatamodels.cpp +++ b/companion/src/datamodels/rawitemdatamodels.cpp @@ -85,6 +85,7 @@ RawSwitchItemModel::RawSwitchItemModel(const GeneralSettings * const generalSett Firmware * fw = getCurrentFirmware(); // Descending switch direction: NOT (!) switches + addItems(SWITCH_TYPE_ACT, -1); addItems(SWITCH_TYPE_SENSOR, -CPN_MAX_SENSORS); addItems(SWITCH_TYPE_TELEMETRY, -1); 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_ON, 1); addItems(SWITCH_TYPE_ONE, 1); + addItems(SWITCH_TYPE_ACT, 1); } void RawSwitchItemModel::setDynamicItemData(QStandardItem * item, const RawSwitch & rsw) const diff --git a/companion/src/firmwares/generalsettings.h b/companion/src/firmwares/generalsettings.h index f3b415ec4..a111cac1e 100644 --- a/companion/src/firmwares/generalsettings.h +++ b/companion/src/firmwares/generalsettings.h @@ -109,6 +109,7 @@ class GeneralSettings { bool adjustRTC; bool optrexDisplay; unsigned int inactivityTimer; + unsigned int telemetryBaudrate; bool minuteBeep; bool preBeep; bool flashBeep; @@ -140,6 +141,7 @@ class GeneralSettings { unsigned int rotarySteps; unsigned int countryCode; bool jitterFilter; + bool rtcCheckDisable; unsigned int imperial; char ttsLanguage[2+1]; int beepVolume; diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index 50310c5d0..e09724b48 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -127,12 +127,12 @@ QString ModuleData::protocolToString(unsigned protocol) "FrSky XJT (D16)", "FrSky XJT (D8)", "FrSky XJT (LR12)", "FrSky DJT", "TBS Crossfire", "DIY Multiprotocol Module", - "FrSky PXX R9M", - "FrSky PXX R9M Lite", - "FrSky PXX R9M Lite Pro", + "FrSky R9M", + "FrSky R9M Lite", + "FrSky R9M Lite Pro", "SBUS output at VBat", "FrSky ACCESS ISRM", "FrSky ACCST ISRM D16", - "FrSky ACCESS R9M", + "FrSky ACCESS R9M 2019", "FrSky ACCESS R9M Lite", "FrSky ACCESS R9M Lite Pro", "FrSky XJT lite (D16)", "FrSky XJT lite (D8)", "FrSky XJT lite (LR12)" diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index a81457e23..0fe94ab70 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -217,6 +217,10 @@ class SwitchesConversionTable: public ConversionTable { 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) { _id = sensor.id; _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; _offset = sensor.offset; } @@ -1942,12 +1946,12 @@ class SensorField: public TransformedField { sensor.id = _id; sensor.subid = _subid; 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.moduleIdx = 0x01; // 1 bit module idx } else { - sensor.instance = _instance & 0x1F; + sensor.instance = (_instance & 0x1F) + 1; sensor.rxIdx = (_instance >> 5) & 0x03; // 2 bits Rx 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)); if (IS_TARANIS_X9(board)) { - // TODO TOPBAR - internalField.Append(new SpareBitsField<16>(this)); + internalField.Append(new UnsignedField<8>(this, modelData.frsky.voltsSource)); + internalField.Append(new UnsignedField<8>(this, modelData.frsky.altitudeSource)); } 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)); else 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++) { 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 SpareBitsField<3>(this)); // telemetryBaudrate + internalField.Append(new UnsignedField<3>(this, generalData.telemetryBaudrate)); if (IS_HORUS(board)) internalField.Append(new SpareBitsField<3>(this)); else if (IS_TARANIS(board)) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 7fcbb0cdc..d7adfb817 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -803,13 +803,15 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port) case PULSES_MULTIMODULE: case PULSES_CROSSFIRE: 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_PRO: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); case PULSES_XJT_LITE_X16: case PULSES_XJT_LITE_D8: case PULSES_XJT_LITE_LR12: - return (IS_TARANIS_XLITES(board) || IS_TARANIS_X9LITE(board)); + return (IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board)); default: return false; } diff --git a/companion/src/firmwares/rawswitch.cpp b/companion/src/firmwares/rawswitch.cpp index 6438d335e..1d91f242a 100644 --- a/companion/src/firmwares/rawswitch.cpp +++ b/companion/src/firmwares/rawswitch.cpp @@ -115,6 +115,9 @@ QString RawSwitch::toString(Board::Type board, const GeneralSettings * const gen case SWITCH_TYPE_ONE: return tr("One"); + case SWITCH_TYPE_ACT: + return tr("Act"); + case SWITCH_TYPE_FLIGHT_MODE: if (modelData) return modelData->flightModeData[index-1].nameToString(index - 1); diff --git a/companion/src/firmwares/rawswitch.h b/companion/src/firmwares/rawswitch.h index 6d0c93700..af49156c0 100644 --- a/companion/src/firmwares/rawswitch.h +++ b/companion/src/firmwares/rawswitch.h @@ -45,6 +45,7 @@ enum RawSwitchType { SWITCH_TYPE_TIMER_MODE, SWITCH_TYPE_TELEMETRY, SWITCH_TYPE_SENSOR, + SWITCH_TYPE_ACT, MAX_SWITCH_TYPE }; diff --git a/companion/src/generaledit/hardware.cpp b/companion/src/generaledit/hardware.cpp index 09f109bda..8868e7766 100644 --- a/companion/src/generaledit/hardware.cpp +++ b/companion/src/generaledit/hardware.cpp @@ -200,6 +200,15 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings } else { ui->filterEnable->hide(); + ui->filterLabel->hide(); + } + + if (IS_STM32(board)) { + ui->rtcCheckDisable->setChecked(!generalSettings.rtcCheckDisable); + } + else { + ui->rtcCheckDisable->hide(); + ui->rtcCheckLabel->hide(); } disableMouseScrolling(); @@ -217,6 +226,11 @@ void HardwarePanel::on_filterEnable_stateChanged() generalSettings.jitterFilter = !ui->filterEnable->isChecked(); } +void HardwarePanel::on_rtcCheckDisable_stateChanged() +{ + generalSettings.rtcCheckDisable = !ui->rtcCheckDisable->isChecked(); +} + void HardwarePanel::on_PPM_MultiplierDSB_editingFinished() { int val = (int)(ui->PPM_MultiplierDSB->value()*10)-10; diff --git a/companion/src/generaledit/hardware.h b/companion/src/generaledit/hardware.h index 07ba62c40..8101b784c 100644 --- a/companion/src/generaledit/hardware.h +++ b/companion/src/generaledit/hardware.h @@ -49,6 +49,7 @@ class HardwarePanel : public GeneralPanel void on_txCurrentCalibration_editingFinished(); void on_txVoltageCalibration_editingFinished(); void on_filterEnable_stateChanged(); + void on_rtcCheckDisable_stateChanged(); void on_serialPortMode_currentIndexChanged(int index); diff --git a/companion/src/generaledit/hardware.ui b/companion/src/generaledit/hardware.ui index 79bb36a32..45e8e8da6 100644 --- a/companion/src/generaledit/hardware.ui +++ b/companion/src/generaledit/hardware.ui @@ -7,7 +7,7 @@ 0 0 470 - 1585 + 1618 @@ -57,7 +57,7 @@ - + @@ -169,7 +169,7 @@ - + -49 @@ -192,27 +192,7 @@ - - - - RS2 - - - - - - - - 0 - 10 - - - - Qt::Horizontal - - - - + @@ -231,6 +211,26 @@ + + + + + 0 + 10 + + + + Qt::Horizontal + + + + + + + RS2 + + + @@ -267,7 +267,7 @@ - + Current Offset @@ -284,7 +284,7 @@ - + PPM 2 @@ -312,6 +312,9 @@ + + + @@ -322,6 +325,19 @@ + + + + + + + + + + + + + @@ -342,17 +358,14 @@ - - + + - - - @@ -375,16 +388,6 @@ - - - - - - - - - - @@ -434,6 +437,16 @@ + + + + + + + + + + @@ -447,23 +460,6 @@ - - - - 3 - - - - - - - - - - - - - @@ -471,6 +467,13 @@ + + + + 3 + + + @@ -512,7 +515,7 @@ - + 1 @@ -545,6 +548,19 @@ + + + + + + + + + + + + + @@ -562,19 +578,6 @@ - - - - - - - - - - - - - @@ -589,9 +592,6 @@ - - - @@ -599,6 +599,13 @@ + + + + SI + + + @@ -613,10 +620,10 @@ - - + + - SI + SL @@ -627,13 +634,6 @@ - - - - SL - - - @@ -688,7 +688,7 @@ - + @@ -707,7 +707,7 @@ - + PPM 1 @@ -727,14 +727,14 @@ - + PPM 4 - + @@ -766,6 +766,20 @@ + + + + SB + + + + + + + 3 + + + @@ -788,21 +802,7 @@ - - - - SB - - - - - - - 3 - - - - + PPM Multiplier @@ -903,16 +903,6 @@ - - - - Antenna - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - @@ -933,7 +923,17 @@ - + + + + Antenna + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + PPM 3 @@ -1029,6 +1029,26 @@ + + + + 3 + + + + + + + + + + + + + + + + @@ -1058,26 +1078,6 @@ - - - - 3 - - - - - - - - - - - - - - - - @@ -1113,6 +1113,20 @@ + + + + + + + + + + + RTC Batt Check + + + diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 4b12115fe..7aa27fad2 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -217,10 +217,7 @@ ModulePanel::ModulePanel(QWidget * parent, ModelData & model, ModuleData & modul // The protocols available on this board for (unsigned int i=0; iisAvailable((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("FrSky R9M Mini", (QVariant) i); - else - ui->protocol->addItem(ModuleData::protocolToString(i), i); + ui->protocol->addItem(ModuleData::protocolToString(i), i); if (i == module.protocol) ui->protocol->setCurrentIndex(ui->protocol->count()-1); } diff --git a/companion/src/tests/conversions.cpp b/companion/src/tests/conversions.cpp index bee7b9520..611c2a3f1 100644 --- a/companion/src/tests/conversions.cpp +++ b/companion/src/tests/conversions.cpp @@ -42,7 +42,7 @@ TEST(Conversions, ConversionX9DPFrom22) EXPECT_STREQ("Thr", model.inputNames[0]); EXPECT_STREQ("Tes", model.sensorData[0].label); 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); } @@ -77,7 +77,7 @@ TEST(Conversions, ConversionX9DPFrom23) EXPECT_STREQ("Rud", model1.inputNames[0]); EXPECT_STREQ("Tes", model1.sensorData[0].label); 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); const ModelData & model2 = radioData.models[1]; @@ -96,7 +96,7 @@ TEST(Conversions, ConversionX9DPFrom23) EXPECT_STREQ("Rud", model2.inputNames[0]); EXPECT_STREQ("Tes", model2.sensorData[0].label); 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); } @@ -130,7 +130,7 @@ TEST(Conversions, ConversionX7From22) EXPECT_STREQ("Tes", model.sensorData[0].label); 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(10, model.flightModeData[0].gvars[0]); @@ -178,7 +178,7 @@ TEST(Conversions, ConversionXLiteFrom22) EXPECT_STREQ("Tes", model.sensorData[0].label); 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(LS_FN_VPOS, model.logicalSw[0].func); @@ -284,7 +284,7 @@ TEST(Conversions, ConversionX10From22) EXPECT_STREQ("Rud", model.inputNames[0]); EXPECT_STREQ("Tes", model.sensorData[0].label); 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 } @@ -360,6 +360,6 @@ TEST(Conversions, ConversionX12SFrom22) EXPECT_STREQ("Rud", model.inputNames[0]); EXPECT_STREQ("Tes", model.sensorData[0].label); 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 } diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua index c4d71f1b9..a34621b77 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua @@ -91,7 +91,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT then selectDevice(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectDevice(-1) end diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua index e8d8be6db..50a8c7dde 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -455,15 +455,15 @@ local function runDevicePage(event) end end elseif edit then - if event == EVT_VIRTUAL_NEXT then + if event == EVT_VIRTUAL_INC then incrField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_DEC then incrField(-1) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky GaSuite.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky GaSuite.lua index df7fce8ce..8ef4def42 100755 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky GaSuite.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky GaSuite.lua @@ -332,15 +332,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end @@ -500,7 +500,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT_PAGE then selectPage(1) - elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + elseif event == EVT_VIRTUAL_PREV_PAGE then killEvents(event); selectPage(-1) end diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SBEC.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SBEC.lua index 1b82bc47f..73d2b88e2 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SBEC.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SBEC.lua @@ -221,15 +221,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SxR.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SxR.lua index 8f69264a0..bd1c77f1a 100755 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SxR.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/FrSky SxR.lua @@ -268,15 +268,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end @@ -348,7 +348,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT_PAGE then selectPage(1) - elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + elseif event == EVT_VIRTUAL_PREV_PAGE then killEvents(event); selectPage(-1) end diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua index f68c4db3d..70c125b69 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua @@ -90,7 +90,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT then selectDevice(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectDevice(-1) end diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua index 289df386b..8ccdbf285 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -452,13 +452,13 @@ local function runDevicePage(event) elseif edit then if event == EVT_VIRTUAL_NEXT or event == EVT_VIRTUAL_NEXT_REPT then 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky GaSuite.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky GaSuite.lua index df7fce8ce..8ef4def42 100755 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky GaSuite.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky GaSuite.lua @@ -332,15 +332,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end @@ -500,7 +500,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT_PAGE then selectPage(1) - elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + elseif event == EVT_VIRTUAL_PREV_PAGE then killEvents(event); selectPage(-1) end diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SBEC.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SBEC.lua index 1b82bc47f..73d2b88e2 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SBEC.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SBEC.lua @@ -221,15 +221,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SxR.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SxR.lua index 8f69264a0..bd1c77f1a 100755 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SxR.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/FrSky SxR.lua @@ -268,15 +268,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end @@ -348,7 +348,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT_PAGE then selectPage(1) - elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + elseif event == EVT_VIRTUAL_PREV_PAGE then killEvents(event); selectPage(-1) end diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua index f68c4db3d..70c125b69 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/crossfire.lua @@ -90,7 +90,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT then selectDevice(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectDevice(-1) end diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua index 6f733469a..58416af36 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -450,15 +450,15 @@ local function runDevicePage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky GaSuite.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky GaSuite.lua index df7fce8ce..8ef4def42 100755 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky GaSuite.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky GaSuite.lua @@ -332,15 +332,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end @@ -500,7 +500,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT_PAGE then selectPage(1) - elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + elseif event == EVT_VIRTUAL_PREV_PAGE then killEvents(event); selectPage(-1) end diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SBEC.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SBEC.lua index 1b82bc47f..73d2b88e2 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SBEC.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SBEC.lua @@ -221,15 +221,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SxR.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SxR.lua index 8f69264a0..bd1c77f1a 100755 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SxR.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/FrSky SxR.lua @@ -268,15 +268,15 @@ local function runFieldsPage(event) end end 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) - 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) end else if event == EVT_VIRTUAL_NEXT then selectField(1) - elseif event == EVT_VIRTUAL_PREVIOUS then + elseif event == EVT_VIRTUAL_PREV then selectField(-1) end end @@ -348,7 +348,7 @@ local function run(event) return 2 elseif event == EVT_VIRTUAL_NEXT_PAGE then selectPage(1) - elseif event == EVT_VIRTUAL_PREVIOUS_PAGE then + elseif event == EVT_VIRTUAL_PREV_PAGE then killEvents(event); selectPage(-1) end diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 4f98da7bd..a4bef6c77 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -343,17 +343,17 @@ enum TelemetryUnit { enum TelemetryScreenType { TELEMETRY_SCREEN_TYPE_NONE, TELEMETRY_SCREEN_TYPE_VALUES, - TELEMETRY_SCREEN_TYPE_GAUGES, -#if defined(LUA) + TELEMETRY_SCREEN_TYPE_BARS, TELEMETRY_SCREEN_TYPE_SCRIPT, +#if defined(LUA) TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_SCRIPT #else - TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_GAUGES + TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_BARS #endif }; #define MAX_TELEMETRY_SCREENS 4 #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_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_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_LAST MIXSRC_LAST_TELEM diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 4c07cdb9c..46950cf9d 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -690,7 +690,7 @@ PACK(struct TrainerData { swarnstate_t switchUnlockStates; \ swconfig_t switchConfig; \ 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 #elif defined(PCBSKY9X) #define EXTRA_GENERAL_FIELDS \ @@ -703,7 +703,7 @@ PACK(struct TrainerData { uint8_t sticksGain; \ uint8_t rotarySteps; \ 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 #define EXTRA_GENERAL_FIELDS #endif @@ -735,7 +735,8 @@ PACK(struct RadioData { NOBACKUP(int8_t txVoltageCalibration); uint8_t backlightMode:3; int8_t antennaMode:2; - int8_t spare1:3; + uint8_t disableRtcWarning:1; + int8_t spare1:2; NOBACKUP(TrainerData trainer); NOBACKUP(uint8_t view); // index of view in main screen NOBACKUP(BUZZER_FIELD); /* 2bits */ diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index 6a720068a..329a9c3a4 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -246,7 +246,6 @@ void readModelNotes(); #define IS_ROTARY_EVENT(evt) (EVT_KEY_MASK(evt) >= 0x0e) void repeatLastCursorMove(event_t 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 #define IS_ROTARY_LEFT(evt) (0) #define IS_ROTARY_RIGHT(evt) (0) @@ -255,7 +254,6 @@ void readModelNotes(); #define IS_ROTARY_EVENT(evt) (0) void repeatLastCursorMove(event_t event); #define REPEAT_LAST_CURSOR_MOVE() repeatLastCursorMove(event) - #define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() #endif // TODO enum diff --git a/radio/src/gui/128x64/model_display.cpp b/radio/src/gui/128x64/model_display.cpp index b9fe1b662..f138593e0 100644 --- a/radio/src/gui/128x64/model_display.cpp +++ b/radio/src/gui/128x64/model_display.cpp @@ -52,21 +52,44 @@ enum MenuModelDisplayItems { #endif #define DISPLAY_COL3 (17*FW+2) -#if defined(LUA) - #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) +inline uint8_t SCREEN_TYPE_COLUMNS(uint8_t screenIndex) { - 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 (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) { @@ -82,7 +105,6 @@ void onTelemetryScriptFileSelectionMenu(const char *result) } #endif - int skipHiddenLines(int noRows, const uint8_t * mstate_tab, int row) { for(int i=0; i0) { switch (menuHorizontalPosition) { case 0: diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index e25d8364c..fbfd8ed53 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -612,7 +612,7 @@ void menuModelSetup(event_t event) } int current = 0; - for (int i = 0; i < switchWarningsCount; i++) { + for (int i = 0; i < NUM_SWITCHES; i++) { if (SWITCH_WARNING_ALLOWED(i)) { 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) { @@ -1284,7 +1284,7 @@ void menuModelSetup(event_t event) if (isModuleR9MNonAccess(moduleIdx) || isModuleD16(moduleIdx)) { #if defined(PCBXLITE) if (EVT_KEY_MASK(event) == KEY_ENTER) { -#elif defined(PCBSKY9X) || defined(PCBAR9X) +#elif defined(NAVIGATION_9X) if (event == EVT_KEY_FIRST(KEY_ENTER)) { #else if (event == EVT_KEY_BREAK(KEY_ENTER)) { diff --git a/radio/src/gui/128x64/model_telemetry_sensor.cpp b/radio/src/gui/128x64/model_telemetry_sensor.cpp index f5870f230..d8a63079e 100644 --- a/radio/src/gui/128x64/model_telemetry_sensor.cpp +++ b/radio/src/gui/128x64/model_telemetry_sensor.cpp @@ -104,7 +104,7 @@ void menuModelSensor(event_t event) if (sensor->type == TELEM_TYPE_CUSTOM) { lcdDrawTextAlignedLeft(y, STR_ID); 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) { switch (menuHorizontalPosition) { case 0: diff --git a/radio/src/gui/128x64/radio_diagkeys.cpp b/radio/src/gui/128x64/radio_diagkeys.cpp index bd8668c82..a5840754a 100644 --- a/radio/src/gui/128x64/radio_diagkeys.cpp +++ b/radio/src/gui/128x64/radio_diagkeys.cpp @@ -64,7 +64,7 @@ void menuRadioDiagKeys(event_t event) #else if (i < NUM_SWITCHES) { 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 sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3)); drawSwitch(8*FW+4, y, sw, 0); diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index 6c85607dc..e3fd06bb3 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -643,7 +643,6 @@ void menuRadioSetup(event_t event) resumePulses(); waitKeysReleased(); } - MOVE_CURSOR_FROM_HERE(); break; } } diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index 7013ede4b..b4d7fbae2 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -280,7 +280,6 @@ void menuChannelsView(event_t event); #endif #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 POS_HORZ_INIT(posVert) ((COLATTR(posVert) & NAVIGATION_LINE_BY_LINE) ? -1 : 0) diff --git a/radio/src/gui/212x64/model_display.cpp b/radio/src/gui/212x64/model_display.cpp index 857f9a7de..0e1da16d5 100644 --- a/radio/src/gui/212x64/model_display.cpp +++ b/radio/src/gui/212x64/model_display.cpp @@ -51,21 +51,44 @@ enum MenuModelDisplayItems { #define DISPLAY_COL2 (16*FW) #define DISPLAY_COL3 (28*FW+2) -#if defined(LUA) - #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) -#else - #define SCREEN_TYPE_ROWS 0 - #define DISPLAY_LINE_ROWS(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (uint8_t)2) -#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) +inline uint8_t SCREEN_TYPE_COLUMNS(uint8_t screenIndex) +{ + if (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_SCRIPT) + return 1; + else + return 0; +} -#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) void onTelemetryScriptFileSelectionMenu(const char *result) { - int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition); + int screenIndex = DISPLAY_CURRENT_SCREEN(menuVerticalPosition); if (result == STR_UPDATE_LIST) { 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_LABEL4: { - uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k); + uint8_t screenIndex = DISPLAY_CURRENT_SCREEN(k); drawStringWithIndex(0*FW, y, STR_SCREEN, screenIndex+1); 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); @@ -151,9 +174,6 @@ void menuModelDisplay(event_t event) } } } - else if (attr) { - MOVE_CURSOR_FROM_HERE(); - } #endif break; } @@ -195,7 +215,7 @@ void menuModelDisplay(event_t event) if (IS_BARS_SCREEN(screenIndex)) { 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; LcdFlags lf = LEFT; 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); } } - else if (attr) { - MOVE_CURSOR_FROM_HERE(); - } if (attr && s_editMode>0) { switch (menuHorizontalPosition) { case 0: diff --git a/radio/src/gui/212x64/model_telemetry_sensor.cpp b/radio/src/gui/212x64/model_telemetry_sensor.cpp index 4321f87c3..27e6cd93c 100644 --- a/radio/src/gui/212x64/model_telemetry_sensor.cpp +++ b/radio/src/gui/212x64/model_telemetry_sensor.cpp @@ -114,7 +114,7 @@ void menuModelSensor(event_t event) if (sensor->type == TELEM_TYPE_CUSTOM) { lcdDrawTextAlignedLeft(y, STR_ID); 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) { switch (menuHorizontalPosition) { case 0: diff --git a/radio/src/gui/480x272/model_telemetry_sensor.cpp b/radio/src/gui/480x272/model_telemetry_sensor.cpp index 150d3e365..3c23b96af 100644 --- a/radio/src/gui/480x272/model_telemetry_sensor.cpp +++ b/radio/src/gui/480x272/model_telemetry_sensor.cpp @@ -115,7 +115,7 @@ bool menuModelSensor(event_t event) if (sensor->type == TELEM_TYPE_CUSTOM) { lcdDrawText(MENUS_MARGIN_LEFT, y, STR_ID); 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) { switch (menuHorizontalPosition) { case 0: diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 89a5aabff..a52af8488 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -54,6 +54,7 @@ enum MenuRadioHardwareItems { ITEM_RADIO_HARDWARE_SJ, // Gimbal switch right ITEM_RADIO_HARDWARE_BATTERY_CALIB, ITEM_RADIO_HARDWARE_RTC_BATTERY, + ITEM_RADIO_HARDWARE_RTC_CHECK, ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE, #if defined(BLUETOOTH) ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, @@ -123,6 +124,7 @@ bool menuRadioHardware(event_t event) 0, /* battery */ READONLY_ROW, /* RTC */ + 0, /* RTC check */ 0, /* max baudrate */ @@ -276,6 +278,14 @@ bool menuRadioHardware(event_t event) } break; #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: 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); diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 5ab7e110e..bc8806fb1 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -151,6 +151,7 @@ enum { #if defined(STM32) ITEM_RADIO_HARDWARE_RTC_BATTERY, + ITEM_RADIO_HARDWARE_RTC_CHECK, #endif #if defined(TX_CAPACITY_MEASUREMENT) @@ -257,7 +258,7 @@ void onHardwareAntennaSwitchConfirm(const char * result) #endif #if defined(STM32) - #define RTC_ROW READONLY_ROW, + #define RTC_ROW READONLY_ROW, 0, #else #define RTC_ROW #endif @@ -512,6 +513,10 @@ void menuRadioHardware(event_t event) lcdDrawTextAlignedLeft(y, STR_RTC_BATT); putsVolts(HW_SETTINGS_COLUMN2, y, getRTCBatteryVoltage(), PREC2|LEFT); 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 #if defined(TX_CAPACITY_MEASUREMENT) diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index 763fdcada..d15c1243c 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -408,8 +408,12 @@ void menuRadioSdManager(event_t _event) POPUP_MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE); if (information.productFamily == FIRMWARE_FAMILY_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)) - POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); + if (information.productFamily == FIRMWARE_FAMILY_RECEIVER || information.productFamily == FIRMWARE_FAMILY_SENSOR) { + 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 (information.productFamily == FIRMWARE_FAMILY_RECEIVER) POPUP_MENU_ADD_ITEM(STR_FLASH_RECEIVER_OTA); diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index a26d4eb15..a2f9b4090 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -606,6 +606,9 @@ bool isInternalModuleAvailable(int moduleType) bool isExternalModuleAvailable(int moduleType) { + if (moduleType == MODULE_TYPE_R9M_LITE_PRO_PXX1) + return false; + #if !defined(HARDWARE_EXTERNAL_MODULE_SIZE_SML) if (isModuleTypeR9MLite(moduleType) || moduleType == MODULE_TYPE_XJT_LITE_PXX2) return false; diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 9dec737d3..aa0bd28bb 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -58,10 +58,10 @@ #define FIND_FIELD_DESC 0x01 #define KEY_EVENTS(xxx, yyy) \ - { "EVT_"#xxx"_FIRST", EVT_KEY_FIRST(yyy) }, \ - { "EVT_"#xxx"_BREAK", EVT_KEY_BREAK(yyy) }, \ - { "EVT_"#xxx"_LONG", EVT_KEY_LONG(yyy) }, \ - { "EVT_"#xxx"_REPT", EVT_KEY_REPT(yyy) } + { "EVT_"#xxx"_FIRST", EVT_KEY_FIRST(yyy) }, \ + { "EVT_"#xxx"_BREAK", EVT_KEY_BREAK(yyy) }, \ + { "EVT_"#xxx"_LONG", EVT_KEY_LONG(yyy) }, \ + { "EVT_"#xxx"_REPT", EVT_KEY_REPT(yyy) } /*luadoc @function getVersion() @@ -1383,7 +1383,7 @@ static int luaChdir(lua_State * L) @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) -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 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 }, #endif -// Virtual Page Next/Previous -#if defined(KEYS_GPIO_REG_PGUP) && defined(KEYS_GPIO_REG_PGDN) - { "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_FIRST(KEY_PGUP) }, - { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_FIRST(KEY_PGDN) }, -#elif defined(KEYS_GPIO_REG_PGDN) - { "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_LONG(KEY_PGDN) }, - { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PGDN) }, -#elif defined(KEYS_GPIO_REG_UP) && defined(KEYS_GPIO_REG_DOWN) - { "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_LONG(KEY_UP) }, - { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_LONG(KEY_DOWN) }, -#elif defined(KEYS_GPIO_REG_PAGE) - { "EVT_VIRTUAL_PREVIOUS_PAGE", EVT_KEY_LONG(KEY_PAGE) }, - { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGE) }, +// Virtual events +#if defined(ROTARY_ENCODER_NAVIGATION) + { "EVT_VIRTUAL_PREV", EVT_ROTARY_LEFT }, + { "EVT_VIRTUAL_NEXT", EVT_ROTARY_RIGHT }, + { "EVT_VIRTUAL_DEC", EVT_ROTARY_LEFT }, + { "EVT_VIRTUAL_INC", EVT_ROTARY_RIGHT }, +#elif defined(PCBX9D) || defined(PCBX9DP) // key reverted between field nav and value change + { "EVT_VIRTUAL_PREV", EVT_KEY_FIRST(KEY_PLUS) }, + { "EVT_VIRTUAL_PREV_REPT", EVT_KEY_REPT(KEY_PLUS) }, + { "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_MINUS) }, + { "EVT_VIRTUAL_NEXT_REPT", EVT_KEY_REPT(KEY_MINUS) }, + { "EVT_VIRTUAL_DEC", EVT_KEY_FIRST(KEY_MINUS) }, + { "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 -// Virtual exit - { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) }, - -// Virtual enter -#if defined(KEYS_GPIO_REG_ENTER) +#if defined(NAVIGATION_9X) || defined(NAVIGATION_XLITE) + { "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_UP) }, + { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_UP) }, + { "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_DOWN) }, + { "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_DOWN) }, { "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) }, { "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) }, -#endif - -// Virtual menu -#if defined(KEYS_GPIO_REG_MENU) + { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) }, +#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D) + { "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_PAGE) }, + { "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGE) }, { "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MENU) }, { "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MENU) }, -#elif defined(KEYS_GPIO_REG_SHIFT) - { "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_SHIFT) }, - { "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_SHIFT) }, + { "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) }, + { "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) }, + { "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 - -// Virtual generic plus-next-right minus-previous-left -#if defined(ROTARY_ENCODER_NAVIGATION) - { "EVT_VIRTUAL_NEXT", EVT_ROTARY_RIGHT}, - { "EVT_VIRTUAL_PREVIOUS", EVT_ROTARY_LEFT }, -#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) }, + { "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MODEL) }, + { "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MODEL) }, + { "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) }, + { "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) }, + { "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) }, #endif #if defined(KEYS_GPIO_REG_EXIT) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 2955e6849..7e3bc3edf 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -869,10 +869,13 @@ static void checkRTCBattery() void checkFailsafe() { for (int i=0; i> (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++) { newModel.frsky.screens[i].bars[j].source = convertSource_217_to_218(oldModel.frsky.screens[i].bars[j].source); } diff --git a/radio/src/storage/conversions/conversions_218_219.cpp b/radio/src/storage/conversions/conversions_218_219.cpp index bba32aef0..793d9931c 100644 --- a/radio/src/storage/conversions/conversions_218_219.cpp +++ b/radio/src/storage/conversions/conversions_218_219.cpp @@ -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++) { newModel.screens[i].bars[j].source = convertSource_218_to_219(oldModel.frsky.screens[i].bars[j].source); } diff --git a/radio/src/storage/conversions/datastructs_218.h b/radio/src/storage/conversions/datastructs_218.h index d331b943e..578e7c1bf 100644 --- a/radio/src/storage/conversions/datastructs_218.h +++ b/radio/src/storage/conversions/datastructs_218.h @@ -504,7 +504,7 @@ PACK(struct ModelData_v218 { swarnstate218_t switchUnlockStates; \ swconfig218_t switchConfig; \ 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 #elif defined(PCBSKY9X) #define EXTRA_GENERAL_FIELDS_218 \ @@ -517,7 +517,7 @@ PACK(struct ModelData_v218 { uint8_t sticksGain; \ uint8_t rotarySteps; \ 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 #define EXTRA_GENERAL_FIELDS_218 EXTRA_GENERAL_FIELDS_GENERAL_218 #endif diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index b9b9f42d8..5ca32a594 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -33,7 +33,6 @@ #define SWITCH_WARNING_LIST_Y 4*FH+4 #endif - enum LogicalSwitchContextState { SWITCH_START, SWITCH_DELAY, diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 81f4a21c2..14015b25e 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -40,6 +40,7 @@ if (PCB STREQUAL X10) set(FONTS_TARGET x10_fonts) set(LCD_DRIVER lcd_driver.cpp) set(LUA_EXPORT lua_export_x10) + set(INTERNAL_GPS OFF) if (PCBREV STREQUAL EXPRESS) set(FLAVOUR x10express) option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF) diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index fb12142a0..3d891cb8a 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -592,7 +592,7 @@ uint8_t gpsGetByte(uint8_t * byte); extern uint8_t gpsTraceEnabled; #endif void gpsSendByte(uint8_t byte); -#if defined(PCBX12S) +#if defined(INTERNAL_GPS) #define PILOTPOS_MIN_HDOP 500 #endif diff --git a/radio/src/targets/horus/x12s_adc_driver.cpp b/radio/src/targets/horus/x12s_adc_driver.cpp index 932f752a0..2833c4620 100644 --- a/radio/src/targets/horus/x12s_adc_driver.cpp +++ b/radio/src/targets/horus/x12s_adc_driver.cpp @@ -139,7 +139,7 @@ void adcInit() uint16_t getRTCBatteryVoltage() { - return (rtcBatteryVoltage * ADC_VREF_PREC2) / 2048; + return (rtcBatteryVoltage * 2 * ADC_VREF_PREC2) / 2048; } const uint16_t adcCommands[MOUSE1+2] = diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index b5c242b00..5f0ec818e 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -498,14 +498,19 @@ enum Analogs { #define NUM_SLIDERS 4 #define STORAGE_NUM_POTS 4 #define STORAGE_NUM_SLIDERS 4 -#else +#elif defined(PCBX9DP) #define NUM_POTS 3 #define NUM_SLIDERS 2 #define STORAGE_NUM_POTS 3 #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 -#define NUM_XPOTS NUM_POTS +#define NUM_XPOTS STORAGE_NUM_POTS #define NUM_TRIMS 4 #define NUM_MOUSE_ANALOGS 0 #define STORAGE_NUM_MOUSE_ANALOGS 0 diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 89fee14d2..4a0bb49d7 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -531,8 +531,8 @@ #define HARDWARE_SWITCH_J #define SWITCHES_GPIO_REG_I GPIOC->IDR #define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13 - #define SWITCHES_GPIO_REG_J GPIOC->IDR - #define SWITCHES_GPIO_PIN_J GPIO_Pin_10 // PC.10 + #define SWITCHES_GPIO_REG_J GPIOD->IDR + #define SWITCHES_GPIO_PIN_J GPIO_Pin_10 // PD.10 #endif #if defined(PCBX9E) @@ -642,8 +642,8 @@ #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_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_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15) + #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_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) #elif defined(PCBX9LITES) #define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE) diff --git a/radio/src/targets/taranis/keys_driver.cpp b/radio/src/targets/taranis/keys_driver.cpp index 380c7d9cc..acfcb822e 100644 --- a/radio/src/targets/taranis/keys_driver.cpp +++ b/radio/src/targets/taranis/keys_driver.cpp @@ -199,6 +199,8 @@ uint32_t switchState(uint8_t index) ADD_3POS_CASE(D, 3); ADD_2POS_CASE(F); ADD_2POS_CASE(H); + ADD_2POS_CASE(I); + ADD_2POS_CASE(J); #else ADD_3POS_CASE(D, 3); ADD_3POS_CASE(E, 4); diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 5aca074c4..55758d390 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -574,6 +574,7 @@ const char STR_MENU_DISPLAY[] = TR_MENU_DISPLAY; const char STR_MENU_OTHER[] = TR_MENU_OTHER; const char STR_MENU_INVERT[] = TR_MENU_INVERT; 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_MODULE_RANGE[] = TR_MODULE_RANGE; const char STR_RECEIVER_OPTIONS[] = TR_RECEIVER_OPTIONS; diff --git a/radio/src/translations.h b/radio/src/translations.h index 8720fa6a2..814d2669c 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -853,6 +853,7 @@ extern const char STR_MENU_DISPLAY[]; extern const char STR_MENU_OTHER[]; extern const char STR_MENU_INVERT[]; extern const char STR_JITTER_FILTER[]; +extern const char STR_RTC_CHECK[]; #if MENUS_LOCK == 1 extern const char STR_UNLOCKED[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 209734f1e..99ca3cb0d 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1147,6 +1147,7 @@ #define TR_MENU_OTHER "Ostatní" #define TR_MENU_INVERT "Invertovat" #define TR_JITTER_FILTER "ADC Filtr" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 2d30ea349..15a8773f9 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1152,6 +1152,7 @@ #define TR_MENU_OTHER "Weitere" #define TR_MENU_INVERT "Invertieren" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") // ---------------------------------------------------------------- #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index a65730a76..1187ff342 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1151,6 +1151,7 @@ #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" #define TR_JITTER_FILTER "ADC filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index ebf714c91..acd251727 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1172,6 +1172,7 @@ #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 5c23a8fd4..626dde6c7 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1160,6 +1160,7 @@ #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index efde0de55..c1347eca4 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -455,10 +455,10 @@ #endif #define TR_PROTO TR(INDENT "Proto.", INDENT "Protocole") #define TR_PPMFRAME INDENT "Trame PPM" -#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate") -#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ") +#define TR_REFRESHRATE INDENT "Période" +#define STR_WARN_BATTVOLTAGE TR(INDENT "Signal est VBAT: ", INDENT "ATTENTION: signal est à VBAT: ") #define TR_MS "ms" -#define TR_FREQUENCY INDENT "Frequency" +#define TR_FREQUENCY INDENT "Fréquence" #define TR_SWITCH TR("Inter", "Interrupteur") #define TR_TRIMS "Trims" #define TR_FADEIN "Fondu ON" @@ -478,12 +478,12 @@ #define TR_SUBTYPE INDENT "Sous-type" #define TR_NOFREEEXPO "Max expos atteint!" #define TR_NOFREEMIXER "Max mixages atteint!" -#define TR_SOURCE "Source" +#define TR_SOURCE "Source" #define TR_WEIGHT "Ratio" #define TR_EXPO TR("Expo", "Exponentiel") #define TR_SIDE "Coté" #define TR_DIFFERENTIAL "Différentiel" -#define TR_OFFSET "Décalage" +#define TR_OFFSET "Décalage" #define TR_TRIM "Trim" #define TR_DREX "DRex" #define DREX_CHBOX_OFFSET 30 @@ -491,8 +491,8 @@ #define TR_FLMODE TR("Phase", "Phases") #define TR_MIXWARNING "Alerte" #define TR_OFF "OFF" -#define TR_ANTENNA "Antenna" -#define TR_NO_INFORMATION TR("No info", "No information") +#define TR_ANTENNA "Antenne" +#define TR_NO_INFORMATION TR("Pas d'info", "Pas d'information") #define TR_MULTPX "Opération" #define TR_DELAYDOWN "Retard bas" #define TR_DELAYUP "Retard haut" @@ -516,7 +516,7 @@ #define TR_HAPTIC_LABEL "Vibreur" #define TR_HAPTICSTRENGTH INDENT "Force" #define TR_GYRO_LABEL "Gyro" -#define TR_GYRO_OFFSET "Offset" +#define TR_GYRO_OFFSET "Décalage" #define TR_GYRO_MAX "Max" #define TR_CONTRAST "Contraste" #define TR_ALARMS_LABEL "Alarmes" @@ -540,8 +540,8 @@ #define TR_BLOFFBRIGHTNESS INDENT "Luminosité OFF" #define TR_BLCOLOR INDENT "Couleur" #define TR_SPLASHSCREEN "Logo d'accueil" -#define TR_PWR_ON_DELAY "Pwr On delay" -#define TR_PWR_OFF_DELAY "Pwr Off delay" +#define TR_PWR_ON_DELAY "Délai btn ON" +#define TR_PWR_OFF_DELAY "Délai btn OFF" #define TR_THROTTLEWARNING TR(INDENT "Alerte gaz", INDENT "Alerte gaz") #define TR_SWITCHWARNING TR(INDENT "Alerte int", INDENT "Pos. interrupteurs") #define TR_POTWARNINGSTATE TR(INDENT "Pot&Slid.", INDENT "Pots & sliders") @@ -579,11 +579,11 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER "NO DATA" -#define TR_US "us" +#define TR_US "us" #define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" - #define TR_TMIXMAXMS "Tmix max" - #define TR_FREE_STACK "Free stack" +#define TR_TMIXMAXMS "Tmix max" +#define TR_FREE_STACK "Free stack" #define TR_MENUTORESET TR_ENTER" pour reset" #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_TELEMETRY "Télémétrie" #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_MULTI_FIXEDID TR("FixedID", "Fixed ID") +#define TR_RFPOWER TR(INDENT "Puiss. RF", INDENT "Puissance RF") +#define TR_MULTI_FIXEDID "ID fixe" #define TR_MULTI_OPTION TR(INDENT "Option", INDENT "Option perso") #define TR_MULTI_AUTOBIND TR(INDENT "Bind auto", INDENT "Bind automatique") #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_SDCARD_ERROR "Erreur carte SD" #define TR_NO_SDCARD "Carte SD indisponible" -#define TR_WAITING_FOR_RX "Waiting for RX..." -#define TR_WAITING_FOR_TX "Waiting for TX..." -#define TR_NO_TOOLS "No tools available" +#define TR_WAITING_FOR_RX "Attente du RX..." +#define TR_WAITING_FOR_TX "Attente du TX..." +#define TR_NO_TOOLS "Pas d'outils dispo" #define TR_NORMAL "Normal" -#define TR_NOT_INVERTED "Not inv" -#define TR_NOT_CONNECTED "!Connected" -#define TR_CONNECTED "Connected" +#define TR_NOT_INVERTED "Non inv" +#define TR_NOT_CONNECTED "!Connecté" +#define TR_CONNECTED "Connecté" #define TR_FLEX_915 "Flex 915MHz" #define TR_FLEX_868 "Flex 868MHz" -#define TR_16CH_WITHOUT_TELEMETRY TR("16CH without telem.", "16CH without telemetry") -#define TR_16CH_WITH_TELEMETRY TR("16CH with telem.", "16CH with telemetry") -#define TR_8CH_WITH_TELEMETRY TR("8CH with telem.", "8CH with telemetry") -#define TR_EXT_ANTENNA "Ext. antenna" +#define TR_16CH_WITHOUT_TELEMETRY TR("16CH sans télém.", "16CH sans télémétrie") +#define TR_16CH_WITH_TELEMETRY TR("16CH avec télém.", "16CH avec télémétrie") +#define TR_8CH_WITH_TELEMETRY TR("8CH avec télém.", "8CH avec télémétrie") +#define TR_EXT_ANTENNA "Antenne externe" #define TR_PIN "Pin" -#define TR_UPDATE_RX_OPTIONS "Update RX options?" -#define TR_UPDATE_TX_OPTIONS "Update TX options?" -#define TR_MODULES_RX_VERSION "Modules / RX version" -#define TR_MENU_MODULES_RX_VERSION "MODULES / RX VERSION" -#define TR_MENU_FIRM_OPTIONS "FIRMWARE OPTIONS" +#define TR_UPDATE_RX_OPTIONS "Sauver options RX?" +#define TR_UPDATE_TX_OPTIONS "Sauver options TX?" +#define TR_MODULES_RX_VERSION "Versions modules / RX" +#define TR_MENU_MODULES_RX_VERSION "VERSIONS MODULES / RX " +#define TR_MENU_FIRM_OPTIONS "OPTIONS FIRMWARE" #define TR_GYRO "Gyro" -#define TR_STICKS_POTS_SLIDERS "Sticks/Pots/Sliders" -#define TR_PWM_STICKS_POTS_SLIDERS "PWM Sticks/Pots/Sliders" -#define TR_RF_PROTOCOL "RF Protocol" -#define TR_MODULE_OPTIONS "Module options" -#define TR_POWER "Power" -#define TR_NO_TX_OPTIONS "No TX options" -#define TR_RTC_BATT "RTC Batt" -#define TR_POWER_METER_EXT "Power Meter (EXT)" -#define TR_POWER_METER_INT "Power Meter (INT)" -#define TR_SPECTRUM_ANALYSER_EXT "Spectrum (EXT)" -#define TR_SPECTRUM_ANALYSER_INT "Spectrum (INT)" +#define TR_STICKS_POTS_SLIDERS "Manches/Pots/leviers" +#define TR_PWM_STICKS_POTS_SLIDERS "Manches PWM/Pots/leviers" +#define TR_RF_PROTOCOL "Protocole RF" +#define TR_MODULE_OPTIONS "Options module" +#define TR_POWER "Puissance" +#define TR_NO_TX_OPTIONS "Pas d'options TX" +#define TR_RTC_BATT "Pile RTC" +#define TR_POWER_METER_EXT "Puissancemètre (EXT)" +#define TR_POWER_METER_INT "Puissancemètre (INT)" +#define TR_SPECTRUM_ANALYSER_EXT TR("Spectre (EXT)", "Analyseur spectre (EXT)") +#define TR_SPECTRUM_ANALYSER_INT TR("Spectre (INT)", "Analyseur spectre (INT)") #define TR_SDCARD_FULL "Carte SD pleine" #define TR_INCOMPATIBLE "Incompatible" #define TR_WARNING "ALERTE" @@ -748,9 +748,9 @@ #define TR_NIGHTLY_WARNING TR("NIGHTLY", "NIGHTLY BUILD") #define TR_NIGHTLY_NOTSAFE "Version de test uniq." #define TR_WRONG_SDCARDVERSION "Version requise: " -#define TR_WARN_RTC_BATTERY_LOW "RTC Battery low" -#define TR_WARN_MULTI_LOWPOWER "Low power mode" -#define TR_BATTERY "BATTERY" +#define TR_WARN_RTC_BATTERY_LOW "Batterie RTC faible" +#define TR_WARN_MULTI_LOWPOWER "Mode basse puis." +#define TR_BATTERY "BATTERIE" #define TR_WRONG_PCBREV "PCB incorrect détecté" #define TR_EMERGENCY_MODE "MODE SECOURS" #define TR_PCBREV_ERROR "Erreur PCB" @@ -799,11 +799,11 @@ #define TR_TIME "Heure" #define TR_MAXBAUDRATE "Max bauds" #define TR_BLUETOOTH "Bluetooth" -#define TR_BLUETOOTH_DISC "Discover" +#define TR_BLUETOOTH_DISC "Découvrir" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" -#define TR_BLUETOOTH_PIN_CODE "PIN code" +#define TR_BLUETOOTH_DIST_ADDR INDENT "Addr dist." +#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Addr locale" +#define TR_BLUETOOTH_PIN_CODE "Code PIN" #define TR_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) @@ -831,9 +831,9 @@ #define TR_VIEW_TEXT "Voir texte" #define TR_FLASH_BOOTLOADER "Flasher BootLoader" #define TR_FLASH_EXTERNAL_DEVICE TR("Flasher S.Port", "Flasher S.Port externe") -#define TR_FLASH_RECEIVER_OTA "Flash receiver OTA" -#define TR_FLASH_BLUETOOTH_MODULE TR("Flash BT module", "Flash Bluetooth module") -#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flash pwr mngt unit" +#define TR_FLASH_RECEIVER_OTA "Flasher RX OTA" +#define TR_FLASH_BLUETOOTH_MODULE TR("Flash module BT", "Flash module Bluetooth") +#define TR_FLASH_POWER_MANAGEMENT_UNIT "Flasher pwr mngt unit" #define TR_CURRENT_VERSION "Version courante :" #define TR_FLASH_INTERNAL_MODULE TR("Flasher module int.", "Flasher module interne") #define TR_FLASH_INTERNAL_MULTI TR("Flash Int. Multi", "Flash Internal Multi") @@ -844,16 +844,16 @@ #define TR_WRITING TR("\14Ecriture...", "\032Ecriture...") #define TR_CONFIRM_FORMAT "Confirmer Formatage?" #define TR_INTERNALRF "HF interne" -#define TR_INTERNAL_MODULE TR("Int. module","Internal module") -#define TR_EXTERNAL_MODULE TR("Ext. module","External module") -#define TR_OPENTX_UPGRADE_REQUIRED "OpenTX upgrade required" -#define TR_TELEMETRY_DISABLED "Telem. disabled" -#define TR_MORE_OPTIONS_AVAILABLE "More options available" -#define TR_NO_MODULE_INFORMATION "No module information" +#define TR_INTERNAL_MODULE TR("Module int.","Module interne") +#define TR_EXTERNAL_MODULE TR("Module ext.","Module externe") +#define TR_OPENTX_UPGRADE_REQUIRED "Màj OpenTX nécessaire" +#define TR_TELEMETRY_DISABLED "Télém. désactivée" +#define TR_MORE_OPTIONS_AVAILABLE "Autres options disponibles" +#define TR_NO_MODULE_INFORMATION "Pas d'info module" #define TR_EXTERNALRF "HF externe" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Type 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_PINMAPSET "PINMAP" #define TR_HOLD "Hold" @@ -907,7 +907,7 @@ #define TR_PXX2_SELECT_RX "Sélect RX..." #define TR_PXX2_DEFAULT "" #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_WAITING "Attente..." #define TR_RECEIVER_DELETE "Suppr récept.?" @@ -916,8 +916,8 @@ #define TR_BIND "Bind" #define TR_REGISTER TR("Enr", "Enregistr.") #define TR_MODULE_RANGE BUTTON(TR("Prt", "Port.")) -#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS") -#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete")) +#define TR_RECEIVER_OPTIONS TR("OPTIONS REC.", "OPTIONS RECEPTEUR") +#define TR_DEL_BUTTON BUTTON(TR("Eff", "Effacer")) #define TR_RESET_BTN BUTTON("RAZ") #define TR_DEBUG "Debug" #define TR_KEYS_BTN BUTTON(TR("Btns","Inters")) @@ -939,18 +939,18 @@ #define TR_ANTENNACONFIRM1 "Vraiment changer?" #if defined(PCBX12S) #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 -#define LEN_ANTENNA_MODES "\011" -#define TR_ANTENNA_MODES "Internal\0""Ask\0 ""Per model""External" +#define LEN_ANTENNA_MODES "\012" +#define TR_ANTENNA_MODES "Interne\0 ""Demander\0 ""Par modèle""Externe\0 " #endif -#define TR_USE_INTERNAL_ANTENNA TR("Use int. antenna", "Use internal antenna") -#define TR_USE_EXTERNAL_ANTENNA TR("Use ext. antenna", "Use external antenna") +#define TR_USE_INTERNAL_ANTENNA TR("Util antenne int", "Utiliser antenne interne") +#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_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Nécessite firm." -#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Requires FCC" -#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Requires EU" -#define TR_MODULE_PROTOCOL_WARN_LINE2 "R9M non certifié" +#define TR_MODULE_PROTOCOL_FLEX_WARN_LINE1 "Nécessite firm." +#define TR_MODULE_PROTOCOL_FCC_WARN_LINE1 "Nécessite FCC" +#define TR_MODULE_PROTOCOL_EU_WARN_LINE1 "Nécessite EU" +#define TR_MODULE_PROTOCOL_WARN_LINE2 "R9M non certifié" #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_RSSIALARM_WARN TR("RSSI", "TELEMETRIE") @@ -981,7 +981,7 @@ #define TR_PREFLIGHT "Vérifications avant vol" #define TR_CHECKLIST TR(INDENT "Notes", INDENT "Afficher notes") #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_INPUTS "Entrées" #define TR_OUTPUTS "Sorties" @@ -1175,6 +1175,7 @@ #define TR_MENU_OTHER "Autres" #define TR_MENU_INVERT "Inverser" #define TR_JITTER_FILTER "Filtre ADC" +#define TR_RTC_CHECK TR("Vérif. RTC", "Vérif. pile RTC") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 7d05b7b80..f6935d970 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1168,6 +1168,7 @@ #define TR_MENU_OTHER "Altro" #define TR_MENU_INVERT "Inverti" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 61b75ce88..90473d9ac 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1162,6 +1162,7 @@ TR_GYR_VSRCRAW #define TR_MENU_OTHER "Verdere" #define TR_MENU_INVERT "Inverteer" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 141fa1be2..163a25d42 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1168,6 +1168,7 @@ #define TR_MENU_OTHER "Inny " #define TR_MENU_INVERT "Odwróć" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 6bb061aed..e0087fa4c 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1157,6 +1157,7 @@ #define TR_MENU_OTHER "Other" #define TR_MENU_INVERT "Invert" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index da55aff7a..043a10eba 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1168,6 +1168,7 @@ #define TR_MENU_OTHER "Annat" #define TR_MENU_INVERT "Invertera" #define TR_JITTER_FILTER "ADC Filter" +#define TR_RTC_CHECK TR("Check RTC", "Check RTC voltage") #define ZSTR_RSSI "RSSI" #define ZSTR_R9PW "R9PW" diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 63e0f1295..5943fcda3 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -38,12 +38,9 @@ #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_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) #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) #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" @@ -56,12 +53,9 @@ #elif defined(PCBX9LITE) #define TR_POTS_VSRCRAW "\310S1\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) #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) #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" diff --git a/tools/commit-tests.sh b/tools/commit-tests.sh index 6e4719955..61b1bc5c3 100755 --- a/tools/commit-tests.sh +++ b/tools/commit-tests.sh @@ -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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi if [[ " X9LITE ALL " =~ " ${FLAVOR} " ]] ; then @@ -91,7 +91,7 @@ if [[ " X9LITE ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X9LITE -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi if [[ " X9LITES ALL " =~ " ${FLAVOR} " ]] ; then @@ -109,7 +109,7 @@ if [[ " X7 ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=X7 -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi if [[ " XLITE ALL " =~ " ${FLAVOR} " ]] ; then @@ -118,7 +118,7 @@ if [[ " XLITE ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=XLITE -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi if [[ " XLITES ALL " =~ " ${FLAVOR} " ]] ; then @@ -127,7 +127,7 @@ if [[ " XLITES ALL " =~ " ${FLAVOR} " ]] ; then cmake ${COMMON_OPTIONS} -DPCB=XLITES -DHELI=YES -DGVARS=YES ${SRCDIR} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi 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} make -j${CORES} ${FIRMARE_TARGET} make -j${CORES} libsimulator - make -j${CORES} tests + make -j${CORES} tests-radio fi if [[ " DEFAULT ALL " =~ " ${FLAVOR} " ]] ; then @@ -198,4 +198,5 @@ if [[ " DEFAULT ALL " =~ " ${FLAVOR} " ]] ; then rm -rf * cmake ${COMMON_OPTIONS} ${SRCDIR} make -j${CORES} + make -j${CORES} tests fi