From 50c7a8b5db696d30ff1648bde075ef1b7b67d7db Mon Sep 17 00:00:00 2001 From: "bsongis@gmail.com" Date: Sun, 14 Jul 2013 18:32:00 +0000 Subject: [PATCH] =?UTF-8?q?[Taranis]=20frsky=5Fsport=20kept=20as=20before?= =?UTF-8?q?=20with=20the=20fix=20from=20Andr=C3=A9!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/telemetry/frsky_sport.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/telemetry/frsky_sport.cpp b/src/telemetry/frsky_sport.cpp index 285ee7fef..27ae03535 100644 --- a/src/telemetry/frsky_sport.cpp +++ b/src/telemetry/frsky_sport.cpp @@ -38,6 +38,7 @@ #define START_STOP 0x7e #define BYTESTUFF 0x7d +#define STUFF_MASK 0x20 // FrSky PRIM IDs (1 byte) #define DATA_FRAME 0x10 @@ -123,7 +124,8 @@ uint8_t frskyTxBufferCount = 0; uint8_t link_counter = 0; FrskyData frskyData; -#if defined(DEBUG) +#if defined(DEBUG) && !defined(SIMU) +#include "../fifo.h" extern FIL g_telemetryFile; Fifo<512> debugTelemetryFifo; #endif @@ -389,7 +391,7 @@ void processSportPacket(uint8_t *packet) enum FrSkyDataState { STATE_DATA_IDLE, STATE_DATA_IN_FRAME, - STATE_DATA_STUFF, + STATE_DATA_XOR, }; void processSerialData(uint8_t data) @@ -402,7 +404,7 @@ void processSerialData(uint8_t data) btPushByte(data); #endif -#if defined(DEBUG) +#if defined(DEBUG) && !defined(SIMU) debugTelemetryFifo.push(data); #endif @@ -412,17 +414,14 @@ void processSerialData(uint8_t data) } else { switch (dataState) { - case STATE_DATA_STUFF: - if (data == 0x5E) - frskyRxBuffer[numPktBytes++] = 0x7E; - else if (data == 0x5D) - frskyRxBuffer[numPktBytes++] = 0x7D; + case STATE_DATA_XOR: + frskyRxBuffer[numPktBytes++] = data ^ STUFF_MASK; dataState = STATE_DATA_IN_FRAME; break; case STATE_DATA_IN_FRAME: if (data == BYTESTUFF) - dataState = STATE_DATA_STUFF; + dataState = STATE_DATA_XOR; // XOR next byte else frskyRxBuffer[numPktBytes++] = data; break; @@ -508,7 +507,7 @@ void telemetryWakeup() varioWakeup(); #endif -#if defined(DEBUG) +#if defined(DEBUG) && !defined(SIMU) static tmr10ms_t lastTime = 0; tmr10ms_t newTime = get_tmr10ms(); uint8_t data;