blob: 0435f5784fe9114b741dfb8c1b7292f33cea9c95 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
use anyhow::Result;
use std::io::{Read, Write};
use std::time::Duration;
/// A trait which represents a UART.
pub trait Uart: Read + Write {
/// Returns the UART baudrate. May return zero for virtual UARTs.
fn get_baudrate(&self) -> u32;
/// Sets the UART baudrate. May do nothing for virtual UARTs.
fn set_baudrate(&mut self, baudrate: u32) -> Result<()>;
/// Reads UART recieve data into `buf`, returning the number of bytes read.
/// The `timeout` may be used to specify a duration to wait for data.
fn read_timeout(&mut self, buf: &mut [u8], timeout: Duration) -> Result<usize>;
}