Ring buffer library
[Libraries]

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

Data Structures

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

Files

file  ringbuf.h
 

Header file for the ring buffer library.


Functions

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

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:
r A 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:
r A 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:
r A pointer to a struct ringbuf to hold the state of the ring buffer
a A pointer to an array to hold the data in the buffer
size_power_of_two The 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:
r A pointer to a struct ringbuf to hold the state of the ring buffer
c The 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:
r A 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.


Generated on Mon Apr 11 14:23:51 2011 for Contiki 2.5 by  doxygen 1.6.1