1
0
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:
david gauchard
2019-01-08 04:01:21 +01:00
committed by GitHub
parent 8f8628c681
commit dc03293d82
4 changed files with 55 additions and 7 deletions

View File

@ -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"