diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index 0fdbb235f..ff52b081d 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -217,6 +217,10 @@ void processResetFrame(uint8_t module, const uint8_t * frame) void processTelemetryFrame(uint8_t module, const uint8_t * frame) { + for (uint8_t i = 0; i < 1 + frame[0]; i++) { + telemetryMirrorSend(frame[i]); + } + uint8_t origin = (module << 2) + (frame[3] & 0x03); if (origin != TELEMETRY_ENDPOINT_SPORT) { sportProcessTelemetryPacketWithoutCrc(origin, &frame[4]); diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 37dfc374d..c2d577359 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -108,8 +108,6 @@ void telemetryMirrorSend(uint8_t data) void processTelemetryData(uint8_t data) { - telemetryMirrorSend(data); - #if defined(CROSSFIRE) if (telemetryProtocol == PROTOCOL_TELEMETRY_CROSSFIRE) { processCrossfireTelemetryData(data, EXTERNAL_MODULE); @@ -208,6 +206,7 @@ static inline void pollIntTelemetry(void (*processData)(uint8_t,uint8_t)) if (intmoduleFifo.pop(data)) { LOG_TELEMETRY_WRITE_START(); do { + telemetryMirrorSend(data); processData(data, INTERNAL_MODULE); LOG_TELEMETRY_WRITE_BYTE(data); } while (intmoduleFifo.pop(data)); @@ -250,6 +249,7 @@ static void pollExtTelemetry() if (telemetryGetByte(&data)) { LOG_TELEMETRY_WRITE_START(); do { + telemetryMirrorSend(data); processTelemetryData(data); LOG_TELEMETRY_WRITE_BYTE(data); } while (telemetryGetByte(&data));