17#include "pw_sync/timed_thread_notification.h"
18#include "pw_uart/uart.h"
19#include "pw_uart/uart_non_blocking.h"
29 : uart_(uart), rx_(
"rx"), tx_(
"tx") {}
37 Transfer(
const char* what) : what_(what) {}
39 void Start() { pending_ =
true; }
40 void Complete(StatusWithSize result);
41 void Complete(Status status) { Complete(StatusWithSize(status, 0)); }
42 [[nodiscard]]
bool WaitForCompletion(
43 std::optional<chrono::SystemClock::duration> timeout);
44 void WaitForCompletion();
45 StatusWithSize HandleTimeout(
bool cancel_result);
47 bool pending()
const {
return pending_; }
48 StatusWithSize result()
const {
return result_; }
51 const char* what_ =
nullptr;
52 sync::TimedThreadNotification complete_;
53 StatusWithSize result_;
54 bool pending_ =
false;
61 Status DoEnable(
bool enable)
override {
65 Status DoSetBaudRate(uint32_t baud_rate)
override {
69 Status DoSetFlowControl(
bool enabled)
override {
73 size_t DoConservativeReadAvailable()
override {
77 Status DoClearPendingReceiveBytes()
override {
85 std::optional<chrono::SystemClock::duration> timeout)
override;
88 ConstByteSpan tx_buffer,
89 std::optional<chrono::SystemClock::duration> timeout)
override;
91 Status DoFlushOutput()
override;
Definition: status_with_size.h:49
Status Disable()
Definition: uart_base.h:69
size_t ConservativeReadAvailable()
Definition: uart_base.h:120
Status SetFlowControl(bool enable)
Definition: uart_base.h:111
Status SetBaudRate(uint32_t baud_rate)
Definition: uart_base.h:89
Status Enable()
Definition: uart_base.h:51
Status ClearPendingReceiveBytes()
Definition: uart_base.h:137
Definition: blocking_adapter.h:25
StatusWithSize DoTryReadFor(ByteSpan rx_buffer, size_t min_bytes, std::optional< chrono::SystemClock::duration > timeout) override
UartBlockingAdapter(UartNonBlocking &uart)
Constructs a UartBlockingAdapter for a UartNonBlocking device.
Definition: blocking_adapter.h:28
StatusWithSize DoTryWriteFor(ConstByteSpan tx_buffer, std::optional< chrono::SystemClock::duration > timeout) override
Writes data from a provided buffer to the UART with an optional timeout.
Definition: uart_non_blocking.h:32