提交 0607d367 编写于 作者: D Dirk O. Kaar 提交者: Me No Dev

HardwareSerial::write(const char*, ...) API compatibility to AVR, ESP8266, et al (#3585)

* API compatibility to AVR, ESP8266, et al

* Add non-blocking HardwareSerial::read(buffer, size) extension (ESP8266 portability)

* Refactor for fewer indirect calls.
上级 6e77f7f3
...@@ -131,6 +131,24 @@ int HardwareSerial::read(void) ...@@ -131,6 +131,24 @@ int HardwareSerial::read(void)
return -1; return -1;
} }
// read characters into buffer
// terminates if size characters have been read, or no further are pending
// returns the number of characters placed in the buffer
// the buffer is NOT null terminated.
size_t HardwareSerial::read(uint8_t *buffer, size_t size)
{
size_t avail = available();
if (size < avail) {
avail = size;
}
size_t count = 0;
while(count < avail) {
*buffer++ = uartRead(_uart);
count++;
}
return count;
}
void HardwareSerial::flush(void) void HardwareSerial::flush(void)
{ {
uartFlush(_uart); uartFlush(_uart);
......
...@@ -62,11 +62,19 @@ public: ...@@ -62,11 +62,19 @@ public:
int availableForWrite(void); int availableForWrite(void);
int peek(void); int peek(void);
int read(void); int read(void);
size_t read(uint8_t *buffer, size_t size);
inline size_t read(char * buffer, size_t size)
{
return read((uint8_t*) buffer, size);
}
void flush(void); void flush(void);
void flush( bool txOnly); void flush( bool txOnly);
size_t write(uint8_t); size_t write(uint8_t);
size_t write(const uint8_t *buffer, size_t size); size_t write(const uint8_t *buffer, size_t size);
inline size_t write(const char * buffer, size_t size)
{
return write((uint8_t*) buffer, size);
}
inline size_t write(const char * s) inline size_t write(const char * s)
{ {
return write((uint8_t*) s, strlen(s)); return write((uint8_t*) s, strlen(s));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册