#![cfg(feature = "serial")]
use std::time::Duration;
use serialport::{SerialPort, SerialPortBuilder};
use crate::{Instrument, InstrumentError};
#[derive(Debug)]
pub struct SerialInterface {}
impl SerialInterface {
pub fn simple(
port: &str,
baud: u32,
) -> Result<Instrument<Box<dyn SerialPort>>, InstrumentError> {
let timeout = Duration::from_secs(3);
let port = serialport::new(port, baud).timeout(timeout).open()?;
Ok(Instrument::new(port, timeout))
}
pub fn full(
builder: SerialPortBuilder,
) -> Result<Instrument<Box<dyn SerialPort>>, InstrumentError> {
let port = builder.open()?;
let timeout = port.timeout();
Ok(Instrument::new(port, timeout))
}
}