roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
uart_output_stream.h
Go to the documentation of this file.
1#pragma once
2
3#if (defined ESP_PLATFORM || defined ROO_TESTING)
4
5#include "hal/uart_types.h"
7
8namespace roo_io {
9
10/// `OutputStream` adapter backed by ESP32 UART (esp-idf APIs).
11class Esp32UartOutputStream : public OutputStream {
12 public:
13 /// Creates adapter over ESP32 `uart_port_t`.
14 ///
15 /// @param uart_num UART port number.
17
18 /// Non-blocking write.
19 ///
20 /// Updates status.
21 ///
22 /// @return Number of bytes written.
23 size_t tryWrite(const byte* buf, size_t count) override;
24
25 /// Potentially blocking write.
26 ///
27 /// Updates status.
28 ///
29 /// @return Number of bytes written.
30 size_t write(const byte* buf, size_t count) override;
31
32 /// Writes exactly `count` bytes unless the UART API call fails.
33 ///
34 /// Updates status.
35 ///
36 /// @return Number of bytes written.
37 size_t writeFully(const byte* buf, size_t count) override;
38
39 /// Flushes buffered output to the UART sink.
40 ///
41 /// Updates status.
42 void flush() override;
43
44 /// Closes adapter by setting status to `kClosed`.
45 ///
46 /// Updates status.
47 void close() override;
48
49 /// Returns current status.
50 ///
51 /// @return Current status value.
52 Status status() const override { return status_; }
53
54 private:
55 size_t available_for_write() const;
56
58 mutable Status status_;
59};
60
61} // namespace roo_io
62
63#endif // (defined ESP_PLATFORM || defined ROO_TESTING)
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
Status
Definition status.h:7
@ kOk
Definition status.h:8