# flipdot-testing

Tools for testing and debugging Luminator sign communications.

For the basic task of sign communication, you likely want to use the high-level API
in the [`flipdot`] crate instead.

This crate isn't directly related to controlling a real sign, but provides some helpful diagnostic tools.
`VirtualSignBus` is a general-purpose mock implementation of one or more signs attached to the bus,
and `Odk` allows connecting a real ODK over serial to a `SignBus`.

Intended only for hobbyist and educational purposes. Not affiliated with Luminator in any way.

## Usage

```rust
use flipdot_serial::SerialSignBus;
use flipdot_testing::{Address, Odk, VirtualSign, VirtualSignBus};

// Populate bus with signs from addresses 2 to 126
// (which seems to be the possible range for actual signs).
let signs = (2..127).map(Address).map(VirtualSign::new);
let bus = VirtualSignBus::new(signs);

// Hook up ODK to virtual bus.
let port = serial::open("COM3")?;
let mut odk = Odk::try_new(port, bus)?;
loop {
    // ODK communications are forwarded to/from the virtual bus.
    odk.process_message()?;
}
```

## License

Distributed under the [MIT license].

[`flipdot`]: /
[MIT license]: /LICENSE
