mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-11 15:22:13 +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:
@ -27,6 +27,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <inttypes.h>
|
||||
#include <PolledTimeout.h>
|
||||
#include "Arduino.h"
|
||||
#include "HardwareSerial.h"
|
||||
#include "Esp.h"
|
||||
@ -132,6 +133,22 @@ unsigned long HardwareSerial::detectBaudrate(time_t timeoutMillis)
|
||||
return detectedBaudrate;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL)
|
||||
HardwareSerial Serial(UART0);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user