disable log in actisense mode

This commit is contained in:
wellenvogel 2022-01-07 12:37:20 +01:00
parent 34760d2fbe
commit 9878c90e7b
1 changed files with 40 additions and 28 deletions

View File

@ -4,39 +4,51 @@
#include "GwSocketServer.h" #include "GwSocketServer.h"
#include "GwSerial.h" #include "GwSerial.h"
#include "GwTcpClient.h" #include "GwTcpClient.h"
class GwSerialLog : public GwLogWriter{ class GwSerialLog : public GwLogWriter
{
static const size_t bufferSize = 4096; static const size_t bufferSize = 4096;
char *logBuffer = NULL; char *logBuffer = NULL;
int wp = 0; int wp = 0;
GwSerial *writer; GwSerial *writer;
bool disabled = false;
public: public:
GwSerialLog(GwSerial *writer){ GwSerialLog(GwSerial *writer, bool disabled)
{
this->writer = writer; this->writer = writer;
this->disabled = disabled;
logBuffer = new char[bufferSize]; logBuffer = new char[bufferSize];
wp = 0; wp = 0;
} }
virtual ~GwSerialLog() {} virtual ~GwSerialLog() {}
virtual void write(const char *data){ virtual void write(const char *data)
{
if (disabled)
return;
int len = strlen(data); int len = strlen(data);
if ((wp+len) >= (bufferSize-1)) return; if ((wp + len) >= (bufferSize - 1))
return;
strncpy(logBuffer + wp, data, len); strncpy(logBuffer + wp, data, len);
wp += len; wp += len;
logBuffer[wp] = 0; logBuffer[wp] = 0;
} }
virtual void flush(){ virtual void flush()
{
size_t handled = 0; size_t handled = 0;
while (handled < wp){ if (!disabled)
{
while (handled < wp)
{
writer->flush(); writer->flush();
size_t rt = writer->sendToClients(logBuffer + handled, -1, true); size_t rt = writer->sendToClients(logBuffer + handled, -1, true);
handled += rt; handled += rt;
} }
}
wp = 0; wp = 0;
logBuffer[0] = 0; logBuffer[0] = 0;
} }
}; };
GwChannelList::GwChannelList(GwLog *logger, GwConfigHandler *config){ GwChannelList::GwChannelList(GwLog *logger, GwConfigHandler *config){
this->logger=logger; this->logger=logger;
this->config=config; this->config=config;
@ -53,7 +65,7 @@ void GwChannelList::begin(bool fallbackSerial){
if (! fallbackSerial){ if (! fallbackSerial){
GwSerial *usb=new GwSerial(NULL,0,USB_CHANNEL_ID); GwSerial *usb=new GwSerial(NULL,0,USB_CHANNEL_ID);
usb->setup(config->getInt(config->usbBaud),3,1); usb->setup(config->getInt(config->usbBaud),3,1);
logger->setWriter(new GwSerialLog(usb)); logger->setWriter(new GwSerialLog(usb,config->getBool(config->usbActisense)));
logger->prefix="GWSERIAL:"; logger->prefix="GWSERIAL:";
channel=new GwChannel(logger,"USB",USB_CHANNEL_ID); channel=new GwChannel(logger,"USB",USB_CHANNEL_ID);
channel->setImpl(usb); channel->setImpl(usb);