lilkaoxide 0.1.0

Rust support library for Lilka console
use esp_hal::gpio::{Input, InputConfig, Pull};
use esp_hal::peripherals::{
    GPIO0, GPIO4, GPIO5, GPIO6, GPIO9, GPIO10, GPIO38, GPIO39, GPIO40, GPIO41,
};

pub struct ControllerState {
    pub up: Input<'static>,     // GPIO38
    pub down: Input<'static>,   // GPIO41
    pub left: Input<'static>,   // GPIO39
    pub right: Input<'static>,  // GPIO40
    pub a: Input<'static>,      // GPIO5
    pub b: Input<'static>,      // GPIO6
    pub c: Input<'static>,      // GPIO10
    pub d: Input<'static>,      // GPIO9
    pub select: Input<'static>, // GPIO0
    pub start: Input<'static>,  // GPIO4
}

impl ControllerState {
    pub fn init_controller(
        gpio5: GPIO5<'static>,
        gpio6: GPIO6<'static>,
        gpio10: GPIO10<'static>,
        gpio9: GPIO9<'static>,
        gpio38: GPIO38<'static>,
        gpio41: GPIO41<'static>,
        gpio39: GPIO39<'static>,
        gpio40: GPIO40<'static>,
        gpio0: GPIO0<'static>,
        gpio4: GPIO4<'static>,
    ) -> Self {
        let controller = ControllerState {
            a: Input::new(gpio5, InputConfig::default().with_pull(Pull::Up)),
            b: Input::new(gpio6, InputConfig::default().with_pull(Pull::Up)),
            c: Input::new(gpio10, InputConfig::default().with_pull(Pull::Up)),
            d: Input::new(gpio9, InputConfig::default().with_pull(Pull::Up)),
            up: Input::new(gpio38, InputConfig::default().with_pull(Pull::Up)),
            down: Input::new(gpio41, InputConfig::default().with_pull(Pull::Up)),
            left: Input::new(gpio39, InputConfig::default().with_pull(Pull::Up)),
            right: Input::new(gpio40, InputConfig::default().with_pull(Pull::Up)),
            select: Input::new(gpio0, InputConfig::default().with_pull(Pull::Up)),
            start: Input::new(gpio4, InputConfig::default().with_pull(Pull::Up)),
        };
        controller
    }
}