cotis-interactivity 0.1.0-alpha

Higher-level input managers for Cotis applications
Documentation
pub(crate) struct UpdatableSignal {
    signal: bool,
    previous: bool,
}

impl UpdatableSignal {
    pub fn new(signal: bool) -> UpdatableSignal {
        Self {
            signal,
            previous: signal,
        }
    }

    pub fn update(&mut self, signal: bool) {
        self.previous = self.signal;
        self.signal = signal;
    }

    pub fn is_on(&self) -> bool {
        self.signal
    }
    pub fn is_on_long(&self) -> bool {
        self.signal && self.previous
    }

    #[allow(dead_code)]
    pub fn is_off_long(&self) -> bool {
        !self.signal && !self.previous
    }

    pub fn rising_edge(&self) -> bool {
        !self.previous && self.signal
    }

    pub fn falling_edge(&self) -> bool {
        self.previous && !self.signal
    }
}