diff --git a/libraries/FastSerial/FastSerial.cpp b/libraries/FastSerial/FastSerial.cpp index efc8c896e6..67f71483c6 100644 --- a/libraries/FastSerial/FastSerial.cpp +++ b/libraries/FastSerial/FastSerial.cpp @@ -212,6 +212,13 @@ size_t FastSerial::write(uint8_t c) // wait for room in the tx buffer i = (_txBuffer->head + 1) & _txBuffer->mask; + + // if the port is set into non-blocking mode, then drop the byte + // if there isn't enough room for it in the transmit buffer + if (_nonblocking_writes && i == _txBuffer->tail) { + return 0; + } + while (i == _txBuffer->tail) ; diff --git a/libraries/FastSerial/FastSerial.h b/libraries/FastSerial/FastSerial.h index 5fcaa95c75..b64ff1fb2d 100644 --- a/libraries/FastSerial/FastSerial.h +++ b/libraries/FastSerial/FastSerial.h @@ -160,6 +160,11 @@ public: return (1<