use crate::Result;
#[derive(Clone, Copy, Debug)]
pub enum BreakDuration {
Short,
Arbitrary(std::num::NonZeroI32),
}
pub trait SerialPortExt {
fn pair() -> Result<(Self, Self)>
where
Self: Sized;
fn exclusive(&self) -> bool;
fn set_exclusive(&mut self, exclusive: bool) -> Result<()>;
fn send_break(&self, duration: BreakDuration) -> Result<()>;
}
impl SerialPortExt for crate::SerialPort {
fn pair() -> Result<(Self, Self)> {
let (master, slave) = crate::sys::SerialPort::pair()?;
Ok((crate::SerialPort(master), crate::SerialPort(slave)))
}
fn exclusive(&self) -> bool {
self.0.exclusive()
}
fn set_exclusive(&mut self, exclusive: bool) -> Result<()> {
self.0.set_exclusive(exclusive)
}
fn send_break(&self, duration: BreakDuration) -> Result<()> {
self.0.send_break(duration)
}
}