Skip to content

File syn_sbus.h

File List > proto > syn_sbus.h

Go to the documentation of this file

#ifndef SYN_SBUS_H
#define SYN_SBUS_H

#ifdef __cplusplus
extern "C" {
#endif

#include "syntropic/common/syn_defs.h"

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

#define SYN_SBUS_NUM_CHANNELS 16 
#define SYN_SBUS_FRAME_SIZE 25   
#define SYN_SBUS_HEADER 0x0FU    
typedef struct {
    uint16_t channels[SYN_SBUS_NUM_CHANNELS]; 
    bool ch17;                                
    bool ch18;                                
    bool frame_loss;                          
    bool failsafe;                            
} SYN_SBUS_Frame;

typedef struct {
    uint8_t buf[SYN_SBUS_FRAME_SIZE]; 
    uint8_t idx;                      
    uint32_t frames_received;         
    uint32_t frame_loss_count;        
    uint32_t failsafe_count;          
    SYN_SBUS_Frame last_frame;        
} SYN_SBUS_Parser;

SYN_Status syn_sbus_init(SYN_SBUS_Parser *parser);

SYN_Status syn_sbus_parse_byte(SYN_SBUS_Parser *parser, uint8_t byte, SYN_SBUS_Frame *frame);

SYN_Status syn_sbus_decode_buffer(const uint8_t buf[SYN_SBUS_FRAME_SIZE], SYN_SBUS_Frame *frame);

uint16_t syn_sbus_raw_to_us(uint16_t raw_val);

#ifdef __cplusplus
}
#endif

#endif /* SYN_SBUS_H */