C MIP-SDK
|
#include "ring_buffer.h"
Functions | |
u16 | ring_buffer_init_static (ring_buffer *buffer, u8 *data_buffer_ptr, u32 max_entries, u32 entry_size) |
u16 | ring_buffer_init_malloc (ring_buffer *buffer, u32 max_entries, u32 entry_size) |
u32 | ring_buffer_count (ring_buffer *buffer) |
u32 | ring_buffer_remaining_entries (ring_buffer *buffer) |
u16 | ring_buffer_flush (ring_buffer *buffer) |
u16 | ring_buffer_write (ring_buffer *buffer, u8 *entry, u32 num_bytes) |
u16 | ring_buffer_write_multi (ring_buffer *buffer, u8 *entry_buff, u32 num_entries, u32 *num_written) |
u16 | ring_buffer_read (ring_buffer *buffer, u8 *entry, u32 max_bytes) |
u16 | ring_buffer_lookahead_read (ring_buffer *buffer, u32 offset, u8 *entry, u32 max_bytes) |
u16 | ring_buffer_read_multi (ring_buffer *buffer, u8 *entry_buff, u32 entry_buff_size, u32 num_requested, u32 *num_read) |
u16 | ring_buffer_lookahead_read_multi (ring_buffer *buffer, u32 offset, u8 *entry_buff, u32 entry_buff_size, u32 num_requested, u32 *num_read) |
u32 | ring_buffer_copy (ring_buffer *to, ring_buffer *from, u32 num_entries) |
u32 | ring_buffer_lookahead_copy (ring_buffer *to, u32 offset, ring_buffer *from, u32 num_entries) |
u16 | ring_buffer_consume_entries (ring_buffer *buffer, u32 num_entries) |
u16 | ring_buffer_malloc_free (ring_buffer *buffer) |
u8 * | ring_buffer_get_first_element_ptr (ring_buffer *buffer) |
u16 | ring_buffer_remove_first_element (ring_buffer *buffer) |
u8 * | ring_buffer_get_available_element_ptr (ring_buffer *buffer) |
u16 | ring_buffer_increment_count (ring_buffer *buffer) |
void | __ring_buffer_reset (ring_buffer *buffer) |
void __ring_buffer_reset | ( | ring_buffer * | buffer | ) |
u16 ring_buffer_consume_entries | ( | ring_buffer * | buffer, |
u32 | num_entries | ||
) |
u32 ring_buffer_copy | ( | ring_buffer * | to, |
ring_buffer * | from, | ||
u32 | num_entries | ||
) |
Copy num_entries
between two ring buffers.
[out] | ring_buffer | *to - pointer to a ring buffer structure to copy to. |
[in] | ring_buffer | *from - pointer to a ring buffer structure to copy from. |
[in] | num_entries | - the number of entries to copy. |
None.
u32 ring_buffer_count | ( | ring_buffer * | buffer | ) |
u16 ring_buffer_flush | ( | ring_buffer * | buffer | ) |
u8* ring_buffer_get_available_element_ptr | ( | ring_buffer * | buffer | ) |
Return a pointer to the next available element in the ring buffer.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
This routine should only be used for single-element access!!!
Attempting to access multiple elements using this can cause access
outside of the array boundaries!
u8* ring_buffer_get_first_element_ptr | ( | ring_buffer * | buffer | ) |
Return a pointer to the first element in the ring buffer.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
This routine should only be used for single-element access!!!
Attempting to access multiple elements using this can cause access
outside of the array boundaries!
u16 ring_buffer_increment_count | ( | ring_buffer * | buffer | ) |
Increments the number of elements in the ring buffer.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
RING_BUFFER_ERROR | Ring buffer invalid. |
RING_BUFFER_EMPTY | Ring buffer full. |
RING_BUFFER_OK | Element added. |
Used in conjunction with ring_buffer_get_available_element_ptr
for pointer write access to ring buffer elements.
u16 ring_buffer_init_malloc | ( | ring_buffer * | buffer, |
u32 | max_entries, | ||
u32 | entry_size | ||
) |
Initialize a ring buffer using malloc to allocate the buffer from the heap.
[out] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[in] | u32 | max_entries - maximum entries the ring buffer may contain. |
[in] | u32 | entry_size - size of each entry (bytes). |
RING_BUFFER_ERROR | Buffer not initialized. |
RING_BUFFER_OK | Buffer initialized. |
None
u16 ring_buffer_init_static | ( | ring_buffer * | buffer, |
u8 * | data_buffer_ptr, | ||
u32 | max_entries, | ||
u32 | entry_size | ||
) |
Initialize a ring buffer with a static memory location.
[out] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[in] | u8 | *data_buffer_ptr - data pointer (must be allocated and size = max_entries * entry_size ). |
[in] | u32 | max_entries - maximum entries the ring buffer may contain. |
[in] | u32 | entry_size - size of each entry (bytes). |
RING_BUFFER_ERROR | Buffer not initialized. |
RING_BUFFER_OK | Buffer initialized. |
None
u32 ring_buffer_lookahead_copy | ( | ring_buffer * | to, |
u32 | offset, | ||
ring_buffer * | from, | ||
u32 | num_entries | ||
) |
Copy num_entries
between two ring buffers without consuming the entries.
[out] | ring_buffer | *to - pointer to a ring buffer structure to copy to. |
[in] | u32 | offset - offset from the first element to start the copy. |
[in] | ring_buffer | *from - pointer to a ring buffer structure to copy from. |
[in] | num_entries | - the number of entries to copy. |
None.
u16 ring_buffer_lookahead_read | ( | ring_buffer * | buffer, |
u32 | offset, | ||
u8 * | entry, | ||
u32 | max_bytes | ||
) |
Read an entry from the ring buffer without consuming it.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[in] | u32 | offset - offset from the head of the ring buffer to read. |
[out] | u8 | *entry - pointer to data buffer where the entry will be stored. |
[in] | u32 | max_bytes - maximum size of the data buffer. |
RING_BUFFER_ERROR | Entry not read, buffer not initialized. |
RING_BUFFER_FULL | Entry not read, the buffer is empty. |
RING_BUFFER_MEMORY_ERROR | Entry not read, max_bytes is smaller than the ring buffer entry size. |
RING_BUFFER_OK | Entries read. |
None.
u16 ring_buffer_lookahead_read_multi | ( | ring_buffer * | buffer, |
u32 | offset, | ||
u8 * | entry_buff, | ||
u32 | entry_buff_size, | ||
u32 | num_requested, | ||
u32 * | num_read | ||
) |
Read num_requested
entries from the ring buffer without consuming them.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[in] | u32 | offset - offset from the head of the ring buffer to read. |
[out] | u8 | *entry_buff - pointer to data buffer where the entries will be stored. |
[in] | u32 | entry_buff_size - maximum size of the data buffer in bytes. |
[in] | u32 | num_requested - the number of entries requested. |
[out] | u32 | num_read - the number of entries actually read. |
RING_BUFFER_ERROR | Entry not read, buffer not initialized. |
RING_BUFFER_EMPTY | Entry not read, the buffer is empty. |
RING_BUFFER_MEMORY_ERROR | Entry not read, max_bytes is smaller than the ring buffer entry size. |
RING_BUFFER_OK | Entries read. |
None.
u16 ring_buffer_malloc_free | ( | ring_buffer * | buffer | ) |
u16 ring_buffer_read | ( | ring_buffer * | buffer, |
u8 * | entry, | ||
u32 | max_bytes | ||
) |
Read a single entry from the ring buffer.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[out] | u8 | *entry - pointer to data buffer where the entry will be stored. |
[in] | u32 | max_bytes - maximum size of the data buffer. |
RING_BUFFER_ERROR | Entry not read, buffer not initialized. |
RING_BUFFER_FULL | Entry not read, the buffer is empty. |
RING_BUFFER_MEMORY_ERROR | Entry not read, max_bytes is smaller than the ring buffer entry size. |
RING_BUFFER_OK | Entry read. |
None.
u16 ring_buffer_read_multi | ( | ring_buffer * | buffer, |
u8 * | entry_buff, | ||
u32 | entry_buff_size, | ||
u32 | num_requested, | ||
u32 * | num_read | ||
) |
Read num_requested
entries from the ring buffer.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[out] | u8 | *entry - pointer to data buffer where the entries will be stored. |
[in] | u32 | entry_buff_size - maximum size of the data buffer in bytes. |
[in] | u32 | num_requested - the number of entries requested. |
[out] | u32 | num_read - the number of entries actually read. |
RING_BUFFER_ERROR | Entry not read, buffer not initialized. |
RING_BUFFER_EMPTY | Entry not read, the buffer is empty. |
RING_BUFFER_MEMORY_ERROR | Entry not read, max_bytes is smaller than the ring buffer entry size. |
RING_BUFFER_OK | Entries read. |
None.
u32 ring_buffer_remaining_entries | ( | ring_buffer * | buffer | ) |
u16 ring_buffer_remove_first_element | ( | ring_buffer * | buffer | ) |
Removes the first element of the ring buffer if it exists.
[in] | ring_buffer | *buffer - pointer to a ring buffer structure. |
RING_BUFFER_ERROR | Ring buffer invalid. |
RING_BUFFER_EMPTY | Ring buffer empty. |
RING_BUFFER_OK | Element removed. |
Used in conjunction with ring_buffer_get_first_element_ptr
for pointer read access to ring buffer elements.
u16 ring_buffer_write | ( | ring_buffer * | buffer, |
u8 * | entry, | ||
u32 | num_bytes | ||
) |
Write num_bytes
of a single entry to the ring buffer.
[out] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[in] | u8 | *entry - pointer to memory buffer holding the entry. |
[in] | u32 | num_bytes - number of bytes to write. |
RING_BUFFER_ERROR | Entry not written, buffer not initialized. |
RING_BUFFER_FULL | Entry not written, the buffer is full. |
RING_BUFFER_MEMORY_ERROR | Entry not written, num_bytes is larger than the ring buffer entry size. |
RING_BUFFER_OK | Entry written. |
num_bytes
included for ring buffers with variable entry sizes (e.g. strings). num_bytes
must be less than the max entry size.
u16 ring_buffer_write_multi | ( | ring_buffer * | buffer, |
u8 * | entry_buff, | ||
u32 | num_entries, | ||
u32 * | num_written | ||
) |
Write num_entries
to the ring buffer.
[out] | ring_buffer | *buffer - pointer to a ring buffer structure. |
[in] | u8 | *entry_buff - pointer to memory buffer holding the entries. |
[in] | u32 | num_entries - number of entries to write. |
RING_BUFFER_ERROR | Entries not written, buffer not initialized. |
RING_BUFFER_FULL | Entries not written, the buffer is full. |
RING_BUFFER_MEMORY_ERROR | Entries not written, num_bytes is larger than the ring buffer entry size. |
RING_BUFFER_OK | Entries written. |
All entries are assumed to be of size entry_size
, which is set by the ring_buffer_init_xxxxxx call.