3 releases
0.1.2 | Sep 14, 2023 |
---|---|
0.1.1 | Feb 16, 2021 |
0.1.0 | Oct 24, 2020 |
#122 in Visualization
Used in cargo-blinc
3MB
445 lines
transition
LED notifications made easy
About | Demo | Installation | License | Contribution
Built with 🦀
About
This library allows you control the state of code execution using blink(1) LED notifier.
You simply wrap the code you want to track with transition library:
use std::error::Error;
use std::thread;
use std::time::Duration;
use transition::Transition;
fn main() -> Result<(), Box<dyn Error>> {
// start transition
let notification = Transition::default().start()?;
// our example code
thread::sleep(Duration::from_secs(5));
// task finished with success
notification.notify_success()?;
Ok(())
}
What does it do?
- After calling
start()
, blink(1) starts blinking with blue light. This is done in a separate thread. - Then our code is executing.
- At the end we call
notification.notify_success()
(ornotification.notify_failure()
) which changes the color of LED to green (or red).
Supported colors:
use transition::Led;
let color = Led::Blue;
match color {
Led::Red => println!("red"),
Led::Green => println!("green"),
Led::Blue => println!("blue"),
Led::Yellow => println!("yellow"),
Led::Orange => println!("orange"),
Led::Pink => println!("pink"),
Led::Cyan => println!("cyan"),
Led::White => println!("white"),
Led::Blank => println!("turn off the led"),
}
See examples for more
Demo
Installation
Add as a dependency to your Cargo.toml
:
[dependencies]
transition = "0.1.1"
One of the dependency requires libusb-1.0
to be installed. On Linux you can install it by running:
sudo apt install libusb-1.0
Make sure that you have correct access rights to access blink(1) device. See udev rules here.
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.