From 29a139559d2af070a8dcc11ebab313e6a07e2865 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Thu, 19 May 2016 06:30:19 +0200 Subject: [PATCH] =?UTF-8?q?Re=20#2999:=20More=20strict=20SBUS=20frame=20ch?= =?UTF-8?q?eck=20(only=20allow=2025=20byte=20frames,=20ch=E2=80=A6=20(#350?= =?UTF-8?q?1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Re #2999: More strict SBUS frame check (only allow 25 byte frames, check end byte) * SBUS fixes --- radio/src/sbus.cpp | 37 ++++++++++++++++--------------------- radio/src/sbus.h | 3 +-- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/radio/src/sbus.cpp b/radio/src/sbus.cpp index f2cddc188..575e5dfa6 100644 --- a/radio/src/sbus.cpp +++ b/radio/src/sbus.cpp @@ -24,40 +24,31 @@ #define SBUS_FRAME_GAP_DELAY 1000 // 500uS #define SBUS_START_BYTE 0x0F +#define SBUS_END_BYTE 0x00 #define SBUS_FLAGS_IDX 23 #define SBUS_FRAMELOST_BIT 2 #define SBUS_FAILSAFE_BIT 3 -#define SBUS_CH_BITS 11 -#define SBUS_CH_MASK ((1< SBUS_FLAGS_IDX && ((sbus[SBUS_FLAGS_IDX] & (1< SBUS_MAX_FRAME_SIZE-1) { - SbusIndex = SBUS_MAX_FRAME_SIZE-1; + if (SbusIndex > SBUS_FRAME_SIZE-1) { + SbusIndex = SBUS_FRAME_SIZE-1; } + SbusFrame[SbusIndex++] = rxchar; } if (active) { SbusTimer = getTmr2MHz(); diff --git a/radio/src/sbus.h b/radio/src/sbus.h index 5ef7359a5..f9ea5c325 100644 --- a/radio/src/sbus.h +++ b/radio/src/sbus.h @@ -22,8 +22,7 @@ #define _SBUS_H_ #define SBUS_BAUDRATE 100000 -#define SBUS_MIN_FRAME_SIZE 23 -#define SBUS_MAX_FRAME_SIZE 28 +#define SBUS_FRAME_SIZE 25 void processSbusInput();