diff --git a/README.md b/README.md index 89191fd..0bea725 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ Circular byte buffer ==================== -This is a circular buffer implementation, useful for embedded systems (buffer for UART RX queue etc). +This is a circular buffer implementation, useful mainly for embedded systems (buffer for UART RX/TX queues etc). + +It should be reliable with producent / consumer threads (no race conditions, as no length variable is used). Usage @@ -9,25 +11,34 @@ Usage ```c #include +#include "circbuf.h" -uint8_t buffer[32]; // array backing the buffer - -CircularBuffer cb; // buffer instance +circbuf_t cb; // buffer instance void main() { - cbuf_init(&cb, buffer, 32); // init the buffer + char c; + cbuf_init(&cb, 32); // init the buffer // now it's ready for use! + + cbuf_write(&cb, 'A'); + + if (cbuf_read(&cb, &c)) { + printf("%c", c); + } + + cbuf_deinit(&cb); // free the backing array (in embedded system you don't usually need to, allocate once and keep it) } ``` -Many function return success flag, so make sure to check the return values. +Most functions return a success flag (true - success), so make sure to check the return values. -False is returned on buffer overflow / underflow, attempted read past available data size etc. See the header file for details. +False is returned on buffer overflow / underflow. See the header file for details. License ------- -Do whatever you want with the code. \ No newline at end of file +I don't care, public domain (I guess). + diff --git a/circbuf.h b/circbuf.h index 5110e0f..d51a494 100644 --- a/circbuf.h +++ b/circbuf.h @@ -4,7 +4,7 @@ // Circular Character Buffer implementation -typedef struct CircularBuffer_struct { +typedef struct { uint8_t *buffer; uint16_t capacity; uint16_t read_pos;