Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
framed_ring_buffer.h File Reference
#include <stdint.h>
#include <stddef.h>
+ Include dependency graph for framed_ring_buffer.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  framed_ring_buffer
 This is a general purpose circular buffer for storing variable lenght buffers in a FIFO order. More...
 

Enumerations

enum  cir_error { CIR_ERROR_NO_MSG = -1 , CIR_ERROR_BUFFER_TOO_SMALL = -2 , CIR_ERROR_NO_SPACE_AVAILABLE = -3 , CIR_ERROR_LOCKED = -4 }
 

Functions

void framed_ring_buffer_init (struct framed_ring_buffer *cb, uint8_t *buffer, size_t len)
 initialize a circular buffer.
 
int framed_ring_buffer_get (struct framed_ring_buffer *cb, uint8_t *buf, size_t len)
 copy the next buffer available in cb to buf.
 
int framed_ring_buffer_put (struct framed_ring_buffer *cb, const uint8_t *buf, size_t len)
 Copy buf in the circular buffer.
 
int framed_ring_buffer_drop_last (struct framed_ring_buffer *cb)
 Drop last inserted record.
 
size_t framed_ring_buffer_available (struct framed_ring_buffer *cb)
 Get the available sapce for the next buffer.
 
void framed_ring_buffer_clear (struct framed_ring_buffer *cb)
 Clear buffer.
 

Data Structure Documentation

◆ framed_ring_buffer

struct framed_ring_buffer

This is a general purpose circular buffer for storing variable lenght buffers in a FIFO order.

Buffers length are stored as uint16_t.

Declare a framed_ring_buffer and allocate a buffer that will outlive it. Initialize the framed_ring_buffer using framed_ring_buffer_init.

Definition at line 23 of file framed_ring_buffer.h.

Data Fields
uint8_t * _buf
size_t _buf_len
size_t read_offset
size_t write_offset

Enumeration Type Documentation

◆ cir_error

Enumerator
CIR_ERROR_NO_MSG 

circular buffer is empty

CIR_ERROR_BUFFER_TOO_SMALL 

destination buffer is too small

CIR_ERROR_NO_SPACE_AVAILABLE 

no space available in the circular buffer

CIR_ERROR_LOCKED 

mutex locked

Definition at line 30 of file framed_ring_buffer.h.

Function Documentation

◆ framed_ring_buffer_available()

size_t framed_ring_buffer_available ( struct framed_ring_buffer cb)

Get the available sapce for the next buffer.

Definition at line 110 of file framed_ring_buffer.c.

References framed_ring_buffer::_buf_len, foo, framed_ring_buffer::read_offset, and framed_ring_buffer::write_offset.

Referenced by framed_ring_buffer_put().

+ Here is the caller graph for this function:

◆ framed_ring_buffer_clear()

void framed_ring_buffer_clear ( struct framed_ring_buffer cb)

Clear buffer.

Definition at line 122 of file framed_ring_buffer.c.

References framed_ring_buffer::read_offset, and framed_ring_buffer::write_offset.

◆ framed_ring_buffer_drop_last()

int framed_ring_buffer_drop_last ( struct framed_ring_buffer cb)

Drop last inserted record.

Definition at line 90 of file framed_ring_buffer.c.

References framed_ring_buffer::_buf, framed_ring_buffer::_buf_len, CIR_ERROR_NO_MSG, foo, framed_ring_buffer::read_offset, and framed_ring_buffer::write_offset.

Referenced by uavcan_broadcast().

+ Here is the caller graph for this function:

◆ framed_ring_buffer_get()

int framed_ring_buffer_get ( struct framed_ring_buffer cb,
uint8_t buf,
size_t  len 
)

copy the next buffer available in cb to buf.

Parameters
cbThe circular buffer
bufdestination buffer
lensize of buf
Returns
Size of the data copied to buf, or an error code if negative.

Definition at line 22 of file framed_ring_buffer.c.

References framed_ring_buffer::_buf, framed_ring_buffer::_buf_len, CIR_ERROR_BUFFER_TOO_SMALL, CIR_ERROR_NO_MSG, foo, framed_ring_buffer::read_offset, and framed_ring_buffer::write_offset.

Referenced by sts3032_event(), and uavcan_tx().

+ Here is the caller graph for this function:

◆ framed_ring_buffer_init()

void framed_ring_buffer_init ( struct framed_ring_buffer cb,
uint8_t buffer,
size_t  len 
)

initialize a circular buffer.

Parameters
cbframed_ring_buffer structure
bufferbuffer used internally by the framed ring buffer
lensize of buffer

Definition at line 13 of file framed_ring_buffer.c.

References framed_ring_buffer::_buf, framed_ring_buffer::_buf_len, framed_ring_buffer::read_offset, and framed_ring_buffer::write_offset.

Referenced by actuators_sts3032_init(), and uavcanInitIface().

+ Here is the caller graph for this function:

◆ framed_ring_buffer_put()

int framed_ring_buffer_put ( struct framed_ring_buffer cb,
const uint8_t buf,
size_t  len 
)

Copy buf in the circular buffer.

Parameters
cbThe circular buffer
bufsource buffer
lenSize of buf
Returns
0 on success, Error code if negative

Definition at line 52 of file framed_ring_buffer.c.

References framed_ring_buffer::_buf, framed_ring_buffer::_buf_len, CIR_ERROR_NO_SPACE_AVAILABLE, foo, framed_ring_buffer_available(), and framed_ring_buffer::write_offset.

Referenced by uavcan_broadcast(), and write_buf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: