# flipdot-core Core types for describing communication with Luminator flip-dot and LED signs. For the basic task of sign communication, you likely want to use the high-level API in the [`flipdot`] crate instead. However, `flipdot_core` is useful for crates that want to interact with the sign protocol at a lower level than the `flipdot` crate, or who want to provide their own `SignBus` implementations for use by `flipdot`. Tested with a MAX3000 90 × 7 side sign. Should work with any flip-dot or LED sign that uses the 7-pin circular connector, but no guarantees. Intended only for hobbyist and educational purposes. Not affiliated with Luminator in any way. ## Usage Here's an example of directly interacting with a `SignBus` at the `Message` level instead of using `Sign`: ```rust use flipdot_core::{Address, Message, Operation, SignBus, SignType, State}; // Assume we have a helper function to obtain a SignBus. let mut bus: Box = get_bus(); // Discover the sign and verify that is has not yet been configured. let message = Message::Hello(Address(3)); let response = bus.process_message(message)?; assert_eq!(Some(Message::ReportState(Address(3), State::Unconfigured)), response); // Request that the sign receive the configuration data and verify that it acknowledges. let message = Message::RequestOperation(Address(3), Operation::ReceiveConfig); let response = bus.process_message(message)?; assert_eq!(Some(Message::AckOperation(Address(3), Operation::ReceiveConfig)), response); ``` ## License Distributed under the [MIT license]. [`flipdot`]: / [MIT license]: /LICENSE