Contiki 2.5
Files | Data Structures | Functions
Ring buffer library

The ring buffer library implements ring (circular) buffer where bytes can be read and written independently. More...

Files

file  ringbuf.h
 
    Header file for the ring buffer library

 

Data Structures

struct  ringbuf
 Structure that holds the state of a ring buffer. More...
 

Functions

void ringbuf_init (struct ringbuf *r, uint8_t *a, uint8_t size_power_of_two)
 Initialize a ring buffer. More...
 
int ringbuf_put (struct ringbuf *r, uint8_t c)
 Insert a byte into the ring buffer. More...
 
int ringbuf_get (struct ringbuf *r)
 Get a byte from the ring buffer. More...
 
int ringbuf_size (struct ringbuf *r)
 Get the size of a ring buffer. More...
 
int ringbuf_elements (struct ringbuf *r)
 Get the number of elements currently in the ring buffer. More...
 

Detailed Description

The ring buffer library implements ring (circular) buffer where bytes can be read and written independently.

A ring buffer is particularly useful in device drivers where data can come in through interrupts.

Function Documentation

int ringbuf_elements ( struct ringbuf r)

Get the number of elements currently in the ring buffer.

Parameters
rA pointer to a struct ringbuf to hold the state of the ring buffer
Returns
The number of elements in the buffer.

Definition at line 103 of file ringbuf.c.

int ringbuf_get ( struct ringbuf r)

Get a byte from the ring buffer.

Parameters
rA pointer to a struct ringbuf to hold the state of the ring buffer
Returns
The data from the buffer, or -1 if the buffer was empty
        This function removes a byte from the ring buffer. It
        is safe to call this function from an interrupt
        handler.

Definition at line 73 of file ringbuf.c.

void ringbuf_init ( struct ringbuf r,
uint8_t *  a,
uint8_t  size_power_of_two 
)

Initialize a ring buffer.

Parameters
rA pointer to a struct ringbuf to hold the state of the ring buffer
aA pointer to an array to hold the data in the buffer
size_power_of_twoThe size of the ring buffer, which must be a power of two
        This function initiates a ring buffer. The data in the
        buffer is stored in an external array, to which a
        pointer must be supplied. The size of the ring buffer
        must be a power of two and cannot be larger than 128
        bytes.

Definition at line 44 of file ringbuf.c.

Referenced by uart1_init().

int ringbuf_put ( struct ringbuf r,
uint8_t  c 
)

Insert a byte into the ring buffer.

Parameters
rA pointer to a struct ringbuf to hold the state of the ring buffer
cThe byte to be written to the buffer
Returns
Non-zero if there data could be written, or zero if the buffer was full.
        This function inserts a byte into the ring buffer. It
        is safe to call this function from an interrupt
        handler.

Definition at line 53 of file ringbuf.c.

Referenced by serial_line_input_byte().

int ringbuf_size ( struct ringbuf r)

Get the size of a ring buffer.

Parameters
rA pointer to a struct ringbuf to hold the state of the ring buffer
Returns
The size of the buffer.

Definition at line 97 of file ringbuf.c.