use std::time::Duration;
#[derive(Debug, Clone)]
pub enum TransceiverMode {
Default,
Rs422,
Rs485(Rs485Config),
}
#[derive(Debug, Clone, Default)]
pub struct Rs485Config {
full_duplex: bool,
terminate_bus: bool,
delay_before_send: Duration,
delay_after_send: Duration,
invert_rts: bool,
}
impl Rs485Config {
pub fn new() -> Self {
Self::default()
}
pub fn set_full_duplex(&mut self, enable: bool) {
self.full_duplex = enable;
}
pub fn get_full_duplex(&self) -> bool {
self.full_duplex
}
pub fn set_bus_termination(&mut self, enable: bool) {
self.terminate_bus = enable;
}
pub fn get_bus_termination(&self) -> bool {
self.terminate_bus
}
pub fn set_delay_before_send(&mut self, delay: Duration) {
self.delay_before_send = delay;
}
pub fn get_delay_before_send(&self) -> Duration {
self.delay_before_send
}
pub fn set_delay_after_send(&mut self, delay: Duration) {
self.delay_after_send = delay;
}
pub fn get_delay_after_send(&self) -> Duration {
self.delay_after_send
}
pub fn set_invert_rts(&mut self, invert: bool) {
self.invert_rts = invert;
}
pub fn get_invert_rts(&self) -> bool {
self.invert_rts
}
}
impl From<Rs485Config> for TransceiverMode {
fn from(other: Rs485Config) -> Self {
Self::Rs485(other)
}
}