diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp index e88878e7f..2c5e8e496 100644 --- a/radio/src/gui/128x64/model_telemetry.cpp +++ b/radio/src/gui/128x64/model_telemetry.cpp @@ -675,6 +675,13 @@ void menuModelTelemetryFrsky(event_t event) #endif case ITEM_TELEMETRY_RSSI_LABEL: +#if defined(MULTIMODULE) + if (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && + g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && + g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + lcdDrawTextAlignedLeft(y, PSTR("RSNR")); + else +#endif lcdDrawTextAlignedLeft(y, PSTR("RSSI")); break; diff --git a/radio/src/gui/212x64/model_telemetry.cpp b/radio/src/gui/212x64/model_telemetry.cpp index 83cd82200..bd09feea7 100644 --- a/radio/src/gui/212x64/model_telemetry.cpp +++ b/radio/src/gui/212x64/model_telemetry.cpp @@ -514,6 +514,13 @@ void menuModelTelemetryFrsky(event_t event) break; case ITEM_TELEMETRY_RSSI_LABEL: +#if defined(MULTIMODULE) + if (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && + g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && + g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + lcdDrawTextAlignedLeft(y, PSTR("RSNR")); + else +#endif lcdDrawTextAlignedLeft(y, PSTR("RSSI")); break; diff --git a/radio/src/gui/480x272/model_telemetry.cpp b/radio/src/gui/480x272/model_telemetry.cpp index 80e7c76e7..fbef48adc 100644 --- a/radio/src/gui/480x272/model_telemetry.cpp +++ b/radio/src/gui/480x272/model_telemetry.cpp @@ -521,6 +521,13 @@ bool menuModelTelemetryFrsky(event_t event) break; case ITEM_TELEMETRY_RSSI_LABEL: +#if defined(MULTIMODULE) + if (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && + g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && + g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false) == MM_RF_PROTO_FS_AFHDS2A) + lcdDrawText(y, PSTR("RSNR")); + else +#endif lcdDrawText(MENUS_MARGIN_LEFT, y, PSTR("RSSI")); break; diff --git a/radio/src/telemetry/flysky_ibus.cpp b/radio/src/telemetry/flysky_ibus.cpp index 749e3a6bf..ac479a186 100644 --- a/radio/src/telemetry/flysky_ibus.cpp +++ b/radio/src/telemetry/flysky_ibus.cpp @@ -35,8 +35,6 @@ #define FLYSKY_TELEMETRY_LENGTH (2+7*4) -#define TX_RSSI_ID 300 // Pseudo id outside 1 byte range of FlySky sensors -#define FS_ID_RSSI 0x7c struct FlySkySensor { const uint16_t id; @@ -45,26 +43,32 @@ struct FlySkySensor { const uint8_t precision; }; - +#define TX_RSSI_ID 300 // Pseudo id outside 1 byte range of FlySky sensors +#define FS_ID_TEMP 0x01 +#define FS_ID_SNR 0xfa +#define FS_ID_NOISE 0xfb +#define FS_ID_RSSI 0xfc const FlySkySensor flySkySensors[] = { // RX Voltage (remapped, really 0x0) {0x100, ZSTR_A1, UNIT_VOLTS, 2}, // Temperature - {0x01, ZSTR_TEMP1, UNIT_CELSIUS, 1}, + {FS_ID_TEMP, ZSTR_TEMP1, UNIT_CELSIUS, 1}, // RPM {0x02, ZSTR_RPM, UNIT_RAW, 0}, // External voltage {0x03, ZSTR_A3, UNIT_VOLTS, 1}, + // RX SNR + {FS_ID_SNR, ZSTR_RX_SNR, UNIT_DB, 0}, // RX Noise - {0xfb, ZSTR_RX_SNR, UNIT_DB, 0}, - // RX RSSI + {FS_ID_NOISE, ZSTR_RX_NOISE, UNIT_DB, 0}, + // RX RSSI (0xfc) {FS_ID_RSSI, ZSTR_RSSI, UNIT_DB, 0}, // RX error rate {0xfe, ZSTR_RX_QUALITY, UNIT_RAW, 1}, - // 0xff is an used sensor slot) - // Pseud sensor for TRSSI + // 0xff is an unused sensor slot + // Pseudo sensor for TRSSI {TX_RSSI_ID, ZSTR_TX_RSSI, UNIT_RAW, 0}, // sentinel {0x00, NULL, UNIT_RAW, 0}, @@ -74,7 +78,7 @@ static void processFlySkySensor(const uint8_t *packet) { uint16_t id = packet[0]; const uint8_t instance = packet[1]; - const int32_t value = (packet[3] << 8) + packet[2]; + int32_t value = (packet[3] << 8) + packet[2]; if (id == 0xff) { // No sensor @@ -86,13 +90,19 @@ static void processFlySkySensor(const uint8_t *packet) id = 0x100; } - if (id == FS_ID_RSSI) { + if (id == FS_ID_SNR) { telemetryData.rssi.set(value); } for (const FlySkySensor * sensor = flySkySensors; sensor->id; sensor++) { // Extract value, skip header if (sensor->id == id) { + // The Noise and Signal sensors that are specified in dB send the absolute value + if (id == FS_ID_NOISE || id == FS_ID_RSSI) + value = -value; + else if (id == FS_ID_TEMP) + // Temperature sensors have 40 degree offset + value -= 40; setTelemetryValue(TELEM_PROTO_FLYSKY_IBUS, id, 0, instance, value, sensor->unit, sensor->precision); return; } diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 7fccefacc..658d09436 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1347,12 +1347,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 7401087f0..fb3bf403e 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1347,12 +1347,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 91fc81ef2..f2477f84c 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1318,12 +1318,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index f5ddb1278..bda5262e2 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1288,12 +1288,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index a65bd2562..a767253f9 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1282,12 +1282,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index d4d5138b9..907e09381 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1320,12 +1320,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index f1cd02653..2bab34803 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1324,12 +1324,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 762c02444..1e13b201a 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -1328,12 +1328,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index bfe3a3375..ff0dd9c94 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1326,12 +1326,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index aa1a37851..9c7917b94 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1283,12 +1283,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 4fd64bf4f..323066b5e 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1342,12 +1342,14 @@ #define ZSTR_RX_RSSI2 "2RSS" #define ZSTR_RX_QUALITY "RQly" #define ZSTR_RX_SNR "RSNR" +#define ZSTR_RX_NOISE "RNse" #define ZSTR_ANTENNA "ANT" #define ZSTR_RF_MODE "RFMD" #define ZSTR_TX_POWER "TPWR" #define ZSTR_TX_RSSI "TRSS" #define ZSTR_TX_QUALITY "TQly" #define ZSTR_TX_SNR "TSNR" +#define ZSTR_TX_NOISE "TNse" #define ZSTR_PITCH "Ptch" #define ZSTR_ROLL "Roll" #define ZSTR_YAW "Yaw"