![]() |
Описание библиотеки микросхемы 5023ВС016 процессора "Спутник"
|
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с кольцевыми буферами. Подробнее...
Структуры данных | |
struct | RINGBUFF_T |
Структура кольцевого буфера Подробнее... | |
Макросы | |
#define | RB_INDH(gl_rb_t) ((gl_rb_t)->head & ((gl_rb_t)->count - 1)) |
Макросы для работы с кольцевыми буферами Подробнее... | |
#define | RB_INDT(gl_rb_t) ((gl_rb_t)->tail & ((gl_rb_t)->count - 1)) |
#define | RB_VHEAD(gl_rb_t) (*(volatile uint32_t *) &(gl_rb_t)->head) |
#define | RB_VTAIL(gl_rb_t) (*(volatile uint32_t *) &(gl_rb_t)->tail) |
#define | RB_FLUSH(gl_rb_t) (((RINGBUFF_T *)gl_rb_t)->head = ((RINGBUFF_T *)gl_rb_t)->tail=0) |
Функции | |
void | RingBuffer_Init (RINGBUFF_T *RingBuff, void *buffer, int itemSize, int count) |
Инициализация кольцевого буфера. Подробнее... | |
Status | RingBuffer_Insert (RINGBUFF_T *RingBuff, const void *data) |
Запись одного элемента в кольцевой буфер. Подробнее... | |
int | RingBuffer_InsertMult (RINGBUFF_T *RingBuff, const void *data, int num) |
Запись нескольких элементов в кольцевой буфер. Подробнее... | |
Status | RingBuffer_Pop (RINGBUFF_T *RingBuff, void *data) |
Чтение одного элемента из кольцевого буфера Подробнее... | |
int | RingBuffer_PopMult (RINGBUFF_T *RingBuff, void *data, int num) |
Чтение массива элементов из кольцевого буфера Подробнее... | |
int | RingBuffer_GetSize (RINGBUFF_T *RingBuff) |
Получение размера кольцевого буфера в байтах. Подробнее... | |
int | RingBuffer_GetCount (RINGBUFF_T *RingBuff) |
Получения количества элементов, записанных в кольцевой буфер. Подробнее... | |
int | RingBuffer_GetFree (RINGBUFF_T *RingBuff) |
Получение размера свободного места в кольцевом буфере Подробнее... | |
int | RingBuffer_IsFull (RINGBUFF_T *RingBuff) |
Проверка на наличие свободного места в кольцевом буфере Подробнее... | |
int | RingBuffer_IsEmpty (RINGBUFF_T *RingBuff) |
Проверка кольцевого буфера на отсутствие данных Подробнее... | |
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с кольцевыми буферами.
Copyright(C) НПП Цифровые решения, 2017 Copyright(C) Команда разработчиков НПП Цифровые решения Все права защищены.
Программное обеспечение, описанное в этом файле, предназначено только для демонстрационных целей, и предоставляет программистам информацию о продукции организации "Цифровые решения". Это программное обеспечение поставляется "КАК ЕСТЬ" без каких-либо гарантий, "Цифровые решения" отказываются от любых гарантий, фактических или подразумеваемых, включая все подразумеваемые гарантии товарной пригодности, пригодности для конкретной цели и сохранения прав интеллектуальной собственности. Органицация "Цифровые решения" не несет никакой ответственности за использование программного обеспечения, не предоставляет лицензий или прав на патент, авторское право, или любые другие права интеллектуальной собственности, на какие-либо продукты. Организация "Цифровые решения" оставляет за собой право вносить изменения в программное обеспечение без уведомления. Организация "Цифровые решения" также не дает никаких заверений или гарантий, что это программное приложение подойдет для использования без дальнейшего тестирования или модификаций.
Разрешение на использование, копирование, изменение и распространение этого программного обеспечения и документации предоставляется согласно условиям "Цифровых решений" и соответствующих авторских прав своей лицензии без оплаты, при условии, что это программное обеспечнение используется совместно с микроконтроллерами организации "Цифровые решения". Эти права должны распространяться во всех копиях этого кода.
См. определение в файле ringbuffer.h
#define RB_FLUSH | ( | gl_rb_t | ) | (((RINGBUFF_T *)gl_rb_t)->head = ((RINGBUFF_T *)gl_rb_t)->tail=0) |
Сброс кольцевого буфера
См. определение в файле ringbuffer.h строка 55
#define RB_INDH | ( | gl_rb_t | ) | ((gl_rb_t)->head & ((gl_rb_t)->count - 1)) |
Макросы для работы с кольцевыми буферами
См. определение в файле ringbuffer.h строка 51
#define RB_INDT | ( | gl_rb_t | ) | ((gl_rb_t)->tail & ((gl_rb_t)->count - 1)) |
См. определение в файле ringbuffer.h строка 52
#define RB_VHEAD | ( | gl_rb_t | ) | (*(volatile uint32_t *) &(gl_rb_t)->head) |
Переобъявление индекса, указывающего на место для записи в буфер, как volatile
См. определение в файле ringbuffer.h строка 53
#define RB_VTAIL | ( | gl_rb_t | ) | (*(volatile uint32_t *) &(gl_rb_t)->tail) |
Переобъявление индекса, указывающего на место для чтения из буфера, как volatile
См. определение в файле ringbuffer.h строка 54
int RingBuffer_GetCount | ( | RINGBUFF_T * | RingBuff | ) |
Получения количества элементов, записанных в кольцевой буфер.
RingBuff | указатель на структуру кольцевого буфера |
Количество | элементов, записанных в кольцевой буфер |
См. определение в файле ringbuffer.c строка 194
int RingBuffer_GetFree | ( | RINGBUFF_T * | RingBuff | ) |
Получение размера свободного места в кольцевом буфере
RingBuff | указатель на структуру кольцевого буфера |
Размер | свободного места в кольцевом буфере |
См. определение в файле ringbuffer.c строка 204
int RingBuffer_GetSize | ( | RINGBUFF_T * | RingBuff | ) |
Получение размера кольцевого буфера в байтах.
RingBuff | указатель на структуру кольцевого буфера |
Размер | кольцевого буфера в байтах |
См. определение в файле ringbuffer.c строка 184
void RingBuffer_Init | ( | RINGBUFF_T * | RingBuff, |
void * | buffer, | ||
int | itemSize, | ||
int | count | ||
) |
Инициализация кольцевого буфера.
RingBuff | указатель на структуру кольцевого буфера |
buffer | указатель на буфер, который будет использоваться в качестве кольцевого |
itemSize | размер элемента буфера |
count | размер буфера |
None |
См. определение в файле ringbuffer.c строка 40
Status RingBuffer_Insert | ( | RINGBUFF_T * | RingBuff, |
const void * | data | ||
) |
Запись одного элемента в кольцевой буфер.
RingBuff | указатель на структуру кольцевого буфера |
data | указатель на элемент |
Статус | операции |
См. определение в файле ringbuffer.c строка 55
int RingBuffer_InsertMult | ( | RINGBUFF_T * | RingBuff, |
const void * | data, | ||
int | num | ||
) |
Запись нескольких элементов в кольцевой буфер.
RingBuff | указатель на структуру кольцевого буфера |
data | указатель на первый элемент элемент в массиве для записи |
num | размер массива |
(cnt1 | + cnt2): число успешно записанных элементов, 0 в случае ошибки |
См. определение в файле ringbuffer.c строка 77
int RingBuffer_IsEmpty | ( | RINGBUFF_T * | RingBuff | ) |
Проверка кольцевого буфера на отсутствие данных
RingBuff | указатель на структуру кольцевого буфера |
1 | если кольцевой буфер пуст, иначе 0 |
См. определение в файле ringbuffer.c строка 224
int RingBuffer_IsFull | ( | RINGBUFF_T * | RingBuff | ) |
Проверка на наличие свободного места в кольцевом буфере
RingBuff | указатель на структуру кольцевого буфера |
1 | если кольцевой буфер заполнен, иначе 0 |
См. определение в файле ringbuffer.c строка 214
Status RingBuffer_Pop | ( | RINGBUFF_T * | RingBuff, |
void * | data | ||
) |
Чтение одного элемента из кольцевого буфера
RingBuff | указатель на структуру кольцевого буфера |
data | указатель на массив, для хранения прочитанного элемента |
Статус | операции |
См. определение в файле ringbuffer.c строка 120
int RingBuffer_PopMult | ( | RINGBUFF_T * | RingBuff, |
void * | data, | ||
int | num | ||
) |
Чтение массива элементов из кольцевого буфера
RingBuff | указатель на структуру кольцевого буфера |
data | указатель на массив, для хранения прочитанных элемента |
num | максимальное число элементов, которое можно сохранить в массиве |
(cnt1 | + cnt2): число успешно прочитанных элементов, 0 в случае ошибки |
См. определение в файле ringbuffer.c строка 142