Firmware
Macros | Typedefs | Functions
sbus.h File Reference

RC protocol definition for S.BUS. More...

#include <stdint.h>
#include <stdbool.h>

Go to the source code of this file.

Macros

#define SBUS_FRAME_SIZE   25
 
#define SBUS_BUFFER_SIZE   (SBUS_FRAME_SIZE + SBUS_FRAME_SIZE / 2)
 

Typedefs

typedef uint8_t sbus_frame_t[SBUS_FRAME_SIZE+(SBUS_FRAME_SIZE/2)]
 

Functions

__EXPORT int sbus_init (const char *device, bool singlewire)
 
__EXPORT int sbus_config (int sbus_fd, bool singlewire)
 Parse serial bytes on the S.BUS bus. More...
 
__EXPORT bool sbus_input (int sbus_fd, uint16_t *values, uint16_t *num_values, bool *sbus_failsafe, bool *sbus_frame_drop, uint16_t max_channels)
 
__EXPORT bool sbus_parse (uint64_t now, uint8_t *frame, unsigned len, uint16_t *values, uint16_t *num_values, bool *sbus_failsafe, bool *sbus_frame_drop, unsigned *frame_drops, uint16_t max_channels)
 
__EXPORT void sbus1_output (int sbus_fd, uint16_t *values, uint16_t num_values)
 
__EXPORT void sbus2_output (int sbus_fd, uint16_t *values, uint16_t num_values)
 
__EXPORT void sbus1_set_output_rate_hz (uint16_t rate_hz)
 
__EXPORT unsigned sbus_dropped_frames (void)
 The number of incomplete frames we encountered.
 

Detailed Description

RC protocol definition for S.BUS.

Author
Lorenz Meier loren.nosp@m.z@px.nosp@m.4.io

Function Documentation

§ sbus_config()

__EXPORT int sbus_config ( int  sbus_fd,
bool  singlewire 
)

Parse serial bytes on the S.BUS bus.

The S.bus protocol doesn't provide reliable framing, so we detect frame boundaries by the inter-frame delay.

The minimum frame spacing is 7ms; with 25 bytes at 100000bps frame transmission time is ~2ms.

If an interval of more than 4ms (7 ms frame spacing plus margin) passes between calls, the first byte we read will be the first byte of a frame.

In the case where byte(s) are dropped from a frame, this also provides a degree of protection. Of course, it would be better if we didn't drop bytes...