[FlySky IBUS] Fix some sensor interpretation (#4077)
Also use SNR instead RSSI for FlySky since SNR gives a better indication of signal quality and also our current implementation of RSSI warning cannot really handle negative values
This commit is contained in:
committed by
Bertrand Songis
parent
ee1f6e5bdc
commit
7a8f8d611e
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user