1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2025-12-16 15:33:05 +01:00

streamline buffer handling

This commit is contained in:
andreas
2021-10-27 10:43:53 +02:00
parent e378f6e56b
commit b007586076
4 changed files with 94 additions and 147 deletions

View File

@@ -8,6 +8,7 @@ class GwBufferWriter{
public:
int id=0; //can be set be users
virtual int write(const uint8_t *buffer,size_t len)=0;
virtual void done(){}
virtual ~GwBufferWriter(){};
};
@@ -18,7 +19,8 @@ class GwBufferWriter{
*/
class GwBuffer{
public:
static const size_t BUFFER_SIZE=1620; // app. 20 NMEA messages
static const size_t TX_BUFFER_SIZE=1620; // app. 20 NMEA messages
static const size_t RX_BUFFER_SIZE=200; // enough for 1 NMEA message...
typedef enum {
OK,
ERROR,
@@ -26,7 +28,6 @@ class GwBuffer{
} WriteStatus;
private:
size_t bufferSize;
bool rotate;
uint8_t *buffer;
uint8_t *writePointer;
uint8_t *readPointer;
@@ -40,12 +41,12 @@ class GwBuffer{
*/
int findChar(char x);
public:
GwBuffer(GwLog *logger,size_t bufferSize,bool rotate=true);
GwBuffer(GwLog *logger,size_t bufferSize);
~GwBuffer();
void reset();
size_t freeSpace();
size_t usedSpace();
size_t addData(const uint8_t *data,size_t len);
size_t addData(const uint8_t *data,size_t len,bool addPartial=false);
/**
* write some data to the buffer writer
* return an error if the buffer writer returned < 0