Pigweed
 
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
29
30class UartBase {
31 public:
32 virtual ~UartBase() = default;
33
51 Status Enable() { return DoEnable(true); }
52
69 Status Disable() { return DoEnable(false); }
70
89 Status SetBaudRate(uint32_t baud_rate) { return DoSetBaudRate(baud_rate); }
90
111 Status SetFlowControl(bool enable) { return DoSetFlowControl(enable); }
112
120 size_t ConservativeReadAvailable() { return DoConservativeReadAvailable(); }
121
137 Status ClearPendingReceiveBytes() { return DoClearPendingReceiveBytes(); }
138
139 private:
140 virtual Status DoEnable(bool enable) = 0;
141 virtual Status DoSetBaudRate(uint32_t baud_rate) = 0;
142 virtual Status DoSetFlowControl(bool /*enable*/) {
143 return pw::Status::Unimplemented();
144 }
145 virtual size_t DoConservativeReadAvailable() = 0;
146 virtual Status DoClearPendingReceiveBytes() = 0;
147};
148
149} // namespace pw::uart
Definition: status.h:85
Definition: uart_base.h:30
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