roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
stream_output_stream.cpp
Go to the documentation of this file.
2
3#if (defined ARDUINO)
4
5namespace roo_io {
6
7ArduinoStreamOutputStream::ArduinoStreamOutputStream(Stream& output)
8 : output_(output), status_(kOk) {}
9
10size_t ArduinoStreamOutputStream::tryWrite(const byte* buf, size_t count) {
11 if (status() != kOk) return 0;
12 size_t available = output_.availableForWrite();
13 if (count > available) count = available;
14 if (count == 0) return 0;
15 return output_.write((const uint8_t*)buf, count);
16}
17
18size_t ArduinoStreamOutputStream::write(const byte* buf, size_t count) {
19 if (status() != kOk) return 0;
20 size_t available = output_.availableForWrite();
21 if (count > available) count = available;
22 if (count == 0) ++count;
23 return output_.write((const uint8_t*)buf, count);
24}
25
26size_t ArduinoStreamOutputStream::writeFully(const byte* buf, size_t count) {
27 if (status() != kOk) return 0;
28 return output_.write((const uint8_t*)buf, count);
29}
30
31void ArduinoStreamOutputStream::flush() {
32 // Arduino 'flush' is stronger than our semantics, in that it waits for the
33 // data to be actually sent out, which we don't require. if (status() != kOk)
34 // return; output_.flush();
35}
36
37void ArduinoStreamOutputStream::close() {
38 flush();
39 status_ = kClosed;
40}
41
42} // namespace roo_io
43
44#endif // (defined ARDUINO)
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8
size_t count
Definition compare.h:45
@ kOk
Definition status.h:8
@ kClosed
Definition status.h:10