gledopto 0.11.0

no-std, no-alloc LED control library for 1D, 2D, and 3D layouts
Documentation
#![no_std]
#![no_main]

use defmt::info;

use gledopto::{board, bootloader, function_button, main};

bootloader!();

#[main]
fn main() -> ! {
    let p = board!();

    info!("Init");

    let mut button = function_button!(p);

    loop {
        button.tick();

        #[allow(clippy::collapsible_else_if)]
        if let Some(dur) = button.held_time() {
            info!("Total holding time {:?}", dur);

            if button.is_clicked() {
                info!("Clicked + held");
            } else if button.is_double_clicked() {
                info!("Double clicked + held");
            } else if button.holds() == 2 && button.clicks() > 0 {
                info!("Held twice with {} clicks", button.clicks());
            } else if button.holds() == 2 {
                info!("Held twice");
            }
        } else {
            if button.is_clicked() {
                info!("Click");
            } else if button.is_double_clicked() {
                info!("Double click");
            } else if button.is_triple_clicked() {
                info!("Triple click");
            } else if let Some(dur) = button.current_holding_time() {
                info!("Held for {:?}", dur);
            }
        }

        button.reset();
    }
}