-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcringbuffer.h
More file actions
62 lines (55 loc) · 3.25 KB
/
cringbuffer.h
File metadata and controls
62 lines (55 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef C_RING_BUFFER_H
#define C_RING_BUFFER_H
//****************************************************************************************************
//Класс кольцевого буфера
//****************************************************************************************************
//****************************************************************************************************
//подключаемые библиотеки
//****************************************************************************************************
#include <stdint.h>
//****************************************************************************************************
//макроопределения
//****************************************************************************************************
//****************************************************************************************************
//константы
//****************************************************************************************************
//****************************************************************************************************
//предварительные объявления
//****************************************************************************************************
//****************************************************************************************************
//Класс кольцевого буфера
//****************************************************************************************************
class CRingBuffer
{
public:
//-перечисления---------------------------------------------------------------------------------------
//-структуры------------------------------------------------------------------------------------------
//-константы------------------------------------------------------------------------------------------
private:
//-переменные-----------------------------------------------------------------------------------------
uint8_t *Buffer;//буфер данных
uint32_t Head;//голова в буфере
uint32_t Tail;//хвост в буфере
uint32_t Size;//размер буфера
public:
//-конструктор----------------------------------------------------------------------------------------
CRingBuffer(uint32_t size);
//-деструктор-----------------------------------------------------------------------------------------
~CRingBuffer();
public:
//-открытые функции-----------------------------------------------------------------------------------
void PushByte(uint8_t b);//добавить байт в кольцевой буфер
bool PopByte(uint8_t *b);//забрать байт из кольцевого буфера
bool PopShort(uint16_t *s);//забрать два байта из кольцевого буфера
uint32_t GetDataSize(void) const;//получить сколько байт в кольцевом буфере
uint32_t GetHeadPos(void) const;//получить позицию головы буфера
uint32_t GetTailPos(void) const;//получить позицию хвоста буфера
uint32_t GetBufferSize(void) const;//получить общий размер буфера
void Reset(void);//удалить данные из буфера
uint8_t GetByte(uint32_t pos) const;//получить значение из буфера
void SetTailPos(uint32_t pos);//задать позицию хвоста буфера
void SetHeadPos(uint32_t pos);//задать позицию головы буфера
private:
//-закрытые функции-----------------------------------------------------------------------------------
};
#endif