diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index cd233d02131..568bc490fc6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -78,6 +78,13 @@ jobs:
with:
node-version-file: '.nvmrc'
+ - name: Install macos dependencies
+ run: |
+ sudo -H pip install setuptools packaging
+ sudo npm install -g yarn@1.22.0 node-gyp@10 macos-alias
+ yarn --network-timeout 1000000
+ if: ${{ matrix.name == 'macOs' }}
+
- name: Install Java JDK 8
uses: actions/setup-java@v3
if: ${{ matrix.name == 'Android' }}
diff --git a/locales/ca/messages.json b/locales/ca/messages.json
index 85b130dee20..26f1e0fe5f5 100644
--- a/locales/ca/messages.json
+++ b/locales/ca/messages.json
@@ -741,10 +741,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Restableix l'eix Z, offset: $1 graus"
},
- "initialSetupHeading": {
- "message": "Títol:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Tipus de Mixer"
},
@@ -791,9 +787,16 @@
"message": "Informació del sistema"
},
"initialSetupInfoHeadHelp": {
- "message": "Mostra les banderes FC per al desarmament, la informació de la bateria, el nivell RSSI i el maquinari dels sensors",
+ "message": "Mostra les banderes FC per al desarmament, la informació de la bateria, el nivell RSSI.",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "Informació de sensors"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "Mostra el maquinari dels sensors",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Voltatge de bateria:"
},
@@ -818,11 +821,40 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "No inclòs a la compil-lació",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "No detectat",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 dBm"
+ },
"initialSetupSensorHardware": {
"message": "Sensors:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "Gyro:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "Accel:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Mag:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Baro:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Sonar:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Radar:"
},
"initialSetupArmingDisableFlags": {
"message": "Flags deshabilitant l'armat:"
@@ -2706,10 +2738,6 @@
"message": "Latitud/Longitud actuals:",
"description": "Show GPS position - Latitude / Longitude"
},
- "gpsHeading": {
- "message": "Encapçalament Mag / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
- },
"gpsSpeed": {
"message": "Velocitat:"
},
@@ -6158,6 +6186,10 @@
"message": "Altitud",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Qualitat enllaç",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Armant des-habilitat",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/da/messages.json b/locales/da/messages.json
index f538283640b..cd90ed7bdb1 100644
--- a/locales/da/messages.json
+++ b/locales/da/messages.json
@@ -733,10 +733,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Nulstil Z-akse, forskydn.: $1 gr"
},
- "initialSetupHeading": {
- "message": "Kurs:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Mixertype"
},
@@ -783,9 +779,16 @@
"message": "System info"
},
"initialSetupInfoHeadHelp": {
- "message": "Viser FC flag som betyder deaktivering. Også batteri information, RSSI niveau og Sensor hardware",
+ "message": "Viser FC flag som betyder deaktivering. Også batteri information og RSSI niveau",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "Sensor enheder"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "Viser de sensor enheder som er konfigureret",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Batteri spænding:"
},
@@ -810,11 +813,40 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "Ikke inkluderet i firmware build",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "Ikke fundet",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 dBm"
+ },
"initialSetupSensorHardware": {
"message": "Sensorer:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "Gyroskop:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "Accel:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Magnetometer / Kompas:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Barometer:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Sonar:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Radar:"
},
"initialSetupArmingDisableFlags": {
"message": "Deaktiverings flag:"
@@ -2698,10 +2730,6 @@
"message": "Nuværende breddegrad / længdegrad:",
"description": "Show GPS position - Latitude / Longitude"
},
- "gpsHeading": {
- "message": "Kompas / GPS kurs:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
- },
"gpsSpeed": {
"message": "Hastighed:"
},
@@ -4684,7 +4712,7 @@
"message": "Firmware opgradering kræves. Batteri/Amperage/Spænding konfigurationer ved hjælp af API < 1.33.0 (Betaflight release <= 3.17) understøttes ikke."
},
"powerBatteryVoltageMeterSource": {
- "message": "Kilde for spændingsmåling"
+ "message": "Sensor ved måling af spænding"
},
"powerBatteryVoltageMeterTypeNone": {
"message": "Ingen"
@@ -4696,7 +4724,7 @@
"message": "ESC sensor"
},
"powerBatteryCurrentMeterSource": {
- "message": "Kilde for strømforbrug måling"
+ "message": "Sensor ved måling af strømforbrug"
},
"powerBatteryCurrentMeterTypeNone": {
"message": "Ingen"
@@ -5477,7 +5505,7 @@
"description": "One of the elements of the OSD"
},
"osdDescElementDebug": {
- "message": "Logger variabler (for debug)"
+ "message": "Brugerstyret logning til debug"
},
"osdTextElementPIDRoll": {
"message": "PID krængror",
@@ -6150,6 +6178,10 @@
"message": "Højde (m el. fod)",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Link kvalitet",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Aktivering slået fra",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/de/messages.json b/locales/de/messages.json
index b13b6d89369..f1320ab5de0 100644
--- a/locales/de/messages.json
+++ b/locales/de/messages.json
@@ -736,10 +736,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Z Achse zurücksetzen, Abweichung: $1 Grad"
},
- "initialSetupHeading": {
- "message": "Richtung:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Mixer Typ"
},
@@ -785,10 +781,6 @@
"initialSetupInfoHead": {
"message": "Systeminfo"
},
- "initialSetupInfoHeadHelp": {
- "message": "FC-Flags für Disarming, Akku-Information, RSSI-Level und Sensor-Hardware anzeigen",
- "description": "Message that pops up to describe the System info section"
- },
"initialSetupBattery": {
"message": "Akku Spannung"
},
@@ -816,9 +808,6 @@
"initialSetupSensorHardware": {
"message": "Sensoren:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "Arming deaktiviert aufgrund:"
},
diff --git a/locales/en/messages.json b/locales/en/messages.json
index 040ebfa2e45..f39e06b2276 100755
--- a/locales/en/messages.json
+++ b/locales/en/messages.json
@@ -815,8 +815,8 @@
"message": "Reset Z axis, offset: $1 deg"
},
"initialSetupHeading": {
- "message": "Heading:",
- "description": "Heading shown on Setup tab"
+ "message": "Yaw:",
+ "description": "Heading [yaw] attitude value shown on Setup tab"
},
"initialSetupMixerHead": {
"message": "Mixer Type"
@@ -898,6 +898,14 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "Not included in build",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "Not detected",
+ "description": "Message that pops up when hardware are not detected"
+ },
"initialSetupRSSIValue": {
"message": "$1 dBm"
},
@@ -908,7 +916,7 @@
"message": "Gyro:"
},
"initialSetupSensorAcc": {
- "message": "Acc:"
+ "message": "Accel:"
},
"initialSetupSensorMag": {
"message": "Mag:"
@@ -2816,8 +2824,8 @@
"description": "Show GPS position - Latitude / Longitude"
},
"gpsHeading": {
- "message": "Heading Mag / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
+ "message": "Heading IMU / GPS:",
+ "description": "Show IMU / GPS heading - Attitude / GPS course over ground"
},
"gpsSpeed": {
"message": "Speed:"
@@ -6269,6 +6277,10 @@
"message": "Altitude",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Link Quality",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Arming disabled",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/es/messages.json b/locales/es/messages.json
index db446561469..1e9fed61939 100644
--- a/locales/es/messages.json
+++ b/locales/es/messages.json
@@ -734,8 +734,8 @@
"message": "Reiniciar eje Z, desplazamiento: $1 grad"
},
"initialSetupHeading": {
- "message": "Rumbo:",
- "description": "Heading shown on Setup tab"
+ "message": "Yaw:",
+ "description": "Heading [yaw] attitude value shown on Setup tab"
},
"initialSetupMixerHead": {
"message": "Tipo Mezclador"
@@ -783,9 +783,16 @@
"message": "Información del sistema"
},
"initialSetupInfoHeadHelp": {
- "message": "Muestra motivos de desarme del FC, información de batería, nivel RSSI y sensores de hardware",
+ "message": "Muestra banderas de desarme del FC, información de batería, nivel RSSI.",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "Información del sensor"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "Muestra sensores hardware",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Voltaje batería:"
},
@@ -810,11 +817,40 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "No incluido en la compilación",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "No detectado",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 dBm"
+ },
"initialSetupSensorHardware": {
"message": "Sensores:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "Giro:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "Acel:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Mag:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Baro:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Sonar:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Radar:"
},
"initialSetupArmingDisableFlags": {
"message": "Banderas Armado Desactivado:"
@@ -2699,8 +2735,8 @@
"description": "Show GPS position - Latitude / Longitude"
},
"gpsHeading": {
- "message": "Rumbo Mag / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
+ "message": "Rumbo IMU / GPS:",
+ "description": "Show IMU / GPS heading - Attitude / GPS course over ground"
},
"gpsSpeed": {
"message": "Velocidad:"
@@ -6150,6 +6186,10 @@
"message": "Altitud",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Calidad del enlace",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Armado desactivado",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/eu/messages.json b/locales/eu/messages.json
index 7b799a088a9..45cc9001f60 100644
--- a/locales/eu/messages.json
+++ b/locales/eu/messages.json
@@ -684,9 +684,6 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "Armatua desgaitua:"
},
diff --git a/locales/fr/messages.json b/locales/fr/messages.json
index 1e20bbaea39..a61943f5d49 100644
--- a/locales/fr/messages.json
+++ b/locales/fr/messages.json
@@ -762,6 +762,10 @@
"initialSetupMagHead": {
"message": "Magnetomètre"
},
+ "initialSensorInfoHeadHelp": {
+ "message": "Montre le matériel des capteurs",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Tension de la batterie:"
},
@@ -784,7 +788,25 @@
"message": "RSSI:"
},
"initialSetupRSSIValue": {
- "message": "$1 %"
+ "message": "$1 dBm"
+ },
+ "initialSetupSensorGyro": {
+ "message": "Gyro:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Mag:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Baro:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Sonar:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Radar:"
},
"initialSetupArmingDisableFlags": {
"message": "Paramètres empêchant l'armement:"
diff --git a/locales/gl/messages.json b/locales/gl/messages.json
index 09fca1dd611..1bc17b21808 100644
--- a/locales/gl/messages.json
+++ b/locales/gl/messages.json
@@ -736,10 +736,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Reiniciar eixo Z, offset: $1 º"
},
- "initialSetupHeading": {
- "message": "Título:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Tipo Mezclador"
},
@@ -785,10 +781,6 @@
"initialSetupInfoHead": {
"message": "Información do sistema"
},
- "initialSetupInfoHeadHelp": {
- "message": "Mostra avisos da FC para o desarmado, a información da batería, o nivel RSSI e o hardware dos sensores",
- "description": "Message that pops up to describe the System info section"
- },
"initialSetupBattery": {
"message": "Voltaxe da batería:"
},
@@ -816,9 +808,6 @@
"initialSetupSensorHardware": {
"message": "Sensores:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "Flags Armado Desactivado:"
},
@@ -2674,10 +2663,6 @@
"message": "Latitude / Lonxitude actual:",
"description": "Show GPS position - Latitude / Longitude"
},
- "gpsHeading": {
- "message": "Rumbo Mag / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
- },
"gpsSpeed": {
"message": "Velocidade:"
},
diff --git a/locales/it/messages.json b/locales/it/messages.json
index 3e9cc8ecf64..abc59478f5f 100644
--- a/locales/it/messages.json
+++ b/locales/it/messages.json
@@ -733,10 +733,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Reset asse Z, offset: $1 gradi"
},
- "initialSetupHeading": {
- "message": "Direzione:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Tipo Mixer"
},
@@ -783,9 +779,16 @@
"message": "Informazioni di sistema"
},
"initialSetupInfoHeadHelp": {
- "message": "Mostra le spunte FC per il disarmo, informazioni batteria, il livello RSSI e l'hardware dei sensori",
+ "message": "Mostra i flag dell' FC per il disarmo, informazioni batteria, livello RSSI.",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "Info Sensore"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "Mostra i sensori hardware",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Tensione Batteria:"
},
@@ -810,11 +813,40 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "Non incluso nella build",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "Non rilevato",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 dBm"
+ },
"initialSetupSensorHardware": {
"message": "Sensori:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "Gyro:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "Accel:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Mag:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Baro:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Sonar:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Radar:"
},
"initialSetupArmingDisableFlags": {
"message": "Flag Armato Disabilitato:"
@@ -2698,10 +2730,6 @@
"message": "Latitudine / Longitudine Corrente:",
"description": "Show GPS position - Latitude / Longitude"
},
- "gpsHeading": {
- "message": "Direzione Mag / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
- },
"gpsSpeed": {
"message": "Velocità:"
},
@@ -6150,6 +6178,10 @@
"message": "Altitudine",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Qualità Link",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Armamento disabilitato",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/ja/messages.json b/locales/ja/messages.json
index e60a5129eaf..6964740ee03 100644
--- a/locales/ja/messages.json
+++ b/locales/ja/messages.json
@@ -733,10 +733,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "リセット Z 軸、オフセット: $1 度"
},
- "initialSetupHeading": {
- "message": "ヘッディング:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "ミキサータイプ"
},
@@ -782,10 +778,6 @@
"initialSetupInfoHead": {
"message": "システム情報"
},
- "initialSetupInfoHeadHelp": {
- "message": "ディスアーム時のFCフラグ、バッテリー情報、RSSIレベル、センサーのハードウェアを表示",
- "description": "Message that pops up to describe the System info section"
- },
"initialSetupBattery": {
"message": "バッテリー電圧:"
},
@@ -813,9 +805,6 @@
"initialSetupSensorHardware": {
"message": "センサー:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "アーム無効フラグ:"
},
@@ -2698,10 +2687,6 @@
"message": "現在の 緯度 / 経度:",
"description": "Show GPS position - Latitude / Longitude"
},
- "gpsHeading": {
- "message": "ヘッディング方位 / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
- },
"gpsSpeed": {
"message": "速度:"
},
diff --git a/locales/ko/messages.json b/locales/ko/messages.json
index f787db5738b..5663633765c 100644
--- a/locales/ko/messages.json
+++ b/locales/ko/messages.json
@@ -734,8 +734,8 @@
"message": "Z 축 초기화, 오프셋: $1 도"
},
"initialSetupHeading": {
- "message": "진행방향:",
- "description": "Heading shown on Setup tab"
+ "message": "요:",
+ "description": "Heading [yaw] attitude value shown on Setup tab"
},
"initialSetupMixerHead": {
"message": "믹서 형식"
@@ -783,9 +783,16 @@
"message": "시스템 정보"
},
"initialSetupInfoHeadHelp": {
- "message": "디스아밍에 대한 FC 플래그, 배터리 정보, RSSI 레벨 및 센서 하드웨어 표시",
+ "message": "디스아밍에 대한 FC 플래그, 배터리 정보, RSSI 레벨표시",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "센서 정보"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "센서 하드웨어 표시",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "배터리 전압:"
},
@@ -810,11 +817,40 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "빌드에 포함되지 않음",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "발견되지 않음",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 dBm"
+ },
"initialSetupSensorHardware": {
"message": "센서:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "자이로:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "가속도계:"
+ },
+ "initialSetupSensorMag": {
+ "message": "자력계:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "기압계:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "초음파:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "레이더:"
},
"initialSetupArmingDisableFlags": {
"message": "아밍 불가 플래그:"
@@ -906,7 +942,7 @@
"description": "Message that pops up to describe the PARALYZE arming disable flag"
},
"initialSetupArmingDisableFlagsTooltipGPS": {
- "message": "GPS 레스큐 모드가 구성 되어 있지만 위성의 필요한 수가 고정되지 않았습니다",
+ "message": "GPS 레스큐 모드가 구성 되어 있지만 필요한 위성 수가 확보되지 않았습니다",
"description": "Message that pops up to describe the GPS arming disable flag"
},
"initialSetupArmingDisableFlagsTooltipRESC": {
@@ -1327,7 +1363,7 @@
"message": "비행컨트롤러가 아밍 중일때 신호음을 울립니다."
},
"beeperARMING_GPS_FIX": {
- "message": "보드가 아밍 중이고 GPS가 고정되면 특별한 톤으로 신호음을 울립니다."
+ "message": "보드가 아밍 중이고 GPS가 고정신호를 가지면 특별한 톤으로 신호음을 울립니다."
},
"beeperBAT_CRIT_LOW": {
"message": "배터리가 매우 부족할 때 긴 경고음을 울립니다. (반복)"
@@ -1348,7 +1384,7 @@
"message": "비행중 가속도계 교정이 실패하였습니다."
},
"beeperREADY_BEEP": {
- "message": "GPS가 고정되고 준비되면 링톤을 울립니다."
+ "message": "GPS 신호가 고정되고 준비되면 링톤을 울립니다."
},
"beeperDISARM_REPEAT": {
"message": "디스아밍 위치에서 스틱이 고정되어 있는 동안 신호음을 울립니다."
@@ -2676,10 +2712,10 @@
"message": "인터넷 연결 상태를 확인하십시오."
},
"gpsMapMessage2": {
- "message": "GPS 3D 고정을 기다리는 중…"
+ "message": "GPS 3D fix를 기다리는 중…"
},
"gps3dFix": {
- "message": "3D 고정:"
+ "message": "3D Fix:"
},
"gpsFixTrue": {
"message": "참"
@@ -2699,8 +2735,8 @@
"description": "Show GPS position - Latitude / Longitude"
},
"gpsHeading": {
- "message": "Mag / GPS 머리방향:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
+ "message": "IMU / GPS 머리방향:",
+ "description": "Show IMU / GPS heading - Attitude / GPS course over ground"
},
"gpsSpeed": {
"message": "속도:"
@@ -3039,7 +3075,7 @@
"message": "고도 - 미터"
},
"sensorsAltitudeHint": {
- "message": "고도는 기압계(사용 가능한 경우)의 출력과 GPS(사용 가능한 경우)로부터의 고도 출력을 결합하여 계산합니다. GPS가 연결되어 있고 GPS가 고정되어 있는 경우, 아밍 해제시 해수면 위의 절대 고도가 표시됩니다. 아밍을 할 경우, 아밍 할 때의 위치에 상대적인 고도가 표시됩니다."
+ "message": "고도는 기압계(사용 가능한 경우) 의 출력과 GPS(사용 가능한 경우) 로부터의 고도 출력을 결합하여 계산합니다. GPS가 연결되어 있고 GPS가 고정신호를 가진 경우, 아밍 해제시 해수면 위의 절대 고도가 표시됩니다. 아밍을 할 경우, 아밍 할 때의 위치에 상대적인 고도가 표시됩니다."
},
"sensorsSonarTitle": {
"message": "초음파 - cm"
@@ -4522,7 +4558,7 @@
"description": "Text for Auto option"
},
"failsafeChannelFallbackSettingsValueHold": {
- "message": "정지",
+ "message": "홀드",
"description": "Text for Hold option"
},
"failsafeChannelFallbackSettingsValueSet": {
@@ -4636,7 +4672,7 @@
"message": "최소위성수"
},
"failsafeGpsRescueItemAllowArmingWithoutFix": {
- "message": "고정없이 아밍 허용 - 경고: no fix - 페일세이프 사용 불가!"
+ "message": "Fix 없이 아밍 허용 - 경고: fix 없음 = 페일세이프시 디스아밍됨!"
},
"failsafeGpsRescueArmWithoutFixHelp": {
"message": "권장되지 않습니다. 홈 포인트를 설정하지 않고도 아밍을 허용하지만, 쿼드가 아밍을 해제하고 진정한 Rx 손실 페일 세이프와 충돌합니다. 스위치를 사용하여 테스트할 경우 해제까지 짧은 시간 동안 아무 작업도 수행하지 않습니다."
@@ -5440,7 +5476,7 @@
"description": "One of the elements of the OSD"
},
"osdDescElementGPSSats": {
- "message": "GPS 위성 수"
+ "message": "GPS fix를 제공하는 위성 수"
},
"osdTextElementGPSLon": {
"message": "GPS 경도",
@@ -5801,7 +5837,7 @@
"description": "One of the elements of the OSD"
},
"osdDescElementEfficiency": {
- "message": "순간 배터리 소비량을 mAh/거리 단위로 표시. (유효한 GPS 고정 필요)"
+ "message": "순간 배터리 소비량을 mAh/거리 단위로 표시. (유효한 GPS fix 필요)"
},
"osdTextTotalFlights": {
"message": "총 비행 횟수",
@@ -6150,6 +6186,10 @@
"message": "고도",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "링크 품질",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "아밍이 비활성화됨",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/nl/messages.json b/locales/nl/messages.json
index 04e9e7f7ad8..50637bab277 100644
--- a/locales/nl/messages.json
+++ b/locales/nl/messages.json
@@ -719,9 +719,6 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "Arming Uitgezet Kenmerken:"
},
diff --git a/locales/pl/messages.json b/locales/pl/messages.json
index 7c445e0bf3e..d3b9b993695 100644
--- a/locales/pl/messages.json
+++ b/locales/pl/messages.json
@@ -53,7 +53,7 @@
"message": "Wybór ręczny"
},
"portsSelectVirtual": {
- "message": "Tryb wirtualny (Eksperymentalny)",
+ "message": "Tryb wirtualny ",
"description": "Configure a Virtual Flight Controller without the need of a physical FC."
},
"virtualMSPVersion": {
@@ -713,7 +713,7 @@
"message": "Aktywacja Boot Loadera / DFU"
},
"initialSetupBackupRestoreHeader": {
- "message": "Tworzenie i Przywracanie kopii"
+ "message": "Tworzenie i Przywracanie kopii zapasowej"
},
"initialSetupBackupRestoreText": {
"message": "Utwórz kopię zapasową swojej konfiguracji na wypadek utraty, Ustawienia CLI nie są uwzględniane - użyj do tego komendy 'diff all' w CLI."
@@ -733,10 +733,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Resetuj oś Z, położenie: $1 stopni"
},
- "initialSetupHeading": {
- "message": "Kurs:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Typ Modelu"
},
@@ -783,9 +779,16 @@
"message": "Informacje o systemie"
},
"initialSetupInfoHeadHelp": {
- "message": "Pokazuje flagi kontrolera lotu, które uniemożliwiają uzbrojenie jednostki latającej, oraz rodzaj baterii, poziom RSSI, a także rodzaj podłączonych czujników.",
+ "message": "Pokazuje flagi kontrolera lotu, które uniemożliwiają uzbrojenie jednostki latającej, oraz rodzaj baterii i poziom RSSI.",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "Sensor info"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "Pokazuje czujniki",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Napięcie baterii:"
},
@@ -810,11 +813,40 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "Nie uwzględnione w kompilacji",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "Nie wykryto",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 dBm"
+ },
"initialSetupSensorHardware": {
"message": "Czujniki:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "Gyro:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "Akcel:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Mag:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Baro:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Sonar:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Radar:"
},
"initialSetupArmingDisableFlags": {
"message": "Flagi wyłączające uzbrojenie:"
@@ -866,7 +898,7 @@
"description": "Message that pops up to describe the ANGLE arming disable flag"
},
"initialSetupArmingDisableFlagsTooltipBOOT_GRACE_TIME": {
- "message": "Uzbrojenie zbyt szybko po włączeniu zasilania",
+ "message": "Po włączeniu zasilania uzbrojenie nastąpiło za szybko",
"description": "Message that pops up to describe the BOOT_GRACE_TIME arming disable flag"
},
"initialSetupArmingDisableFlagsTooltipNOPREARM": {
@@ -1443,7 +1475,7 @@
"description": "Option to use Galileo in the GPS configuration"
},
"configurationGPSGalileoHelp": {
- "message": "Po włączeniu moduł GPS będzie również śledzić system satelitarny Galileo, co zazwyczaj skutkuje większą liczbą zablokowanych satelitów. W przypadku Betaflight 4.2.x lub wcześniejszych wersji wyłącza on również system satelitarny QZSS.",
+ "message": "Po włączeniu moduł GPS będzie również śledzić system satelitarny Galileo, co zazwyczaj skutkuje większą liczbą zablokowanych satelitów. W przypadku Betaflight 4.2.x lub nowszej wersji wyłącza on również system satelitarny QZSS.",
"description": "Help text for the option to use Galileo in the GPS configuration"
},
"configurationGPSHomeOnce": {
@@ -1964,7 +1996,7 @@
"message": "OGRANICZ"
},
"pidTuningThrottleLimitTypeTip": {
- "message": "Wybierz rodzaj ograniczenia przepustnicy. WYŁĄCZ wyłącza tę funkcję, SKALA zmieni czułość przepustnicy z 0 na wybraną wartość, w całym zakresie przepustnicy, OGRARICZ/b> ustawi czułość przepustnicy w niei sposób że wychylenie drążka powyżej określonej wartości nie będzie miało dodatkowego efektu"
+ "message": "Wybierz rodzaj ograniczenia przepustnicy. WYŁĄCZ wyłącza tę funkcję, SKALA zmieni czułość przepustnicy z 0 na wybraną wartość, w całym zakresie przepustnicy, OGRARICZ ustawi czułość przepustnicy w taki sposób że wychylenie drążka powyżej określonej wartości nie będzie miało dodatkowego efektu"
},
"pidTuningThrottleLimitPercentTip": {
"message": "Ustaw żądany procentowy limit przepustnicy. Ustawienie na 100% wyłącza tą funkcję."
@@ -2698,10 +2730,6 @@
"message": "Bieżąca szerokość / długość geograficzna:",
"description": "Show GPS position - Latitude / Longitude"
},
- "gpsHeading": {
- "message": "Kierunek Mag / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
- },
"gpsSpeed": {
"message": "Prędkość:"
},
@@ -4026,7 +4054,7 @@
"description": "Overall helpicon message for PID tuning sliders"
},
"pidTuningSliderWarning": {
- "message": "UWAGA: Aktualne ustawienia suwaków może powodować zniszczenie silnika lub niebezpieczne zachowanie platformy. Proszę postępować ostrożnie.",
+ "message": "UWAGA: Aktualne ustawienia suwaków mogą powodować zniszczenie silnika lub niebezpieczne zachowanie jednostki latającej. Proszę postępować ostrożnie.",
"description": "Warning shown when tuning slider are above safe limits"
},
"pidTuningSlidersDisabled": {
@@ -6150,6 +6178,10 @@
"message": "Wysokość",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Jakość połączenia",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Uzbrajanie nieaktywne",
"description": "One of the warnings that can be selected to be shown in the OSD"
@@ -6457,7 +6489,7 @@
"description": "Text of one of the fields of the VTX tab"
},
"vtxPitModeFrequencyHelp": {
- "message": "Częstotliwość, z jaką zmienia się tryb Pita po włączeniu.",
+ "message": "Częstotliwość, z jaką zmienia się tryb Pit po włączeniu.",
"description": "Help text for the pit mode field of the VTX tab"
},
"vtxLowPowerDisarm": {
diff --git a/locales/pt/messages.json b/locales/pt/messages.json
index dd6d3b26846..a1f317223f9 100644
--- a/locales/pt/messages.json
+++ b/locales/pt/messages.json
@@ -734,8 +734,8 @@
"message": "Repor eixo Z, offset: $1 graus"
},
"initialSetupHeading": {
- "message": "Direção:",
- "description": "Heading shown on Setup tab"
+ "message": "Yaw:",
+ "description": "Heading [yaw] attitude value shown on Setup tab"
},
"initialSetupMixerHead": {
"message": "Tipo de Mixer"
@@ -783,9 +783,16 @@
"message": "Info. do Sistema"
},
"initialSetupInfoHeadHelp": {
- "message": "Mostra bandeiras da FC para desarmar, informações da bateria, nível RSSI e hardware de sensores",
+ "message": "Mostra flags da FC para desarmar, informações da bateria, nível RSSI.",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "Info do sensor"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "Mostra hardware dos sensores",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Voltagem da bateria:"
},
@@ -810,11 +817,40 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
+ "initialSetupNotInBuild": {
+ "message": "Não incluído na compilação",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "Não detetado",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 dBm"
+ },
"initialSetupSensorHardware": {
"message": "Sensores:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "Giro:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "Accel:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Mag:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Baro:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Sonar:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Radar:"
},
"initialSetupArmingDisableFlags": {
"message": "Indicadores de Armar Desativado:"
@@ -2699,8 +2735,8 @@
"description": "Show GPS position - Latitude / Longitude"
},
"gpsHeading": {
- "message": "Direção Mag / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
+ "message": "Direção IMU / GPS:",
+ "description": "Show IMU / GPS heading - Attitude / GPS course over ground"
},
"gpsSpeed": {
"message": "Velocidade:"
@@ -6150,6 +6186,10 @@
"message": "Altitude",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Qualidade da Ligação",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Armar desativado",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/pt_BR/messages.json b/locales/pt_BR/messages.json
index c100300fa85..f75c95007f0 100644
--- a/locales/pt_BR/messages.json
+++ b/locales/pt_BR/messages.json
@@ -733,10 +733,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Redefinir eixo Z, offset: $1 graus"
},
- "initialSetupHeading": {
- "message": "Direção:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Tipo de Mixer"
},
@@ -782,10 +778,6 @@
"initialSetupInfoHead": {
"message": "Informações do sistema"
},
- "initialSetupInfoHeadHelp": {
- "message": "Mostra sinalizadores FC para desarmar, informações da bateria, nível RSSI e hardware dos sensores",
- "description": "Message that pops up to describe the System info section"
- },
"initialSetupBattery": {
"message": "Voltagem da bateria:"
},
@@ -813,9 +805,6 @@
"initialSetupSensorHardware": {
"message": "Sensores:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "Armar bloqueado. Indicadores:"
},
diff --git a/locales/ru/messages.json b/locales/ru/messages.json
index d9dff54644b..b02cd0a186c 100644
--- a/locales/ru/messages.json
+++ b/locales/ru/messages.json
@@ -720,9 +720,6 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "Флаги, запрещающие arming:"
},
diff --git a/locales/uk/messages.json b/locales/uk/messages.json
index e85fe947dcf..90a259e1185 100644
--- a/locales/uk/messages.json
+++ b/locales/uk/messages.json
@@ -733,10 +733,6 @@
"initialSetupButtonResetZaxisValue": {
"message": "Скинути вісь Z, зміщення: $1 градус"
},
- "initialSetupHeading": {
- "message": "Курс:",
- "description": "Heading shown on Setup tab"
- },
"initialSetupMixerHead": {
"message": "Тип Мікшеру"
},
@@ -783,9 +779,16 @@
"message": "Інформація про систему"
},
"initialSetupInfoHeadHelp": {
- "message": "Показує позначки польотного контролера для охолощення, інформації про батарею, рівень індикатора рівня потужності отриманого сигналу RSSI та сенсори",
+ "message": "Показує позначки заборони взведення, інформацію про батарею, рівень RSSI.",
"description": "Message that pops up to describe the System info section"
},
+ "initialSensorInfoHead": {
+ "message": "Інформація про сенсори"
+ },
+ "initialSensorInfoHeadHelp": {
+ "message": "Показує апаратну частину сенсорів",
+ "description": "Message that pops up to describe the Sensor info section"
+ },
"initialSetupBattery": {
"message": "Напруга акумулятора:"
},
@@ -810,11 +813,40 @@
"initialSetupRSSI": {
"message": "RSSI: "
},
+ "initialSetupNotInBuild": {
+ "message": "Не включено до збірки",
+ "description": "Message that pops up when hardware support not are supported in Build"
+ },
+ "initialSetupNotDetected": {
+ "message": "Не виявлено",
+ "description": "Message that pops up when hardware are not detected"
+ },
+ "initialSetupRSSIValue": {
+ "message": "$1 дБм"
+ },
"initialSetupSensorHardware": {
"message": "Датчики:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
+ "initialSetupSensorGyro": {
+ "message": "Гіроскоп:"
+ },
+ "initialSetupSensorAcc": {
+ "message": "Акселерометр:"
+ },
+ "initialSetupSensorMag": {
+ "message": "Компас:"
+ },
+ "initialSetupSensorBaro": {
+ "message": "Барометр:"
+ },
+ "initialSetupSensorGPS": {
+ "message": "GPS:"
+ },
+ "initialSetupSensorSonar": {
+ "message": "Сонар:"
+ },
+ "initialSetupSensorRadar": {
+ "message": "Радар:"
},
"initialSetupArmingDisableFlags": {
"message": "Позначки заборони взведення:"
@@ -2698,10 +2730,6 @@
"message": "Поточна широта/довгота:",
"description": "Show GPS position - Latitude / Longitude"
},
- "gpsHeading": {
- "message": "Курс за компасом / GPS:",
- "description": "Show GPS heading - Magnetic / GPS course over ground"
- },
"gpsSpeed": {
"message": "Швидкість:"
},
@@ -6150,6 +6178,10 @@
"message": "Висота",
"description": "Text of the altitude alarm"
},
+ "osdTimerAlarmOptionLinkQuality": {
+ "message": "Якість зв'язку",
+ "description": "Text of the link quality alarm"
+ },
"osdWarningTextArmingDisabled": {
"message": "Взведення заборонене",
"description": "One of the warnings that can be selected to be shown in the OSD"
diff --git a/locales/zh_CN/messages.json b/locales/zh_CN/messages.json
index 4a7524206d2..b9ae4dec6ba 100644
--- a/locales/zh_CN/messages.json
+++ b/locales/zh_CN/messages.json
@@ -729,9 +729,6 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "禁止解锁标志:"
},
diff --git a/locales/zh_TW/messages.json b/locales/zh_TW/messages.json
index 50947ffe9a4..4d8f4e089b7 100644
--- a/locales/zh_TW/messages.json
+++ b/locales/zh_TW/messages.json
@@ -666,9 +666,6 @@
"initialSetupRSSI": {
"message": "RSSI:"
},
- "initialSetupRSSIValue": {
- "message": "$1 %"
- },
"initialSetupArmingDisableFlags": {
"message": "禁止解鎖標誌:"
},
diff --git a/package.json b/package.json
index 3e4a69c2611..9350de4be4a 100644
--- a/package.json
+++ b/package.json
@@ -132,7 +132,7 @@
"temp": "^0.9.4",
"through2": "^4.0.2",
"vinyl-source-stream": "^2.0.0",
- "vite": "^4.0.5",
+ "vite": "^4.4.12",
"vitest": "^0.27.1",
"vue-loader": "^15.9.8",
"vue-template-compiler": "^2.7.10",
diff --git a/src/css/tabs/led_strip.less b/src/css/tabs/led_strip.less
index 5ce70a453c8..06ff3dfc23a 100644
--- a/src/css/tabs/led_strip.less
+++ b/src/css/tabs/led_strip.less
@@ -270,7 +270,6 @@
}
.brightnessSliderDiv {
- margin-top: -15px;
.brightnessSlider{
display: flex;
align-items: center;
diff --git a/src/css/tabs/motors.less b/src/css/tabs/motors.less
index 397b89bdc22..50c3c1fa9a6 100644
--- a/src/css/tabs/motors.less
+++ b/src/css/tabs/motors.less
@@ -102,6 +102,13 @@
padding: 0 5px;
background-color: #ececec;
}
+ input[readonly] {
+ background-color: #AFAFAF;
+ border: none;
+ pointer-events: none;
+ text-shadow: none;
+ opacity: 0.5;
+ }
span {
margin-left: 0;
}
diff --git a/src/js/debug.js b/src/js/debug.js
index 119bcd01b6b..f82e097e547 100644
--- a/src/js/debug.js
+++ b/src/js/debug.js
@@ -89,6 +89,7 @@ const DEBUG = {
{text: "RC_STATS"},
{text: "MAG_CALIB"},
{text: "MAG_TASK_RATE"},
+ {text: "EZLANDING"},
],
fieldNames : {
@@ -742,6 +743,13 @@ const DEBUG = {
'debug[5]': 'Read State',
'debug[6]': 'Task Time (Us)',
},
+ 'EZLANDING' : {
+ 'debug[all]': 'EZ Landing',
+ 'debug[0]': 'EZ Land Factor',
+ 'debug[1]': 'Adjusted Throttle',
+ 'debug[2]': 'Upper Limit',
+ 'debug[3]': 'EZ Land Limit',
+ },
},
enableFields : [
diff --git a/src/js/gui.js b/src/js/gui.js
index 50630c754df..1f3a5062430 100644
--- a/src/js/gui.js
+++ b/src/js/gui.js
@@ -355,7 +355,7 @@ class GuiControl {
}
selectDefaultTabWhenConnected() {
const result = getConfig(['rememberLastTab', 'lastTab']);
- const tab = result.rememberLastTab && result.lastTab ? result.lastTab : 'tab_setup';
+ const tab = result.rememberLastTab && result.lastTab && this.allowedTabs.includes(result.lastTab.substring(4)) ? result.lastTab : 'tab_setup';
$(`#tabs ul.mode-connected .${tab} a`).trigger('click');
}
diff --git a/src/js/main.js b/src/js/main.js
index 270ddc8c38d..9d3dc71226e 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -50,7 +50,7 @@ function useGlobalNodeFunctions() {
}
function readConfiguratorVersionMetadata() {
- if (GUI.isNWJS()) {
+ if (GUI.isNWJS() || GUI.isCordova()) {
const manifest = chrome.runtime.getManifest();
CONFIGURATOR.productName = manifest.productName;
CONFIGURATOR.version = manifest.version;
diff --git a/src/js/msp/MSPHelper.js b/src/js/msp/MSPHelper.js
index 80d330cce77..a561fe310e3 100644
--- a/src/js/msp/MSPHelper.js
+++ b/src/js/msp/MSPHelper.js
@@ -224,11 +224,11 @@ MspHelper.prototype.process_data = function(dataHandler) {
break;
case MSPCodes.MSP_RAW_IMU:
- // 512 for mpu6050, 256 for mma
- // currently we are unable to differentiate between the sensor types, so we are goign with 512
- FC.SENSOR_DATA.accelerometer[0] = data.read16() / 512;
- FC.SENSOR_DATA.accelerometer[1] = data.read16() / 512;
- FC.SENSOR_DATA.accelerometer[2] = data.read16() / 512;
+ // 2048 for mpu6050, 1024 for mma (times 4 since we don't scale in the firmware)
+ // currently we are unable to differentiate between the sensor types, so we are going with 2048
+ FC.SENSOR_DATA.accelerometer[0] = data.read16() / 2048;
+ FC.SENSOR_DATA.accelerometer[1] = data.read16() / 2048;
+ FC.SENSOR_DATA.accelerometer[2] = data.read16() / 2048;
// properly scaled
FC.SENSOR_DATA.gyroscope[0] = data.read16() * (4 / 16.4);
diff --git a/src/js/serial_backend.js b/src/js/serial_backend.js
index c351a0026b7..c505a29d7e1 100644
--- a/src/js/serial_backend.js
+++ b/src/js/serial_backend.js
@@ -616,7 +616,7 @@ function connectCli() {
}
function onConnect() {
- if ($('div#flashbutton a.flash_state').hasClass('active') && $('div#flashbutton a.flash').hasClass('active')) {
+ if ($('div#flashbutton a.flash_state').hasClass('active') || $('div#flashbutton a.flash').hasClass('active')) {
$('div#flashbutton a.flash_state').removeClass('active');
$('div#flashbutton a.flash').removeClass('active');
}
diff --git a/src/js/tabs/gps.js b/src/js/tabs/gps.js
index 8af9cd4ebc4..dccac449291 100644
--- a/src/js/tabs/gps.js
+++ b/src/js/tabs/gps.js
@@ -52,7 +52,11 @@ gps.initialize = async function (callback) {
}
function get_gpsvinfo_data() {
- MSP.send_message(MSPCodes.MSP_GPS_SV_INFO, false, false, hasMag ? get_imu_data : update_ui);
+ MSP.send_message(MSPCodes.MSP_GPS_SV_INFO, false, false, get_attitude_data);
+ }
+
+ function get_attitude_data() {
+ MSP.send_message(MSPCodes.MSP_ATTITUDE, false, false, hasMag ? get_imu_data : update_ui);
}
function get_imu_data() {
@@ -185,6 +189,7 @@ gps.initialize = async function (callback) {
const lat = FC.GPS_DATA.lat / 10000000;
const lon = FC.GPS_DATA.lon / 10000000;
const url = `https://maps.google.com/?q=${lat},${lon}`;
+ const imuHeading = FC.SENSOR_DATA.kinematics[2];
const magHeading = hasMag ? Math.atan2(FC.SENSOR_DATA.magnetometer[1], FC.SENSOR_DATA.magnetometer[0]) : undefined;
const magHeadingDeg = magHeading === undefined ? 0 : magHeading * 180 / Math.PI;
const gpsHeading = FC.GPS_DATA.ground_course / 100;
@@ -200,7 +205,7 @@ gps.initialize = async function (callback) {
const gspUnitText = i18n.getMessage('gpsPositionUnit');
$('.GPS_info td.alt').text(`${alt} m`);
$('.GPS_info td.latLon a').prop('href', url).text(`${lat.toFixed(6)} / ${lon.toFixed(6)} ${gspUnitText}`);
- $('.GPS_info td.heading').text(`${magHeadingDeg.toFixed(4)} / ${gpsHeading.toFixed(4)} ${gspUnitText}`);
+ $('.GPS_info td.heading').text(`${imuHeading.toFixed(0)} / ${gpsHeading.toFixed(0)} ${gspUnitText}`);
$('.GPS_info td.speed').text(`${FC.GPS_DATA.speed} cm/s`);
$('.GPS_info td.sats').text(FC.GPS_DATA.numSat);
$('.GPS_info td.distToHome').text(`${FC.GPS_DATA.distanceToHome} m`);
@@ -298,7 +303,7 @@ gps.initialize = async function (callback) {
action: 'center',
lat: lat,
lon: lon,
- heading: magHeading,
+ heading: gpsHeading,
};
frame = document.getElementById('map');
diff --git a/src/js/tabs/map.js b/src/js/tabs/map.js
index 5d36b0a3494..7df28f25702 100644
--- a/src/js/tabs/map.js
+++ b/src/js/tabs/map.js
@@ -21,41 +21,41 @@ function initializeMap() {
const lonLat = ol.proj.fromLonLat([DEFAULT_LON, DEFAULT_LAT]);
mapView = new ol.View({
- center: lonLat,
- zoom: DEFAULT_ZOOM,
- });
+ center: lonLat,
+ zoom: DEFAULT_ZOOM,
+ });
map = new ol.Map({
target: 'map-canvas',
layers: [
- new ol.layer.Tile({
- source: new ol.source.OSM(),
- }),
+ new ol.layer.Tile({
+ source: new ol.source.OSM(),
+ }),
],
view: mapView,
controls: [],
- });
+ });
- const iconGPS = new ol.style.Icon(({
+ const iconGPS = new ol.style.Icon({
anchor: [0.5, 1],
opacity: 1,
scale: 0.5,
src: ICON_IMAGE_GPS,
- }));
+ });
- const iconMag = new ol.style.Icon(({
+ const iconMag = new ol.style.Icon({
anchor: [0.5, 1],
opacity: 1,
scale: 0.5,
src: ICON_IMAGE_MAG,
- }));
+ });
- const iconNoFix = new ol.style.Icon(({
+ const iconNoFix = new ol.style.Icon({
anchor: [0.5, 1],
opacity: 1,
scale: 0.5,
src: ICON_IMAGE_NOFIX,
- }));
+ });
iconStyleGPS = new ol.style.Style({
image: iconGPS,
@@ -70,6 +70,7 @@ function initializeMap() {
});
iconGeometry = new ol.geom.Point(lonLat);
+
iconFeature = new ol.Feature({
geometry: iconGeometry,
});
@@ -106,8 +107,9 @@ function processMapEvents(e) {
iconFeature.setStyle(iconStyle);
const center = ol.proj.fromLonLat([e.data.lon, e.data.lat]);
mapView.setCenter(center);
- const heading = e.data.heading === undefined ? 0 : e.data.heading;
- mapView.setRotation(heading);
+ // TODO - add rotation for the icon
+ // const heading = e.data.heading === undefined ? 0 : e.data.heading;
+ // mapView.setRotation(heading);
iconGeometry.setCoordinates(center);
break;
diff --git a/src/js/tabs/osd.js b/src/js/tabs/osd.js
index bddd9159983..c665839e1b3 100644
--- a/src/js/tabs/osd.js
+++ b/src/js/tabs/osd.js
@@ -2230,6 +2230,10 @@ OSD.msp = {
result.push8(OSD.data.parameters.cameraFrameWidth);
result.push8(OSD.data.parameters.cameraFrameHeight);
}
+
+ if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_46)) {
+ result.push16(OSD.data.alarms.link_quality.value);
+ }
}
return result;
},
@@ -2442,6 +2446,10 @@ OSD.msp = {
d.parameters.cameraFrameHeight = view.readU8();
}
+ if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_46)) {
+ d.alarms['link_quality'] = { display_name: i18n.getMessage('osdTimerAlarmOptionLinkQuality'), value: view.readU16() };
+ }
+
this.processOsdElements(d, itemsPositionsRead);
OSD.updateDisplaySize();
diff --git a/src/js/tabs/pid_tuning.js b/src/js/tabs/pid_tuning.js
index b12ae1a7820..bd8de7b1335 100644
--- a/src/js/tabs/pid_tuning.js
+++ b/src/js/tabs/pid_tuning.js
@@ -1290,27 +1290,8 @@ pid_tuning.initialize = function (callback) {
$('.acroTrainerAngleLimit').hide();
}
- const hideSensorPid = function(element, sensorReady) {
- let isVisible = element.is(":visible");
- if (!isVisible || !sensorReady) {
- element.hide();
- isVisible = false;
- }
-
- return isVisible;
- };
-
- let isVisibleBaroMagGps = false;
-
- isVisibleBaroMagGps |= hideSensorPid($('#pid_baro'), have_sensor(FC.CONFIG.activeSensors, 'baro') || have_sensor(FC.CONFIG.activeSensors, 'sonar'));
-
- isVisibleBaroMagGps |= hideSensorPid($('#pid_mag'), have_sensor(FC.CONFIG.activeSensors, 'mag'));
-
- isVisibleBaroMagGps |= hideSensorPid($('#pid_gps'), have_sensor(FC.CONFIG.activeSensors, 'GPS'));
-
- if (!isVisibleBaroMagGps) {
- $('#pid_baro_mag_gps').hide();
- }
+ // Hide all optional elements
+ $('#pid_baro_mag_gps').hide();
}
function drawAxes(curveContext, width, height) {
diff --git a/src/js/tabs/sensors.js b/src/js/tabs/sensors.js
index 5fab4783ba7..46ea2af440b 100644
--- a/src/js/tabs/sensors.js
+++ b/src/js/tabs/sensors.js
@@ -346,14 +346,25 @@ sensors.initialize = function (callback) {
const scales = {
'gyro': parseFloat($('.tab-sensors select[name="gyro_scale"]').val()),
'accel': parseFloat($('.tab-sensors select[name="accel_scale"]').val()),
- 'mag': parseFloat($('.tab-sensors select[name="mag_scale"]').val()),
+ 'mag': parseInt($('.tab-sensors select[name="mag_scale"]').val(), 10),
};
// handling of "data pulling" is a little bit funky here, as MSP_RAW_IMU contains values for gyro/accel/mag but not altitude
// this means that setting a slower refresh rate on any of the attributes would have no effect
// what we will do instead is = determinate the fastest refresh rate for those 3 attributes, use that as a "polling rate"
// and use the "slower" refresh rates only for re-drawing the graphs (to save resources/computing power)
- const fastest = d3.min([rates.gyro, rates.accel, rates.mag]);
+
+ let fastest;
+ // if any of the refresh rates change, we need to re-determine the fastest refresh rate
+ if (['gyro_refresh_rate', 'accel_refresh_rate', 'mag_refresh_rate'].includes($(this).attr('name'))) {
+ fastest = $(this).val();
+
+ $('.tab-sensors select[name="gyro_refresh_rate"]').val(fastest);
+ $('.tab-sensors select[name="accel_refresh_rate"]').val(fastest);
+ $('.tab-sensors select[name="mag_refresh_rate"]').val(fastest);
+ } else {
+ fastest = d3.max([rates.gyro, rates.accel, rates.mag]);
+ }
// store current/latest refresh rates in the storage
setConfig({'sensor_settings': {'rates': rates, 'scales': scales}});
diff --git a/src/js/tabs/setup.js b/src/js/tabs/setup.js
index d175c177858..fc4e7a42b16 100644
--- a/src/js/tabs/setup.js
+++ b/src/js/tabs/setup.js
@@ -255,6 +255,10 @@ setup.initialize = function (callback) {
disarmFlagElements = disarmFlagElements.concat(['ACC_CALIBRATION', 'MOTOR_PROTOCOL']);
}
+ if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_46)) {
+ disarmFlagElements.splice(disarmFlagElements.indexOf('RPMFILTER'), 0, 'DSHOT_TELEM');
+ }
+
// Always the latest element
disarmFlagElements = disarmFlagElements.concat(['ARM_SWITCH']);
@@ -301,6 +305,7 @@ setup.initialize = function (callback) {
'BMI160',
'BMI270',
'LSM6DSO',
+ 'LSM6DSV16X',
'VIRTUAL',
];
@@ -325,9 +330,22 @@ setup.initialize = function (callback) {
'BMI160',
'BMI270',
'LSM6DSO',
+ 'LSM6DSV16X',
'VIRTUAL',
];
+ const magElements = [
+ 'DEFAULT',
+ 'NONE',
+ 'HMC5883',
+ 'AK8975',
+ 'AK8963',
+ 'QMC5883',
+ 'LIS3MDL',
+ 'MPU925X_AK8963',
+ 'IST8310',
+ ];
+
const baroElements = [
'DEFAULT',
'NONE',
@@ -342,18 +360,6 @@ setup.initialize = function (callback) {
'VIRTUAL',
];
- const magElements = [
- 'DEFAULT',
- 'NONE',
- 'HMC5883',
- 'AK8975',
- 'AK8963',
- 'QMC5883',
- 'LIS3MDL',
- 'MPU925X_AK8963',
- 'IST8310',
- ];
-
const sonarElements = [
'NONE',
'HCSR04',
@@ -364,8 +370,8 @@ setup.initialize = function (callback) {
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_46)) {
MSP.send_message(MSPCodes.MSP2_SENSOR_CONFIG_ACTIVE, false, false, function() {
// Sensor info
- const textNA = 'Not included in build';
- const textDisabled = 'Disabled by user';
+ const textNA = i18n.getMessage('initialSetupNotInBuild');
+ const textDisabled = i18n.getMessage('initialSetupNotDetected');
if (FC.SENSOR_CONFIG_ACTIVE.gyro_hardware == 0xFF) {
sensor_gyro_e.text(textNA);
diff --git a/src/tabs/sensors.html b/src/tabs/sensors.html
index ec45e47500d..8861904faf3 100644
--- a/src/tabs/sensors.html
+++ b/src/tabs/sensors.html
@@ -128,7 +128,7 @@
-
-