diff --git a/radio/src/telemetry/crossfire.cpp b/radio/src/telemetry/crossfire.cpp index 4f3ba0353..3d40dc2f0 100644 --- a/radio/src/telemetry/crossfire.cpp +++ b/radio/src/telemetry/crossfire.cpp @@ -141,9 +141,14 @@ void processCrossfireTelemetryFrame() processCrossfireTelemetryValue(GPS_SATELLITES_INDEX, value); break; case LINK_ID: + telemetryStreaming = TELEMETRY_TIMEOUT10ms; for (int i=0; i<10; i++) { - if (getCrossfireTelemetryValue<1>(3+i, value)) + if (getCrossfireTelemetryValue<1>(3+i, value)) { processCrossfireTelemetryValue(i, value); + if (i == 2) { + telemetryData.rssi.set(value); + } + } } break; case BATTERY_ID: diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 3c98da665..1aa10394c 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -28,7 +28,6 @@ #define FRSKY_SPORT_PACKET_SIZE 9 -#define FRSKY_TIMEOUT10ms 100 // 1 second #define WSHH_TIMEOUT10ms 60 // 600ms #define FRSKY_SPORT_AVERAGING 4 diff --git a/radio/src/telemetry/frsky_d.cpp b/radio/src/telemetry/frsky_d.cpp index 98adf0a3d..dd3e9db11 100644 --- a/radio/src/telemetry/frsky_d.cpp +++ b/radio/src/telemetry/frsky_d.cpp @@ -246,7 +246,7 @@ void frskyDProcessPacket(uint8_t *packet) telemetryData.analog[TELEM_ANA_A2].set(packet[2], g_model.frsky.channels[TELEM_ANA_A2].type); telemetryData.rssi[0].set(packet[3]); telemetryData.rssi[1].set(packet[4] / 2); - telemetryStreaming = FRSKY_TIMEOUT10ms; // reset counter only if valid frsky packets are being detected + telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected link_counter += 256 / FRSKY_D_AVERAGING; #if defined(VARIO) uint8_t varioSource = g_model.frsky.varioSource - VARIO_SOURCE_A1; diff --git a/radio/src/telemetry/frsky_d_arm.cpp b/radio/src/telemetry/frsky_d_arm.cpp index da5b5071d..b982abeb4 100644 --- a/radio/src/telemetry/frsky_d_arm.cpp +++ b/radio/src/telemetry/frsky_d_arm.cpp @@ -74,7 +74,7 @@ void frskyDProcessPacket(uint8_t *packet) setTelemetryValue(TELEM_PROTO_FRSKY_D, D_A2_ID, 0, 0, packet[2], UNIT_VOLTS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_D, D_RSSI_ID, 0, 0, packet[3], UNIT_RAW, 0); telemetryData.rssi.set(packet[3]); - telemetryStreaming = FRSKY_TIMEOUT10ms; // reset counter only if valid frsky packets are being detected + telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected break; } diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 695f21b00..27d19c87d 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -213,7 +213,7 @@ void processSportPacket(uint8_t * packet) uint32_t data = SPORT_DATA_S32(packet); if (id == RSSI_ID) { - telemetryStreaming = FRSKY_TIMEOUT10ms; // reset counter only if valid frsky packets are being detected + telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected data = SPORT_DATA_U8(packet); if (data == 0) telemetryData.rssi.reset(); diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index d14f4f0e7..dcb9ddc8b 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -59,7 +59,9 @@ enum TelemetryStates { extern uint8_t telemetryState; #endif -#define TELEMETRY_RX_PACKET_SIZE 19 // 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1) +#define TELEMETRY_TIMEOUT10ms 100 // 1 second +#define TELEMETRY_RX_PACKET_SIZE 19 // 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1) + extern uint8_t telemetryRxBuffer[TELEMETRY_RX_PACKET_SIZE]; extern uint8_t telemetryRxBufferCount; @@ -68,7 +70,6 @@ extern uint8_t telemetryRxBufferCount; #define TELEMETRY_VALUE_OLD_THRESHOLD 150 /*15 seconds*/ #define TELEMETRY_VALUE_UNAVAILABLE 255 #define TELEMETRY_VALUE_OLD 254 - #define TELEMETRY_AVERAGE_COUNT 3 enum {