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"
6
#include "
roo_io/core/output_stream.h
"
7
8
namespace
roo_io
{
9
10
/// `OutputStream` adapter backed by ESP32 UART (esp-idf APIs).
11
class
Esp32UartOutputStream
:
public
OutputStream {
12
public
:
13
/// Creates adapter over ESP32 `uart_port_t`.
14
///
15
/// @param uart_num UART port number.
16
Esp32UartOutputStream
(
uart_port_t
port
) :
port_
(
port
), status_(
kOk
) {}
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
57
uart_port_t
port_
;
58
mutable
Status
status_;
59
};
60
61
}
// namespace roo_io
62
63
#endif
// (defined ESP_PLATFORM || defined ROO_TESTING)
roo_io
Definition
byte.h:6
roo_io::basic_string_view
roo::basic_string_view< CharT, Traits > basic_string_view
Definition
string_view.h:8
roo_io::count
size_t count
Definition
compare.h:45
roo_io::Status
Status
Definition
status.h:7
roo_io::kOk
@ kOk
Definition
status.h:8
output_stream.h
temp_repos
roo_io
src
roo_io
uart
esp32
uart_output_stream.h
Generated by
1.9.8