42 RingBuff->
data = buffer;
44 RingBuff->
itemSz = itemSize;
57 uint8_t *ptr = RingBuff->
data;
64 memcpy(ptr, data, RingBuff->
itemSz);
79 uint8_t *ptr = RingBuff->
data;
95 cnt1 =
MIN(cnt1, num);
97 cnt2 =
MIN(cnt2, num);
102 memcpy(ptr, data, cnt1 * RingBuff->
itemSz);
103 RingBuff->
head += cnt1;
107 data = (
const uint8_t *) data + cnt1 * RingBuff->
itemSz;
108 memcpy(ptr, data, cnt2 * RingBuff->
itemSz);
109 RingBuff->
head += cnt2;
122 uint8_t *ptr = RingBuff->
data;
129 memcpy(data, ptr, RingBuff->
itemSz);
144 uint8_t *ptr = RingBuff->
data;
160 cnt1 =
MIN(cnt1, num);
162 cnt2 =
MIN(cnt2, num);
167 memcpy(data, ptr, cnt1 * RingBuff->
itemSz);
168 RingBuff->
tail += cnt1;
172 data = (uint8_t *) data + cnt1 * RingBuff->
itemSz;
173 memcpy(data, ptr, cnt2 * RingBuff->
itemSz);
174 RingBuff->
tail += cnt2;
186 return RingBuff->
count;
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с кольцевыми буферами...
int RingBuffer_GetSize(RINGBUFF_T *RingBuff)
Получение размера кольцевого буфера в байтах.
Status RingBuffer_Insert(RINGBUFF_T *RingBuff, const void *data)
Запись одного элемента в кольцевой буфер.
int RingBuffer_IsFull(RINGBUFF_T *RingBuff)
Проверка на наличие свободного места в кольцевом буфере
#define RB_INDH(gl_rb_t)
Макросы для работы с кольцевыми буферами
int RingBuffer_GetCount(RINGBUFF_T *RingBuff)
Получения количества элементов, записанных в кольцевой буфер.
#define RB_VTAIL(gl_rb_t)
int RingBuffer_PopMult(RINGBUFF_T *RingBuff, void *data, int num)
Чтение массива элементов из кольцевого буфера
int RingBuffer_GetFree(RINGBUFF_T *RingBuff)
Получение размера свободного места в кольцевом буфере
Структура кольцевого буфера
#define RB_VHEAD(gl_rb_t)
int RingBuffer_IsEmpty(RINGBUFF_T *RingBuff)
Проверка кольцевого буфера на отсутствие данных
void RingBuffer_Init(RINGBUFF_T *RingBuff, void *buffer, int itemSize, int count)
Инициализация кольцевого буфера.
Status
Тип для статуса операции
Status RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data)
Чтение одного элемента из кольцевого буфера
int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num)
Запись нескольких элементов в кольцевой буфер.