Изменил(а) на 'UART/circular_buf.c'
This commit is contained in:
parent
2739418e23
commit
4956ae0a24
@ -1,41 +1,35 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "circular_buf.h"
|
||||||
|
|
||||||
#define BUFFER_SIZE 10
|
|
||||||
|
|
||||||
typedef struct {
|
void initialize_buffer(struct circular_buffer* cb) {
|
||||||
int buffer[BUFFER_SIZE];
|
cb->buf_head = 0;
|
||||||
int BufHead;
|
cb->buf_tail = 0;
|
||||||
int BufTail;
|
|
||||||
} CircularBuffer;
|
|
||||||
|
|
||||||
void initializeBuffer(CircularBuffer* cb) {
|
|
||||||
cb->BufHead = 0;
|
|
||||||
cb->BufTail = 0;
|
|
||||||
}
|
}
|
||||||
// Проверка, является ли буфер пустым
|
// Проверка, является ли буфер пустым
|
||||||
int BufferEmpty(const CircularBuffer* cb) {
|
int buffer_empty(const struct circular_buffer* cb) {
|
||||||
return cb->BufHead == cb->BufTail;
|
return cb->buf_head == cb->buf_tail;
|
||||||
}
|
}
|
||||||
// Проверка, является ли буфер полным
|
// Проверка, является ли буфер полным
|
||||||
int BufferFull(const CircularBuffer* cb) {
|
int buffer_full(const struct circular_buffer* cb) {
|
||||||
return (cb->BufTail + 1) % BUFFER_SIZE == cb->BufHead;//проверяем слудеющее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывыедет true
|
return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head;//ïğîâåğÿåì ñëóäåşùåå ÷èñëî, åñëè îíî áóäåò ñîâïàäàòü ñ èíäåêñîì ãîëîâû òî áóäåò false, ïğè ñîâïàäåíèè âûâûåäåò true
|
||||||
}
|
}
|
||||||
// Запись элемента в буфер
|
// Запись элемента в буфер
|
||||||
void writeBuffer(CircularBuffer* cb, int value) {
|
void write_buffer(struct circular_buffer* cb, int value) {
|
||||||
if (BufferFull(cb)) { // проверка на заполненность
|
if (buffer_full(cb)) { // ïğîâåğêà íà çàïîëíåííîñòü
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cb->buffer[cb->BufTail] = value;//записывает значение value в элемент массива buffer в хвост
|
cb->buffer[cb->buf_tail] = value;//çàïèñûâàåò çíà÷åíèå value â ıëåìåíò ìàññèâà buffer â õâîñò
|
||||||
cb->BufTail = (cb->BufTail + 1) % BUFFER_SIZE;//присваивается cb->BufTail, обновляя его значение на следующий индекс в кольцевом буфере
|
cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;//ïğèñâàèâàåòñÿ cb->buf_tail, îáíîâëÿÿ åãî çíà÷åíèå íà ñëåäóşùèé èíäåêñ â êîëüöåâîì áóôåğå
|
||||||
}
|
}
|
||||||
// Чтение элемента из буфера
|
// Чтение элемента из буфера
|
||||||
int readBuffer(CircularBuffer* cb) {
|
int read_buffer(struct circular_buffer* cb) {
|
||||||
if (BufferEmpty(cb)) { //проверяет буффер на пустоту
|
if (buffer_empty(cb)) { //ïğîâåğÿåò áóôôåğ íà ïóñòîòó
|
||||||
return -1;// -1 в качестве индикатора ошибки
|
return -1;// -1 в качестве индикатора ошибки
|
||||||
}
|
}
|
||||||
int value = cb->buffer[cb->BufHead]; //читаем значение из массива по индексу головы
|
int value = cb->buffer[cb->buf_head]; //÷èòàåì çíà÷åíèå èç ìàññèâà ïî èíäåêñó ãîëîâû
|
||||||
cb->BufHead = (cb->BufHead + 1) % BUFFER_SIZE; //увеличиваем индекс головы +1
|
cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; //óâåëè÷èâàåì èíäåêñ ãîëîâû +1
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user