#ifndef INCLUDED_C_BYTERINGBUFFER_H #define INCLUDED_C_BYTERINGBUFFER_H #ifndef INCLUDED_C_BASE_H #include #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*/