Support 16 channel SBus receivers.

Tested with FrSky X4RSB and Taranis+.

See also: https://github.com/opentx/opentx/issues/1701
This commit is contained in:
Dominic Clifton 2014-11-08 01:12:51 +00:00
parent 2461973dd6
commit 0f10855837
1 changed files with 10 additions and 2 deletions

View File

@ -35,7 +35,7 @@
#include "rx/rx.h"
#include "rx/sbus.h"
#define SBUS_MAX_CHANNEL 12
#define SBUS_MAX_CHANNEL 16
#define SBUS_FRAME_SIZE 25
#define SBUS_SYNCBYTE 0x0F
#define SBUS_OFFSET 988
@ -85,6 +85,10 @@ struct sbus_dat {
unsigned int chan9 : 11;
unsigned int chan10 : 11;
unsigned int chan11 : 11;
unsigned int chan12 : 11;
unsigned int chan13 : 11;
unsigned int chan14 : 11;
unsigned int chan15 : 11;
} __attribute__ ((__packed__));
typedef union {
@ -127,7 +131,7 @@ bool sbusFrameComplete(void)
return false;
}
sbusFrameDone = false;
if ((sbus.in[22] >> 3) & 0x0001) {
if ((sbus.in[SBUS_FRAME_SIZE - 3] >> 3) & 0x0001) {
// internal failsafe enabled and rx failsafe flag set
return false;
}
@ -143,6 +147,10 @@ bool sbusFrameComplete(void)
sbusChannelData[9] = sbus.msg.chan9;
sbusChannelData[10] = sbus.msg.chan10;
sbusChannelData[11] = sbus.msg.chan11;
sbusChannelData[12] = sbus.msg.chan12;
sbusChannelData[13] = sbus.msg.chan13;
sbusChannelData[14] = sbus.msg.chan14;
sbusChannelData[15] = sbus.msg.chan15;
return true;
}