opentitanlib/io/
console.rsuse anyhow::Result;
use serde::{Deserialize, Serialize};
use std::rc::Rc;
use thiserror::Error;
use crate::impl_serializable_error;
use crate::io::gpio::GpioPin;
#[derive(Error, Debug, Serialize, Deserialize)]
pub enum ConsoleError {
#[error("Unsupported: {0}")]
UnsupportedError(String),
#[error("{0}")]
GenericError(String),
}
impl_serializable_error!(ConsoleError);
pub trait ConsoleDevice {
fn console_poll_read(
&self,
_cx: &mut std::task::Context<'_>,
_buf: &mut [u8],
) -> std::task::Poll<Result<usize>> {
Err(ConsoleError::UnsupportedError(
"console_poll_read() not implemented.".into(),
))?
}
fn console_write(&self, _buf: &[u8]) -> Result<()> {
Err(ConsoleError::UnsupportedError("console_write() not implemented.".into()).into())
}
fn set_break(&self, _enable: bool) -> Result<()> {
Err(ConsoleError::GenericError("break unsupported".into()).into())
}
fn get_tx_ready_pin(&self) -> Result<Option<&Rc<dyn GpioPin>>> {
Ok(None)
}
}