diff --git a/CREDITS.txt b/CREDITS.txt
index f4f2c3cb9..592206e07 100644
--- a/CREDITS.txt
+++ b/CREDITS.txt
@@ -2238,3 +2238,15 @@ Michael Jakob
Dean Berg
David Hankins
Gary Cripps
+Devin Crumb
+Daniel Naude
+James Miller
+Pascal Cayol
+eDefine
+Mario Sette
+Hans-Georg Böhm
+Robert Oats
+Helmut Suhrbier
+Johannes Vorster
+Deon du Rand
+Stephen Hill-Harriss
diff --git a/companion/src/firmwares/rawsource.cpp b/companion/src/firmwares/rawsource.cpp
index 898c0ca4a..eaa651b6c 100644
--- a/companion/src/firmwares/rawsource.cpp
+++ b/companion/src/firmwares/rawsource.cpp
@@ -60,7 +60,7 @@ RawSourceRange RawSource::getRange(const ModelData * model, const GeneralSetting
result.min = -30000 * result.step;
result.max = +30000 * result.step;
result.decimals = sensor.prec;
- result.unit = SensorData::unitToString(qr.quot);
+ result.unit = sensor.unitToString();
break;
}
@@ -351,8 +351,11 @@ RawSource RawSource::convert(RadioDataConversionState & cstate)
if (type == SOURCE_TYPE_SWITCH) {
QStringList fromSwitchList(getSwitchList(cstate.fromBoard));
QStringList toSwitchList(getSwitchList(cstate.toBoard));
- index = toSwitchList.indexOf(fromSwitchList.at(oldData.id));
// index set to -1 if no match found
+ if (oldData.id < fromSwitchList.count())
+ index = toSwitchList.indexOf(fromSwitchList.at(oldData.id));
+ else
+ index = -1;
// perform forced mapping
if (index < 0) {
if (IS_TARANIS_X7(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType))) {
diff --git a/companion/src/firmwares/rawswitch.cpp b/companion/src/firmwares/rawswitch.cpp
index 7aef46922..f609e7942 100644
--- a/companion/src/firmwares/rawswitch.cpp
+++ b/companion/src/firmwares/rawswitch.cpp
@@ -191,7 +191,10 @@ RawSwitch RawSwitch::convert(RadioDataConversionState & cstate)
QStringList fromSwitchList(getSwitchList(cstate.fromBoard));
QStringList toSwitchList(getSwitchList(cstate.toBoard));
// set to -1 if no match found
- newIdx = toSwitchList.indexOf(fromSwitchList.at(swtch.quot));
+ if (swtch.quot < fromSwitchList.count())
+ newIdx = toSwitchList.indexOf(fromSwitchList.at(swtch.quot));
+ else
+ newIdx = -1;
// perform forced mapping
if (newIdx < 0) {
if (IS_TARANIS_X7(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType))) {
diff --git a/companion/src/firmwares/sensordata.cpp b/companion/src/firmwares/sensordata.cpp
index ae602bd0d..9a26a6d82 100644
--- a/companion/src/firmwares/sensordata.cpp
+++ b/companion/src/firmwares/sensordata.cpp
@@ -75,9 +75,9 @@ QString SensorData::cellIndexToString() const
return cellIndexToString(index);
}
-QString SensorData::unitToString() const
+QString SensorData::unitToString(bool hideRaw) const
{
- return unitToString(unit);
+ return unitToString(unit, hideRaw);
}
QString SensorData::precToString() const
@@ -342,11 +342,11 @@ QString SensorData::sourceToString(const ModelData * model, const int index, con
}
// static
-QString SensorData::unitToString(const int value)
+QString SensorData::unitToString(const int value, bool hideRaw)
{
switch (value) {
case UNIT_RAW:
- return tr("Raw (-)");
+ return hideRaw ? QString() : tr("Raw (-)");
case UNIT_VOLTS:
return tr("V");
case UNIT_AMPS:
@@ -496,7 +496,7 @@ AbstractStaticItemModel * SensorData::unitItemModel()
mdl->setName("sensordata.unit");
for (int i = 0; i <= UNIT_MAX; i++) {
- QString str = unitToString(i);
+ QString str = unitToString(i, false);
if (str != CPN_STR_UNKNOWN_ITEM)
mdl->appendToItemList(str, i);
}
diff --git a/companion/src/firmwares/sensordata.h b/companion/src/firmwares/sensordata.h
index 8a032cec5..1581b444b 100644
--- a/companion/src/firmwares/sensordata.h
+++ b/companion/src/firmwares/sensordata.h
@@ -188,7 +188,7 @@ class SensorData {
QString typeToString() const;
QString formulaToString() const;
QString cellIndexToString() const;
- QString unitToString() const;
+ QString unitToString(bool hideRaw = true) const;
QString precToString() const;
int getMask() const;
QString paramsToString(const ModelData * model) const;
@@ -203,7 +203,7 @@ class SensorData {
static QString typeToString(const int value);
static QString formulaToString(const int value);
static QString cellIndexToString(const int value);
- static QString unitToString(const int value);
+ static QString unitToString(const int value, bool hideRaw = true);
static QString precToString(const int value);
static bool isRssiSensorAvailable(const ModelData * model, const int value);
static QString rssiSensorToString(const ModelData * model, const int value);
diff --git a/companion/src/translations/companion_fr.ts b/companion/src/translations/companion_fr.ts
index 2a6eea996..0ece144ea 100644
--- a/companion/src/translations/companion_fr.ts
+++ b/companion/src/translations/companion_fr.ts
@@ -1631,7 +1631,7 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
Trainer Sticks
- Manches Écolage
+ Écolage Manches
@@ -1656,7 +1656,7 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
Trainer Channels
- Écolage Channels
+ Écolage Canaux
@@ -2233,7 +2233,7 @@ Si vous avez un fichier de sauvegarde des paramètres, vous pouvez l'import
OpenTX ne supporte pas cette fonction sur cette carte
-
+
OpenTX doesn't accept this radio protocol
OpenTX ne supporte pas ce protocole radio
@@ -8975,28 +8975,33 @@ Mixage actif par défaut si non-renseigné.
Maître/Multi
-
+
Disable Telemetry
Désactiver la télémétrie
-
+
+ Racing Mode
+ Mode Course/Racing
+
+
+
Disable Ch. Map
Désactiver "Mapping" des VOIES
-
+
Show values in:
Afficher les valeurs en:
-
+
%
abbreviation for percent
-
+
μs
abbreviation for microseconds
@@ -9084,7 +9089,7 @@ Mixage actif par défaut si non-renseigné.
ID d'enregistrement
-
+
Failsafe Positions
Positions Failsafe
@@ -9137,100 +9142,100 @@ Mixage actif par défaut si non-renseigné.
Négative
-
+
Trainer Port
Port écolage
-
+
Internal Radio System
Module HF interne
-
+
External Radio Module
Module HF externe
-
+
Extra Radio System
Module HF supplémentaire
-
+
Radio System
Module HF
-
+
10mW - 16CH
10mW - 16 VOIES
-
-
+
+
100mW - 16CH
100mW - 16 VOIES
-
+
500mW - 16CH
500mW - 16 VOIES
-
+
Auto <= 1W - 16CH
Auto <= 1W - 16 VOIES
-
-
+
+
25mW - 8CH
25mW - 8 VOIES
-
-
+
+
25mW - 16CH
25mW - 16 VOIES
-
+
200mW - 16CH (no telemetry)
200mW - 16 VOIES (pas de télémétrie)
-
+
500mW - 16CH (no telemetry)
500mW - 16 VOIES (pas de télémétrie)
-
+
100mW - 16CH (no telemetry)
100mW - 16 VOIES (pas de télémétrie)
-
+
25 mW
-
+
100 mW
-
+
500 mW
-
+
1 W
-
+
2 W
@@ -9238,42 +9243,42 @@ Mixage actif par défaut si non-renseigné.
ModulePanel
-
+
Value
Valeur
-
+
Hold
Maintien
-
+
No Pulse
Pas d'impulsion
-
+
Ask
Demander
-
+
Internal
Interne
-
+
Internal + External
Interne + Externe
-
+
External
Externe
-
+
Bind on channel
Bind avec VOIE
@@ -11031,87 +11036,87 @@ Si cette option est cochée, la voie des gaz est inversée: le ralenti est &apo
SetupPanel
-
+
Popup menu available
Menu contextuel disponible
-
+
Timer %1
Chrono %1
-
+
Profile Settings
Paramètres du profil
-
+
SD structure path not specified or invalid
Chemin de la structure SD non spécifié ou invalide
-
+
Copy
Copier
-
+
Cut
Couper
-
+
Paste
Coller
-
+
Clear
Effacer
-
+
Insert
Insérer
-
+
Delete
Supprimer
-
+
Move Up
Monter
-
+
Move Down
Descendre
-
+
Clear All
Effacer Tout
-
+
Clear Timer. Are you sure?
Effacer le Chrono. Êtes-vous sûr?
-
+
Clear all Timers. Are you sure?
Effacer tous les Chronos. Êtes-vous sûr?
-
+
Cut Timer. Are you sure?
Couper le Chrono. Êtes-vous sûr?
-
+
Delete Timer. Are you sure?
Supprimer le Chrono. Êtes-vous sûr?
diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp
index 700bf535a..d83765ce8 100644
--- a/radio/src/telemetry/telemetry.cpp
+++ b/radio/src/telemetry/telemetry.cpp
@@ -398,7 +398,7 @@ ModuleSyncStatus::ModuleSyncStatus()
memset(this, 0, sizeof(ModuleSyncStatus));
}
-void ModuleSyncStatus::update(uint16_t newRefreshRate, uint16_t newInputLag)
+void ModuleSyncStatus::update(uint16_t newRefreshRate, int16_t newInputLag)
{
if (!newRefreshRate)
return;
@@ -449,13 +449,12 @@ void ModuleSyncStatus::getRefreshString(char * statusText)
char * tmp = statusText;
#if defined(DEBUG)
*tmp++ = 'L';
- tmp = strAppendUnsigned(tmp, inputLag, 5);
- tmp = strAppend(tmp, "us R ");
- tmp = strAppendUnsigned(tmp, (uint32_t) (refreshRate / 1000), 5);
- tmp = strAppend(tmp, "us");
+ tmp = strAppendSigned(tmp, inputLag, 5);
+ tmp = strAppend(tmp, "R");
+ tmp = strAppendUnsigned(tmp, refreshRate, 5);
#else
- tmp = strAppend(tmp, "Sync at ");
- tmp = strAppendUnsigned(tmp, (uint32_t) (refreshRate / 1000000));
- tmp = strAppend(tmp, " ms");
+ tmp = strAppend(tmp, "Sync ");
+ tmp = strAppendUnsigned(tmp, refreshRate);
#endif
+ tmp = strAppend(tmp, "us");
}
diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h
index c70cc5fb9..1189443ba 100644
--- a/radio/src/telemetry/telemetry.h
+++ b/radio/src/telemetry/telemetry.h
@@ -306,7 +306,7 @@ struct ModuleSyncStatus
}
// Set feedback from RF module
- void update(uint16_t newRefreshRate, uint16_t newInputLag);
+ void update(uint16_t newRefreshRate, int16_t newInputLag);
// Get computed settings for scheduler
uint16_t getAdjustedRefreshRate();