diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-01-24 08:56:26 -0800 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-01-24 08:56:26 -0800 |
commit | 8f67307aed50ddb0f0b56fac95b9145651b8de44 (patch) | |
tree | 7d25e31ce6f3a687302c47a7a22b6e6dba1a3614 | |
parent | d8c1131f1e8e61bcb15b0faa36de1bba00e9716d (diff) | |
parent | 8bdbce5fe2893353bf9582294c28ab2831f96a9d (diff) | |
download | px4-firmware-8f67307aed50ddb0f0b56fac95b9145651b8de44.tar.gz px4-firmware-8f67307aed50ddb0f0b56fac95b9145651b8de44.tar.bz2 px4-firmware-8f67307aed50ddb0f0b56fac95b9145651b8de44.zip |
Merge pull request #606 from PX4/sbus2
Sbus2
-rw-r--r-- | src/modules/px4iofirmware/sbus.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/modules/px4iofirmware/sbus.c b/src/modules/px4iofirmware/sbus.c index 11ccd7356..495447740 100644 --- a/src/modules/px4iofirmware/sbus.c +++ b/src/modules/px4iofirmware/sbus.c @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (C) 2012 PX4 Development Team. All rights reserved. + * Copyright (c) 2012-2014 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -218,11 +218,33 @@ static bool sbus_decode(hrt_abstime frame_time, uint16_t *values, uint16_t *num_values, uint16_t *rssi, uint16_t max_values) { /* check frame boundary markers to avoid out-of-sync cases */ - if ((frame[0] != 0x0f) || (frame[24] != 0x00)) { + if ((frame[0] != 0x0f)) { sbus_frame_drops++; return false; } + switch (frame[24]) { + case 0x00: + /* this is S.BUS 1 */ + break; + case 0x03: + /* S.BUS 2 SLOT0: RX battery and external voltage */ + break; + case 0x83: + /* S.BUS 2 SLOT1 */ + break; + case 0x43: + case 0xC3: + case 0x23: + case 0xA3: + case 0x63: + case 0xE3: + break; + default: + /* we expect one of the bits above, but there are some we don't know yet */ + break; + } + /* we have received something we think is a frame */ last_frame_time = frame_time; |