diff --git a/UART/circular_buf.c b/UART/circular_buf.c index 3f09963..71c2b92 100644 --- a/UART/circular_buf.c +++ b/UART/circular_buf.c @@ -1,42 +1,36 @@ -#include -#include - -#define BUFFER_SIZE 10 - -typedef struct { - int buffer[BUFFER_SIZE]; - int BufHead; - int BufTail; -} CircularBuffer; - -void initializeBuffer(CircularBuffer* cb) { - cb->BufHead = 0; - cb->BufTail = 0; -} -// Проверка, является ли буфер пустым -int BufferEmpty(const CircularBuffer* cb) { - return cb->BufHead == cb->BufTail; -} -// Проверка, является ли буфер полным -int BufferFull(const CircularBuffer* cb) { - return (cb->BufTail + 1) % BUFFER_SIZE == cb->BufHead;//проверяем слудеющее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывыедет true -} -// Запись элемента в буфер -void writeBuffer(CircularBuffer* cb, int value) { - if (BufferFull(cb)) { // проверка на заполненность - return; - } - cb->buffer[cb->BufTail] = value;//записывает значение value в элемент массива buffer в хвост - cb->BufTail = (cb->BufTail + 1) % BUFFER_SIZE;//присваивается cb->BufTail, обновляя его значение на следующий индекс в кольцевом буфере -} -// Чтение элемента из буфера -int readBuffer(CircularBuffer* cb) { - if (BufferEmpty(cb)) { //проверяет буффер на пустоту - return -1;// -1 в качестве индикатора ошибки - } - int value = cb->buffer[cb->BufHead]; //читаем значение из массива по индексу головы - cb->BufHead = (cb->BufHead + 1) % BUFFER_SIZE; //увеличиваем индекс головы +1 - return value; -} - - +#include +#include +#include "circular_buf.h" + + +void initialize_buffer(struct circular_buffer* cb) { + cb->buf_head = 0; + cb->buf_tail = 0; +} +// Проверка, является ли буфер пустым +int buffer_empty(const struct circular_buffer* cb) { + return cb->buf_head == cb->buf_tail; +} +// Проверка, является ли буфер полным +int buffer_full(const struct circular_buffer* cb) { + return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head;//проверяем слудеющее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывыедет true +} +// Запись элемента в буфер +void write_buffer(struct circular_buffer* cb, int value) { + if (buffer_full(cb)) { // проверка на заполненность + return; + } + cb->buffer[cb->buf_tail] = value;//записывает значение value в элемент массива buffer в хвост + cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;//присваивается cb->buf_tail, обновляя его значение на следующий индекс в кольцевом буфере +} +// Чтение элемента из буфера +int read_buffer(struct circular_buffer* cb) { + if (buffer_empty(cb)) { //проверяет буффер на пустоту + return -1;// -1 в качестве индикатора ошибки + } + int value = cb->buffer[cb->buf_head]; //читаем значение из массива по индексу головы + cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; //увеличиваем индекс головы +1 + return value; +} + +