tm1637_embedded_hal/options/
circles.rs

1//! Ready to use circle animations.
2
3use crate::{tokens::NotFlipped, TM1637};
4
5mod bits;
6mod default_options;
7mod direction;
8
9pub use bits::*;
10pub use default_options::RotatingCircleOptions;
11pub use direction::*;
12
13/// High-level API for circle animations.
14#[derive(Debug)]
15#[cfg_attr(feature = "defmt", derive(defmt::Format))]
16pub struct CirclesDisplayOptions<'d, const N: usize, T, CLK, DIO, DELAY> {
17    device: &'d mut TM1637<N, T, CLK, DIO, DELAY>,
18}
19
20impl<'d, const N: usize, T, CLK, DIO, DELAY> CirclesDisplayOptions<'d, N, T, CLK, DIO, DELAY> {
21    /// Create a new [`CirclesDisplayOptions`] instance.
22    pub const fn new(device: &'d mut TM1637<N, T, CLK, DIO, DELAY>) -> Self {
23        Self { device }
24    }
25
26    /// Create a new [`RotatingCircleOptions`] instance.
27    pub const fn rotating(self) -> RotatingCircleOptions<'d, N, T, CLK, DIO, DELAY, NotFlipped> {
28        RotatingCircleOptions::new_with_defaults(self.device, NotFlipped)
29    }
30}