diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 9c03dfca9..f75858337 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -148,7 +148,7 @@ void sportProcessTelemetryPacket(const uint8_t * packet) if (primId == DATA_FRAME) { uint8_t instance = physicalId + 1; - if (id == RSSI_ID) { + if (id == RSSI_ID && isValidIdAndInstance(RSSI_ID, instance)) { telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected data = SPORT_DATA_U8(packet); if (data == 0) diff --git a/radio/src/telemetry/telemetry_sensors.cpp b/radio/src/telemetry/telemetry_sensors.cpp index 36330f4fa..049f3742a 100644 --- a/radio/src/telemetry/telemetry_sensors.cpp +++ b/radio/src/telemetry/telemetry_sensors.cpp @@ -28,7 +28,7 @@ bool isFaiForbidden(source_t idx) if (idx < MIXSRC_FIRST_TELEM) { return false; } - + TelemetrySensor * sensor = &g_model.telemetrySensors[(idx-MIXSRC_FIRST_TELEM)/3]; switch (telemetryProtocol) { @@ -479,6 +479,26 @@ int lastUsedTelemetryIndex() return -1; } +bool isValidIdAndInstance(uint16_t id, uint8_t instance) +{ + bool sensorFound = false; + + for (int index=0; index