1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2025-12-15 06:53:07 +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

@@ -408,13 +408,27 @@ void SendNMEA0183Message(const tNMEA0183Msg &NMEA0183Msg) {
}
class NMEAMessageReceiver : public GwBufferWriter{
uint8_t buffer[GwBuffer::RX_BUFFER_SIZE+1];
uint8_t *writePointer=buffer;
public:
virtual int write(const uint8_t *buffer,size_t len){
char nbuf[len+1];
memcpy(nbuf,buffer,len);
nbuf[len]=0;
logger.logDebug(GwLog::DEBUG,"NMEA[%d]: %s",id,nbuf);
return len;
size_t toWrite=GwBuffer::RX_BUFFER_SIZE-(writePointer-buffer);
if (toWrite > len) toWrite=len;
memcpy(writePointer,buffer,toWrite);
writePointer+=toWrite;
*writePointer=0;
return toWrite;
}
virtual void done(){
if (writePointer == buffer) return;
logger.logDebug(GwLog::DEBUG,"NMEA-IN[%d]: %s",id,(const char *)buffer);
uint8_t *p;
for (p=writePointer-1;p>=buffer;p--){
if (*p <= 0x20) *p=0;
}
for (p=buffer; *p != 0 && p < writePointer && *p <= 0x20;p++){}
logger.logDebug(GwLog::DEBUG,"NMEA[%d]: %s",id,(const char *)p);
writePointer=buffer;
}
};
void loop() {