mirror of
https://github.com/thooge/esp32-nmea2000-obp60.git
synced 2025-12-16 07:23:07 +01:00
introduce write lock for USB channel
This commit is contained in:
@@ -63,6 +63,7 @@ GwSerial::~GwSerial()
|
||||
{
|
||||
delete buffer;
|
||||
if (readBuffer) delete readBuffer;
|
||||
if (lock != nullptr) vSemaphoreDelete(lock);
|
||||
}
|
||||
|
||||
String GwSerial::getMode(){
|
||||
@@ -87,10 +88,14 @@ size_t GwSerial::enqueue(const uint8_t *data, size_t len, bool partial)
|
||||
}
|
||||
GwBuffer::WriteStatus GwSerial::write(){
|
||||
if (! isInitialized()) return GwBuffer::ERROR;
|
||||
size_t numWrite=availableForWrite();
|
||||
size_t rt=buffer->fetchData(numWrite,[](uint8_t *buffer,size_t len, void *p){
|
||||
return ((GwSerial *)p)->stream->write(buffer,len);
|
||||
},this);
|
||||
size_t rt=0;
|
||||
{
|
||||
GWSYNCHRONIZED(lock);
|
||||
size_t numWrite=availableForWrite();
|
||||
rt=buffer->fetchData(numWrite,[](uint8_t *buffer,size_t len, void *p){
|
||||
return ((GwSerial *)p)->stream->write(buffer,len);
|
||||
},this);
|
||||
}
|
||||
if (rt != 0){
|
||||
LOG_DEBUG(GwLog::DEBUG+1,"Serial %d write %d",id,rt);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user