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 @@
- diff --git a/src/tabs/setup.html b/src/tabs/setup.html index b6304952bc5..8f13ca15f9e 100644 --- a/src/tabs/setup.html +++ b/src/tabs/setup.html @@ -202,14 +202,14 @@ - - - - + + + + diff --git a/vite.config.js b/vite.config.js index 131677365ae..c135e007b86 100644 --- a/vite.config.js +++ b/vite.config.js @@ -5,8 +5,9 @@ import path from "node:path"; import { readFileSync } from "node:fs"; import copy from "rollup-plugin-copy"; import pkg from './package.json'; +import * as child from 'child_process'; -const childProcess = require('child_process'); +const commitHash = child.execSync('git rev-parse --short HEAD').toString(); function serveFileFromDirectory(directory) { return (req, res, next) => { @@ -52,7 +53,7 @@ export default defineConfig({ define: { '__APP_VERSION__': JSON.stringify(pkg.version), '__APP_PRODUCTNAME__': JSON.stringify(pkg.productName), - '__APP_REVISION__': JSON.stringify(childProcess.execSync("git rev-parse --short HEAD").toString().trim()), + '__APP_REVISION__': JSON.stringify(commitHash), }, test: { // NOTE: this is a replacement location for karma tests. diff --git a/yarn.lock b/yarn.lock index be3b79d4680..b614bece998 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15495,10 +15495,10 @@ vite-node@0.27.3: source-map-support "^0.5.21" vite "^3.0.0 || ^4.0.0" -"vite@^3.0.0 || ^4.0.0", vite@^4.0.5: - version "4.4.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" - integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== +"vite@^3.0.0 || ^4.0.0", vite@^4.4.12: + version "4.4.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.12.tgz#e9c355d5a0d8a47afa46cb4bad10820da333da5c" + integrity sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ== dependencies: esbuild "^0.18.10" postcss "^8.4.27"