Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

# Circular Byte-Buffer Structure and Function Library (buffer.c)
[General Libraries]

## Detailed Description

     #include "buffer.h"

Overview
  This byte-buffer structure provides an easy and efficient way to store and process a stream of bytes. You can create as many buffers as you like (within memory limits), and then use this common set of functions to access each buffer. The buffers are designed for FIFO operation (first in, first out). This means that the first byte you put in the buffer will be the first one you get when you read out the buffer. Supported functions include buffer initialize, get byte from front of buffer, add byte to end of buffer, check if buffer is full, and flush buffer. The buffer uses a circular design so no copying of data is ever necessary. This buffer is not dynamically allocated, it has a user-defined fixed maximum size. This buffer is used in many places in the avrlib code.

## Data Structures
struct | struct_cBuffer
## Typedefs
typedef struct_cBuffer | cBuffer
## Functions
void | bufferInit (cBuffer *buffer, unsigned char *start, unsigned short size)
| initialize a buffer to start at a given address and have given size
unsigned char | bufferGetFromFront (cBuffer *buffer)
| get the first byte from the front of the buffer
void | bufferDumpFromFront (cBuffer *buffer, unsigned short numbytes)
| dump (discard) the first numbytes from the front of the buffer
unsigned char | bufferGetAtIndex (cBuffer *buffer, unsigned short index)
| get a byte at the specified index in the buffer (kind of like array access)
unsigned char | bufferAddToEnd (cBuffer *buffer, unsigned char data)
| add a byte to the end of the buffer
unsigned short | bufferIsNotFull (cBuffer *buffer)
| check if the buffer is full/not full (returns zero value if full)
void | bufferFlush (cBuffer *buffer)
| flush (clear) the contents of the buffer