35 lines
1.1 KiB
C
35 lines
1.1 KiB
C
#ifndef INCLUDED_C_BYTERINGBUFFER_H
|
|
#define INCLUDED_C_BYTERINGBUFFER_H
|
|
|
|
#ifndef INCLUDED_C_BASE_H
|
|
#include <c_Base.h>
|
|
#endif /*INCLUDED_C_BASE_H*/
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------------------------------------ */
|
|
/* */
|
|
|
|
typedef struct {
|
|
uint8_t* buffer;
|
|
c_size_t capacity;
|
|
c_size_t head;
|
|
c_size_t tail;
|
|
c_bool_t is_full;
|
|
}c_ByteRingBuffer_t;
|
|
|
|
c_err_t c_ByteRingBuffer_Init(c_ByteRingBuffer_t* self, c_size_t capacity);
|
|
void c_ByteRingBuffer_Destroy(c_ByteRingBuffer_t* self);
|
|
|
|
c_err_t c_ByteRingBuffer_WriteByte(c_ByteRingBuffer_t* self, uint8_t byte);
|
|
c_err_t c_ByteRingBuffer_ReadByte(c_ByteRingBuffer_t* self, uint8_t* out_byte);
|
|
|
|
c_size_t c_ByteRingBuffer_WriteBuffer(c_ByteRingBuffer_t* self, const uint8_t* src, c_size_t len);
|
|
c_size_t c_ByteRingBuffer_ReadBuffer(c_ByteRingBuffer_t* self, uint8_t* dest, c_size_t len);
|
|
|
|
c_size_t c_ByteRingBuffer_GetSize(const c_ByteRingBuffer_t* self);
|
|
c_bool_t c_ByteRingBuffer_IsEmpty(const c_ByteRingBuffer_t* self);
|
|
c_bool_t c_ByteRingBuffer_IsFull(const c_ByteRingBuffer_t* self);
|
|
|
|
|
|
#endif /*INCLUDED_C_BYTERINGBUFFER_H*/
|