Submitted by Webbot on January 1, 2009 - 11:49pm.

This class wraps a character array into a buffer that may be accessed in a thread safe way. IE it can be accessed by your main program, as well as by interrupts. One of its main uses is to create a buffer for accessing the UART whereby you can read/write characters at the same time as the UART reads/writes characters. Or it may be used to write info to a logging output which may go to your PC, an LCD display etc.


To create a 48 byte buffer:-

uint8_t  byteBuffer[48];       // allocate the space

BUFFER buffer(byteBuffer);   // wrap it into a safe buffer



uint8_t get();                     // Get the next byte and remove it from the buffer, or 0 if it is empty

uint8_t get(uint16_t index);  // Get the value from a given index (0=current), but don't remove it

void skip(uint16_t bytes);    // Remove the next 'bytes' elements from the buffer

void flush();                      // Clear the buffer

bool isFull();                      // return 'true' if the buffer is full

bool isEmpty();                  // return 'true' if the buffer is empty

bool put(uint8_t byte);       // try to add 'byte' to the buffer. Return false if the buffer was full, or true if it was added ok