mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-16 11:21:18 +03:00
(re)introduce timeout in HardwareSerial::readBytes(buffer, size) (#5558)
(re)introduce timeout in HardwareSerial::readBytes(buffer, size), add HardwareSerial::read(buffer, size) + visual test
This commit is contained in:
@ -30,6 +30,7 @@
|
||||
*/
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <PolledTimeout.h>
|
||||
|
||||
#include <unistd.h> // write
|
||||
|
||||
@ -64,6 +65,22 @@ void HardwareSerial::flush ()
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
size_t HardwareSerial::readBytes(char* buffer, size_t size)
|
||||
{
|
||||
size_t got = 0;
|
||||
|
||||
while (got < size)
|
||||
{
|
||||
esp8266::polledTimeout::oneShot timeOut(_timeout);
|
||||
size_t avail;
|
||||
while ((avail = available()) == 0 && !timeOut);
|
||||
if (avail == 0)
|
||||
break;
|
||||
got += read(buffer + got, std::min(size - got, avail));
|
||||
}
|
||||
return got;
|
||||
}
|
||||
|
||||
// uart.c
|
||||
|
||||
extern "C"
|
||||
|
Reference in New Issue
Block a user