esp32-nmea2000-obp60/lib/serial/GwSerial.h

35 lines
1.0 KiB
C++

#ifndef _GWSERIAL_H
#define _GWSERIAL_H
#include "HardwareSerial.h"
#include "GwLog.h"
#include "GwBuffer.h"
class SerialWriter;
class GwSerialStream;
class GwSerial{
private:
GwBuffer *buffer;
GwBuffer *readBuffer=NULL;
GwLog *logger;
SerialWriter *writer;
int num;
bool initialized=false;
bool allowRead=true;
GwBuffer::WriteStatus write();
int id=-1;
int overflows=0;
size_t enqueue(const uint8_t *data, size_t len,bool partial=false);
HardwareSerial *serial;
public:
static const int bufferSize=200;
GwSerial(GwLog *logger,int num,int id,bool allowRead=true);
~GwSerial();
int setup(int baud,int rxpin,int txpin);
bool isInitialized();
size_t sendToClients(const char *buf,int sourceId,bool partial=false);
void loop(bool handleRead=true);
bool readMessages(GwBufferWriter *writer);
void flush();
Stream *getStream(bool partialWrites);
friend GwSerialStream;
};
#endif