C/C++ API Reference
Loading...
Searching...
No Matches
uart_base.h
1// Copyright 2024 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14
15#pragma once
16
17#include <cstddef>
18#include <cstdint>
19
20#include "pw_status/status.h"
21
22namespace pw::uart {
23
25
31
32class UartBase {
33 public:
34 virtual ~UartBase() = default;
35
47 Status Enable() { return DoEnable(true); }
48
59 Status Disable() { return DoEnable(false); }
60
72 Status SetBaudRate(uint32_t baud_rate) { return DoSetBaudRate(baud_rate); }
73
86 Status SetFlowControl(bool enable) { return DoSetFlowControl(enable); }
87
95 size_t ConservativeReadAvailable() { return DoConservativeReadAvailable(); }
96
106 Status ClearPendingReceiveBytes() { return DoClearPendingReceiveBytes(); }
107
108 private:
109 virtual Status DoEnable(bool enable) = 0;
110 virtual Status DoSetBaudRate(uint32_t baud_rate) = 0;
111 virtual Status DoSetFlowControl(bool /*enable*/) {
113 }
114 virtual size_t DoConservativeReadAvailable() = 0;
115 virtual Status DoClearPendingReceiveBytes() = 0;
116};
117
118} // namespace pw::uart
Definition: status.h:120
static constexpr Status Unimplemented()
Definition: status.h:280
Definition: uart_base.h:32
Status Disable()
Definition: uart_base.h:59
size_t ConservativeReadAvailable()
Definition: uart_base.h:95
Status SetFlowControl(bool enable)
Definition: uart_base.h:86
Status SetBaudRate(uint32_t baud_rate)
Definition: uart_base.h:72
Status Enable()
Definition: uart_base.h:47
Status ClearPendingReceiveBytes()
Definition: uart_base.h:106
Core UART interfaces.
Definition: blocking_adapter.h:21