3#include "TinyRobotics/utils/Buffers.h"
5#define STREAM_READ_OVERRIDE
6#define STREAM_READCHAR_OVERRIDE
7#define DEFAULT_BUFFER_SIZE 256
8#define MAX_SINGLE_CHARS 16
10namespace tinyrobotics {
13
14
15
16
17
18
19
22 BaseStream() =
default;
23 virtual ~BaseStream() =
default;
27 virtual bool begin(){
return true;}
30 virtual size_t readBytes(uint8_t *data,
32 virtual size_t write(
const uint8_t *data, size_t len)
override = 0;
34 virtual size_t write(uint8_t ch)
override {
35 tmp_out.resize(write_buffer_size);
36 if (tmp_out.isFull()) {
39 return tmp_out.write(ch);
46 virtual void flush()
override {
47 if (tmp_out.available() > 0) {
48 int len = tmp_out.available();
50 tmp_out.readArray((uint8_t *)bytes, len);
51 write((
const uint8_t *)bytes, len);
57 return readBytes((uint8_t *)data, len);
60 virtual int read()
override {
63 if (tmp_in.isEmpty())
return -1;
65 if (!tmp_in.read(result))
return -1;
69 virtual int peek()
override {
72 if (tmp_in.isEmpty())
return -1;
74 if (!tmp_in.peek(result))
return -1;
78 void setWriteBufferSize(
int size) { write_buffer_size = size;}
85 void refillReadBuffer() {
87 if (tmp_in.isEmpty()) {
88 const int len = tmp_in.size();
90 int len_eff = readBytes(bytes, len);
93 tmp_in.writeArray((
const uint8_t*)bytes, len_eff);
#define STREAM_READCHAR_OVERRIDE
Definition: BaseStream.h:6
#define MAX_SINGLE_CHARS
Definition: BaseStream.h:8
#define DEFAULT_BUFFER_SIZE
Definition: BaseStream.h:7
#define STREAM_READ_OVERRIDE
Definition: BaseStream.h:5
Base class for all Streams. It relies on write(const uint8_t *buffer, size_t size) and readBytes(uint...
Definition: BaseStream.h:20
Implements a typed Ringbuffer.
Definition: Buffers.h:304