pub struct SerialSignBus<P: SerialPort> { /* private fields */ }
Expand description

An implementation of SignBus that communicates with one or more signs over serial.

Messages and responses are logged using the log crate for debugging purposes. Consuming binaries typically use the env_logger crate and can be run with the RUST_LOG=debug environment variable to watch the bus messages go by.

§Examples

use flipdot_serial::SerialSignBus;

let port = serial::open("/dev/ttyUSB0")?;
let bus = SerialSignBus::try_new(port)?;
// Can now connect a Sign to the bus.

Implementations§

source§

impl<P: SerialPort> SerialSignBus<P>

source

pub fn try_new(port: P) -> Result<Self, Error>

Creates a new SerialSignBus that communicates over the specified serial port.

§Errors

Returns the underlying serial_core::Error if the serial port cannot be configured.

§Examples
let port = serial::open("COM3")?;
let bus = SerialSignBus::try_new(port)?;
source

pub fn port(&self) -> &P

Returns a reference to the underlying serial port.

Trait Implementations§

source§

impl<P: Debug + SerialPort> Debug for SerialSignBus<P>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<P: Hash + SerialPort> Hash for SerialSignBus<P>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<P: PartialEq + SerialPort> PartialEq for SerialSignBus<P>

source§

fn eq(&self, other: &SerialSignBus<P>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<P: SerialPort> SignBus for SerialSignBus<P>

source§

fn process_message<'a>( &mut self, message: Message<'_> ) -> Result<Option<Message<'a>>, Box<dyn Error + Send + Sync>>

Handles a bus message by sending it to the serial port and reading a response if necessary.

source§

impl<P: Eq + SerialPort> Eq for SerialSignBus<P>

source§

impl<P: SerialPort> StructuralPartialEq for SerialSignBus<P>

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for SerialSignBus<P>
where P: RefUnwindSafe,

§

impl<P> Send for SerialSignBus<P>
where P: Send,

§

impl<P> Sync for SerialSignBus<P>
where P: Sync,

§

impl<P> Unpin for SerialSignBus<P>
where P: Unpin,

§

impl<P> UnwindSafe for SerialSignBus<P>
where P: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.