From 064a196c0666982cfab34851c802bb8022c49b61 Mon Sep 17 00:00:00 2001 From: Anders Hoglund Date: Mon, 8 Oct 2018 12:45:01 +0200 Subject: [PATCH] Spektrum SRXL Telemetry tidying. --- src/main/rx/spektrum.c | 24 +++++++++++------------- src/main/rx/spektrum.h | 1 + src/main/telemetry/srxl.c | 16 +++------------- 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/main/rx/spektrum.c b/src/main/rx/spektrum.c index bd0fcabe6..fea09e78c 100644 --- a/src/main/rx/spektrum.c +++ b/src/main/rx/spektrum.c @@ -150,24 +150,15 @@ static uint8_t spektrumFrameStatus(rxRuntimeConfig_t *rxRuntimeConfig) } #if defined(USE_TELEMETRY) && defined(USE_TELEMETRY_SRXL) - if (srxlEnabled) { - if (telemetryBufLen) { - if ((spekFrame[2] & 0x80) == 0) { + if (srxlEnabled && (spekFrame[2] & 0x80) == 0) { telemetryFrameRequestedUs = currentTimeUs; - } - } - else { - // Trigger tm data collection if buffer is empty. - srxlCollectTelemetryNow(); - } } #endif - result = RX_FRAME_COMPLETE; } #if defined(USE_TELEMETRY) && defined(USE_TELEMETRY_SRXL) - if (telemetryFrameRequestedUs && cmpTimeUs(currentTimeUs, telemetryFrameRequestedUs) >= SPEKTRUM_TELEMETRY_FRAME_DELAY_US) { + if (telemetryBufLen && telemetryFrameRequestedUs && cmpTimeUs(currentTimeUs, telemetryFrameRequestedUs) >= SPEKTRUM_TELEMETRY_FRAME_DELAY_US) { telemetryFrameRequestedUs = 0; result = (result & ~RX_FRAME_PENDING) | RX_FRAME_PROCESSING_REQUIRED; @@ -324,13 +315,20 @@ static bool spektrumProcessFrame(const rxRuntimeConfig_t *rxRuntimeConfig) if (telemetryBufLen > 0) { serialWriteBuf(serialPort, telemetryBuf, telemetryBufLen); telemetryBufLen = 0; // reset telemetry buffer - - srxlCollectTelemetryNow(); } return true; } +bool srxlTelemetryBufferEmpty() +{ + if (telemetryBufLen == 0) { + return true; + } else { + return false; + } +} + void srxlRxWriteTelemetryData(const void *data, int len) { len = MIN(len, (int)sizeof(telemetryBuf)); diff --git a/src/main/rx/spektrum.h b/src/main/rx/spektrum.h index ae9f84f54..ed41c8b14 100644 --- a/src/main/rx/spektrum.h +++ b/src/main/rx/spektrum.h @@ -51,5 +51,6 @@ extern uint8_t rssi_channel; // Stores the RX RSSI channel. void spektrumBind(rxConfig_t *rxConfig); bool spektrumInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig); +bool srxlTelemetryBufferEmpty(); void srxlRxWriteTelemetryData(const void *data, int len); bool srxlRxIsActive(void); diff --git a/src/main/telemetry/srxl.c b/src/main/telemetry/srxl.c index 5e60b3fbd..119a2e918 100644 --- a/src/main/telemetry/srxl.c +++ b/src/main/telemetry/srxl.c @@ -76,13 +76,6 @@ static bool srxlTelemetryEnabled; static uint8_t srxlFrame[SRXL_FRAME_SIZE_MAX]; -static bool srxlTelemetryNow = false; - -void srxlCollectTelemetryNow(void) -{ - srxlTelemetryNow = true; -} - static void srxlInitializeFrame(sbuf_t *dst) { @@ -517,11 +510,8 @@ bool checkSrxlTelemetryState(void) */ void handleSrxlTelemetry(timeUs_t currentTimeUs) { - if (!srxlTelemetryNow) { - return; - } - - srxlTelemetryNow = false; - processSrxl(currentTimeUs); + if (srxlTelemetryBufferEmpty()) { + processSrxl(currentTimeUs); + } } #endif