Ring Buffer¶
- group Ring Buffer
Generic byte-oriented circular buffer.
- group Structures
Structures used by the Ring Buffer.
-
struct osusat_ring_buffer_t¶
- #include <ring_buffer.h>
Ring buffer state structure.
Note
This structure should be initialized via osusat_ring_buffer_init before use.
-
struct osusat_ring_buffer_t¶
- group Public API
External interface for interacting with the Ring Buffer.
Functions
-
void osusat_ring_buffer_init(osusat_ring_buffer_t *rb, uint8_t *storage, size_t capacity, bool overwrite)¶
Initialize a ring buffer.
Sets up the control structure to point to the provided storage array.
- Parameters:
rb – [out] Pointer to the ring buffer handle to initialize.
storage – [in] Pointer to the allocated byte array to use as storage.
capacity – [in] Size of the storage array in bytes.
overwrite – [in] If true, the buffer will overwrite the oldest data when full. If false, it will reject new data when full.
-
void osusat_ring_buffer_clear(osusat_ring_buffer_t *rb)¶
Reset the buffer to empty.
Resets head and tail indices to zero. Does not zero-out the underlying memory.
- Parameters:
rb – [inout] The ring buffer handle.
-
bool osusat_ring_buffer_push(osusat_ring_buffer_t *rb, uint8_t byte)¶
Push one byte into the buffer.
- Parameters:
rb – [inout] The ring buffer handle.
byte – [in] The byte to store.
- Return values:
true – Successfully added (or overwrote) the byte.
false – Buffer was full and overwrite mode is disabled.
-
bool osusat_ring_buffer_pop(osusat_ring_buffer_t *rb, uint8_t *out)¶
Pop one byte from the buffer.
- Parameters:
rb – [inout] The ring buffer handle.
out – [out] Pointer to where the popped byte will be written.
- Return values:
true – Success, byte written to
out.false – Buffer was empty.
-
bool osusat_ring_buffer_peek(const osusat_ring_buffer_t *rb, uint8_t *out)¶
Peek at the next byte without removing it.
Useful for inspecting the next available data packet header without consuming it.
- Parameters:
rb – [in] The ring buffer handle.
out – [out] Pointer to where the peeked byte will be written.
- Return values:
true – Success, byte written to
out.false – Buffer was empty.
-
size_t osusat_ring_buffer_size(const osusat_ring_buffer_t *rb)¶
Get the number of bytes currently stored.
- Parameters:
rb – [in] The ring buffer handle.
- Returns:
Number of bytes active in the buffer.
-
static inline bool osusat_ring_buffer_empty(const osusat_ring_buffer_t *rb)¶
Check if the buffer is empty.
- Parameters:
rb – [in] The ring buffer handle.
- Return values:
true – Buffer is empty.
false – Buffer contains data.
-
bool osusat_ring_buffer_full(const osusat_ring_buffer_t *rb)¶
Check if the buffer is full.
- Parameters:
rb – [in] The ring buffer handle.
- Return values:
true – Buffer is full.
false – Buffer has space available.
-
void osusat_ring_buffer_init(osusat_ring_buffer_t *rb, uint8_t *storage, size_t capacity, bool overwrite)¶