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
53 Status Enable() { return DoEnable(true); }
54
71 Status Disable() { return DoEnable(false); }
72
91 Status SetBaudRate(uint32_t baud_rate) { return DoSetBaudRate(baud_rate); }
92
113 Status SetFlowControl(bool enable) { return DoSetFlowControl(enable); }
114
122 size_t ConservativeReadAvailable() { return DoConservativeReadAvailable(); }
123
139 Status ClearPendingReceiveBytes() { return DoClearPendingReceiveBytes(); }
140
141 private:
142 virtual Status DoEnable(bool enable) = 0;
143 virtual Status DoSetBaudRate(uint32_t baud_rate) = 0;
144 virtual Status DoSetFlowControl(bool /*enable*/) {
145 return pw::Status::Unimplemented();
146 }
147 virtual size_t DoConservativeReadAvailable() = 0;
148 virtual Status DoClearPendingReceiveBytes() = 0;
149};
150
151} // namespace pw::uart
Definition: status.h:86
Definition: uart_base.h:32
Status Disable()
Definition: uart_base.h:71
size_t ConservativeReadAvailable()
Definition: uart_base.h:122
Status SetFlowControl(bool enable)
Definition: uart_base.h:113
Status SetBaudRate(uint32_t baud_rate)
Definition: uart_base.h:91
Status Enable()
Definition: uart_base.h:53
Status ClearPendingReceiveBytes()
Definition: uart_base.h:139
Core UART interfaces.
Definition: blocking_adapter.h:21