From da5be59ff29da629a8b8a79da44cebd541c6f1b7 Mon Sep 17 00:00:00 2001 From: mikeller Date: Sun, 8 Mar 2020 18:21:45 +1300 Subject: [PATCH] Switched SBus to use the generic last frame time function. --- src/main/rx/sbus.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/rx/sbus.c b/src/main/rx/sbus.c index eb615e010..709004e36 100644 --- a/src/main/rx/sbus.c +++ b/src/main/rx/sbus.c @@ -103,7 +103,7 @@ typedef union sbusFrame_u { typedef struct sbusFrameData_s { sbusFrame_t frame; - uint32_t startAtUs; + timeUs_t startAtUs; uint8_t position; bool done; } sbusFrameData_t; @@ -135,7 +135,6 @@ static void sbusDataReceive(uint16_t c, void *data) if (sbusFrameData->position < SBUS_FRAME_SIZE) { sbusFrameData->done = false; } else { - lastRcFrameTimeUs = nowUs; sbusFrameData->done = true; DEBUG_SET(DEBUG_SBUS, DEBUG_SBUS_FRAME_TIME, sbusFrameTime); } @@ -154,17 +153,16 @@ static uint8_t sbusFrameStatus(rxRuntimeState_t *rxRuntimeState) const uint8_t frameStatus = sbusChannelsDecode(rxRuntimeState, &sbusFrameData->frame.frame.channels); - if (frameStatus != RX_FRAME_COMPLETE) { - lastRcFrameTimeUs = 0; // We received a frame but it wasn't valid new channel data + if (!(frameStatus & (RX_FRAME_FAILSAFE | RX_FRAME_DROPPED))) { + lastRcFrameTimeUs = sbusFrameData->startAtUs; } + return frameStatus; } -static timeUs_t sbusFrameTimeUsOrZeroFn(void) +static timeUs_t sbusFrameTimeUs(void) { - const timeUs_t result = lastRcFrameTimeUs; - lastRcFrameTimeUs = 0; - return result; + return lastRcFrameTimeUs; } bool sbusInit(const rxConfig_t *rxConfig, rxRuntimeState_t *rxRuntimeState) @@ -188,7 +186,7 @@ bool sbusInit(const rxConfig_t *rxConfig, rxRuntimeState_t *rxRuntimeState) } rxRuntimeState->rcFrameStatusFn = sbusFrameStatus; - rxRuntimeState->rcFrameTimeUsOrZeroFn = sbusFrameTimeUsOrZeroFn; + rxRuntimeState->rcFrameTimeUsFn = sbusFrameTimeUs; const serialPortConfig_t *portConfig = findSerialPortConfig(FUNCTION_RX_SERIAL); if (!portConfig) { -- 2.11.4.GIT