5.11.0.0R3
Software Development Kit
 
Loading...
Searching...
No Matches
Ring buffer

Functions

wiced_result_t ring_buffer_consume (wiced_ring_buffer_t *ring_buffer, uint32_t bytes_consumed)
 
wiced_result_t ring_buffer_deinit (wiced_ring_buffer_t *ring_buffer)
 
uint32_t ring_buffer_free_space (wiced_ring_buffer_t *ring_buffer)
 
wiced_result_t ring_buffer_get_data (wiced_ring_buffer_t *ring_buffer, uint8_t **data, uint32_t *contiguous_bytes)
 
wiced_result_t ring_buffer_init (wiced_ring_buffer_t *ring_buffer, uint8_t *buffer, uint32_t buffer_size)
 
wiced_result_t ring_buffer_read (wiced_ring_buffer_t *ring_buffer, uint8_t *data, uint32_t data_length, uint32_t *number_of_bytes_read)
 
uint32_t ring_buffer_used_space (wiced_ring_buffer_t *ring_buffer)
 
uint32_t ring_buffer_write (wiced_ring_buffer_t *ring_buffer, const uint8_t *data, uint32_t data_length)
 

Detailed Description

This library implements a lock-free ringbuffer as described in Donald E. Knuth, The Art of Computer Programming, Volume 3: Sorting and Searching. Note that since the last entry of the ring buffer is not used in a lock free implementation, you should allocate one more entry then the total number of entries you plan to use.

Function Documentation

◆ ring_buffer_consume()

wiced_result_t ring_buffer_consume ( wiced_ring_buffer_t * ring_buffer,
uint32_t bytes_consumed )

Consume (discard) data in a ring buffer.

Parameters
[in]ring_buffer: Pointer to the ring buffer structure.
[in]bytes_consumed: Number of bytes to consume.
Returns
wiced_result_t

◆ ring_buffer_deinit()

wiced_result_t ring_buffer_deinit ( wiced_ring_buffer_t * ring_buffer)

De-initialize a ring buffer.

Parameters
[in]ring_buffer: Pointer to the ring buffer structure.
Returns
wiced_result_t

◆ ring_buffer_free_space()

uint32_t ring_buffer_free_space ( wiced_ring_buffer_t * ring_buffer)

Return the amount of available space in a ring buffer.

Parameters
[in]ring_buffer: Pointer to the ring buffer structure.
Returns
Length of available space in the buffer.

◆ ring_buffer_get_data()

wiced_result_t ring_buffer_get_data ( wiced_ring_buffer_t * ring_buffer,
uint8_t ** data,
uint32_t * contiguous_bytes )

Get a pointer to the start of data in a ring buffer.

Parameters
[in]ring_buffer: Pointer to the ring buffer structure.
[out]data: Address of the pointer for the data start in the buffer.
[out]data_length: Length of contiguous data bytes in the buffer.
Returns
wiced_result_t

◆ ring_buffer_init()

wiced_result_t ring_buffer_init ( wiced_ring_buffer_t * ring_buffer,
uint8_t * buffer,
uint32_t buffer_size )

Initialize a ring buffer.

Note: This is a non-locking ring buffer implementation that will store a maximum of buffer_size - 1 bytes of data.

Parameters
[out]ring_buffer: Pointer to the ring buffer structure to be initialized.
[in]buffer: Pointer to the buffer to use for the ring buffer.
[in]buffer_size: Size of the buffer (maximum buffer_size - 1 bytes will be stored).
Returns
wiced_result_t

◆ ring_buffer_read()

wiced_result_t ring_buffer_read ( wiced_ring_buffer_t * ring_buffer,
uint8_t * data,
uint32_t data_length,
uint32_t * number_of_bytes_read )

Read data from a ring buffer.

Parameters
[in]ring_buffer: Pointer to the ring buffer structure.
[in]data: Pointer to the buffer for read data.
[in]data_length: Length of the data buffer.
[out]number_of_bytes_read: Number of bytes read from the ring buffer.
Returns
wiced_result_t

◆ ring_buffer_used_space()

uint32_t ring_buffer_used_space ( wiced_ring_buffer_t * ring_buffer)

Return the amount of used space in a ring buffer.

Parameters
[in]ring_buffer: Pointer to the ring buffer structure.
Returns
Length of data currently in the buffer.

◆ ring_buffer_write()

uint32_t ring_buffer_write ( wiced_ring_buffer_t * ring_buffer,
const uint8_t * data,
uint32_t data_length )

Write to a ring buffer.

Parameters
[in]ring_buffer: Pointer to the ring buffer structure.
[in]data: Pointer to the data to write to the buffer.
[in]data_length: Length of data in bytes.
Returns
Length of data successfully written to the buffer.