23#ifndef CHUNKED_RINGBUFFER_H
24#define CHUNKED_RINGBUFFER_H
38#ifndef CONFIG_CHUNK_NUM_MAX
39#define CONFIG_CHUNK_NUM_MAX (4)
bool crb_end_chunk(chunk_ringbuf_t *rb, bool valid)
Close the current chunk.
bool crb_peek_bytes(chunk_ringbuf_t *rb, void *dst, size_t offset, size_t len)
Get a number of bytes from the first valid chunk without consuming it.
static bool crb_add_byte(chunk_ringbuf_t *rb, uint8_t b)
Insert a byte into the current chunk.
void crb_init(chunk_ringbuf_t *rb, void *buffer, size_t len)
Initialize a Chunked Ringbuffer.
static bool crb_start_chunk(chunk_ringbuf_t *rb)
Start a new chunk on the ringbuffer.
void(* crb_foreach_callback_t)(void *ctx, uint8_t *bytes, size_t len)
Callback function for crb_chunk_foreach.
bool crb_add_bytes(chunk_ringbuf_t *rb, const void *data, size_t len)
Insert a number of bytes into the current chunk.
bool crb_get_chunk_size(chunk_ringbuf_t *rb, size_t *len)
Get the size of the first valid chunk.
bool crb_add_chunk(chunk_ringbuf_t *rb, const void *data, size_t len)
Add a complete chunk to the Ringbuffer.
#define CONFIG_CHUNK_NUM_MAX
The maximum number of chunks that can be stored in a Chunked Ringbuffer.
bool crb_consume_chunk(chunk_ringbuf_t *rb, void *dst, size_t len)
Remove a chunk from the valid chunk array.
bool crb_chunk_foreach(chunk_ringbuf_t *rb, crb_foreach_callback_t func, void *ctx)
Execute a callback for each byte in the first valid chunk The callback function may be called twice i...
uint8_t chunk_cur
Index of the first valid chunk.
uint8_t * cur_start
start of the currently written chunk
uint8_t * buffer_end
last data element
uint8_t * buffer
pointer to the memory to hold the data
uint8_t * cur
current write pointer
uint8_t * protect
start of the first valid chunk