41 int ret = writePos - readPos;
53 if(buffer ==
nullptr) {
56 int ret = readPos - writePos - 1;
65 return (buffer ==
nullptr) || (writePos == readPos);
78 return isEmpty() ? -1 : buffer[readPos];
86 return isEmpty() ? -1 : buffer[getPrevPos(writePos)];
95 uint8_t c = buffer[readPos];
96 readPos = getNextPos(readPos);
102 size_t nextPos = getNextPos(writePos);
103 if(nextPos == readPos) {
107 buffer[writePos] = c;
123 readPos = writePos = 0;
132 data = buffer + readPos;
134 return (wp < readPos) ? size - readPos : wp - readPos;
144 if(readPos == size) {
151 __forceinline
size_t getNextPos(
size_t pos)
154 return (n == size) ? 0 : n;
158 __forceinline
size_t getPrevPos(
size_t pos)
160 return (pos != 0 ? pos : size) - 1;
167 char* buffer =
nullptr;
FIFO buffer used for both receive and transmit data.
Definition: SerialBuffer.h:24
int find(uint8_t c)
find a character in the buffer
~SerialBuffer()
Definition: SerialBuffer.h:26
int readChar()
Definition: SerialBuffer.h:89
int peekLastChar()
Definition: SerialBuffer.h:84
size_t resize(size_t newSize)
void skipRead(size_t length)
Skip a number of chars starting at the given read position.
Definition: SerialBuffer.h:141
size_t getFreeSpace()
get number of bytes of space available in this buffer
Definition: SerialBuffer.h:51
size_t getSize()
Definition: SerialBuffer.h:31
int peekChar()
see if there's anything in the buffer
Definition: SerialBuffer.h:76
bool isFull()
Definition: SerialBuffer.h:68
size_t available()
get number of bytes stored in the buffer
Definition: SerialBuffer.h:39
size_t writeChar(uint8_t c)
Definition: SerialBuffer.h:100
size_t getReadData(void *&data)
Access data directly within buffer.
Definition: SerialBuffer.h:130
bool isEmpty()
Definition: SerialBuffer.h:63
void clear()
Definition: SerialBuffer.h:121