Microchip® Advanced Software Framework

btstack_ring_buffer.h File Reference
#include <stdint.h>

Data Structures

struct  btstack_ring_buffer
 

Typedefs

typedef struct btstack_ring_buffer btstack_ring_buffer_t
 

Functions

uint32_t btstack_ring_buffer_bytes_available (btstack_ring_buffer_t *ring_buffer)
 Get number of bytes available for read. More...
 
uint32_t btstack_ring_buffer_bytes_free (btstack_ring_buffer_t *ring_buffer)
 Get free space available for write. More...
 
int btstack_ring_buffer_empty (btstack_ring_buffer_t *ring_buffer)
 Check if ring buffer is empty. More...
 
void btstack_ring_buffer_init (btstack_ring_buffer_t *ring_buffer, uint8_t *storage, uint32_t storage_size)
 Init ring buffer. More...
 
void btstack_ring_buffer_read (btstack_ring_buffer_t *ring_buffer, uint8_t *buffer, uint32_t length, uint32_t *number_of_bytes_read)
 Read from ring buffer. More...
 
int btstack_ring_buffer_write (btstack_ring_buffer_t *ring_buffer, uint8_t *data, uint32_t data_length)
 Write bytes into ring buffer. More...
 

uint32_t btstack_ring_buffer_bytes_available ( btstack_ring_buffer_t ring_buffer)

Get number of bytes available for read.

Parameters
ring_bufferobject
Returns
number of bytes available for read

References btstack_ring_buffer::full, btstack_ring_buffer::last_read_index, btstack_ring_buffer::last_written_index, and btstack_ring_buffer::size.

Referenced by btstack_ring_buffer_bytes_free(), btstack_ring_buffer_empty(), and btstack_ring_buffer_read().

uint32_t btstack_ring_buffer_bytes_free ( btstack_ring_buffer_t ring_buffer)

Get free space available for write.

Parameters
ring_bufferobject
Returns
number of bytes available for write

References btstack_ring_buffer_bytes_available(), and btstack_ring_buffer::size.

Referenced by btstack_ring_buffer_write().

int btstack_ring_buffer_empty ( btstack_ring_buffer_t ring_buffer)

Check if ring buffer is empty.

Parameters
ring_bufferobject
Returns
TRUE if empty

References btstack_ring_buffer_bytes_available().

void btstack_ring_buffer_init ( btstack_ring_buffer_t ring_buffer,
uint8_t *  storage,
uint32_t  storage_size 
)

Init ring buffer.

Parameters
ring_bufferobject
storage
storage_sizein bytes

References btstack_ring_buffer::full, btstack_ring_buffer::last_read_index, btstack_ring_buffer::last_written_index, btstack_ring_buffer::size, and btstack_ring_buffer::storage.

void btstack_ring_buffer_read ( btstack_ring_buffer_t ring_buffer,
uint8_t *  buffer,
uint32_t  length,
uint32_t *  number_of_bytes_read 
)

Read from ring buffer.

Parameters
ring_bufferobject
bufferto store read data
lengthto read
number_of_bytes_read

References btstack_min(), btstack_ring_buffer_bytes_available(), btstack_ring_buffer::full, btstack_ring_buffer::last_read_index, btstack_ring_buffer::size, and btstack_ring_buffer::storage.

int btstack_ring_buffer_write ( btstack_ring_buffer_t ring_buffer,
uint8_t *  data,
uint32_t  data_length 
)

Write bytes into ring buffer.

Parameters
ring_bufferobject
datato store
data_length
Returns
0 if ok, ERROR_CODE_MEMORY_CAPACITY_EXCEEDED if not enough space in buffer

References btstack_min(), btstack_ring_buffer_bytes_free(), ERROR_CODE_MEMORY_CAPACITY_EXCEEDED, btstack_ring_buffer::full, btstack_ring_buffer::last_read_index, btstack_ring_buffer::last_written_index, btstack_ring_buffer::size, and btstack_ring_buffer::storage.