|
|
|
@ -126,6 +126,8 @@
|
|
|
|
|
* \param[out] DataPtr Pointer to a global array that will hold the data stored into the ring buffer.
|
|
|
|
|
* \param[out] Size Maximum number of bytes that can be stored in the underlying data array.
|
|
|
|
|
*/
|
|
|
|
|
static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer, uint8_t* const DataPtr, const uint16_t Size)
|
|
|
|
|
ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
|
|
|
|
|
static inline void RingBuffer_InitBuffer(RingBuffer_t* Buffer, uint8_t* const DataPtr, const uint16_t Size)
|
|
|
|
|
{
|
|
|
|
|
GCC_FORCE_POINTER_ACCESS(Buffer);
|
|
|
|
@ -157,6 +159,7 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Number of bytes currently stored in the buffer.
|
|
|
|
|
*/
|
|
|
|
|
static inline uint16_t RingBuffer_GetCount(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);
|
|
|
|
|
static inline uint16_t RingBuffer_GetCount(RingBuffer_t* const Buffer)
|
|
|
|
|
{
|
|
|
|
|
uint16_t Count;
|
|
|
|
@ -182,6 +185,7 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Number of free bytes in the buffer.
|
|
|
|
|
*/
|
|
|
|
|
static inline uint16_t RingBuffer_GetFreeCount(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);
|
|
|
|
|
static inline uint16_t RingBuffer_GetFreeCount(RingBuffer_t* const Buffer)
|
|
|
|
|
{
|
|
|
|
|
return (Buffer->Size - RingBuffer_GetCount(Buffer));
|
|
|
|
@ -199,6 +203,7 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Boolean \c true if the buffer contains no free space, false otherwise.
|
|
|
|
|
*/
|
|
|
|
|
static inline bool RingBuffer_IsEmpty(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);
|
|
|
|
|
static inline bool RingBuffer_IsEmpty(RingBuffer_t* const Buffer)
|
|
|
|
|
{
|
|
|
|
|
return (RingBuffer_GetCount(Buffer) == 0);
|
|
|
|
@ -212,6 +217,7 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Boolean \c true if the buffer contains no free space, false otherwise.
|
|
|
|
|
*/
|
|
|
|
|
static inline bool RingBuffer_IsFull(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);
|
|
|
|
|
static inline bool RingBuffer_IsFull(RingBuffer_t* const Buffer)
|
|
|
|
|
{
|
|
|
|
|
return (RingBuffer_GetCount(Buffer) == Buffer->Size);
|
|
|
|
@ -226,8 +232,8 @@
|
|
|
|
|
* \param[in,out] Buffer Pointer to a ring buffer structure to insert into.
|
|
|
|
|
* \param[in] Data Data element to insert into the buffer.
|
|
|
|
|
*/
|
|
|
|
|
static inline void RingBuffer_Insert(RingBuffer_t* Buffer,
|
|
|
|
|
const uint8_t Data)
|
|
|
|
|
static inline void RingBuffer_Insert(RingBuffer_t* Buffer, const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
|
|
|
|
|
static inline void RingBuffer_Insert(RingBuffer_t* Buffer, const uint8_t Data)
|
|
|
|
|
{
|
|
|
|
|
GCC_FORCE_POINTER_ACCESS(Buffer);
|
|
|
|
|
|
|
|
|
@ -254,6 +260,7 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Next data element stored in the buffer.
|
|
|
|
|
*/
|
|
|
|
|
static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer) ATTR_NON_NULL_PTR_ARG(1);
|
|
|
|
|
static inline uint8_t RingBuffer_Remove(RingBuffer_t* Buffer)
|
|
|
|
|
{
|
|
|
|
|
GCC_FORCE_POINTER_ACCESS(Buffer);
|
|
|
|
@ -279,6 +286,7 @@
|
|
|
|
|
*
|
|
|
|
|
* \return Next data element stored in the buffer.
|
|
|
|
|
*/
|
|
|
|
|
static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1);
|
|
|
|
|
static inline uint8_t RingBuffer_Peek(RingBuffer_t* const Buffer)
|
|
|
|
|
{
|
|
|
|
|
return *Buffer->Out;
|
|
|
|
|