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>, pub down: Input<'static>, pub left: Input<'static>, pub right: Input<'static>, pub a: Input<'static>, pub b: Input<'static>, pub c: Input<'static>, pub d: Input<'static>, pub select: Input<'static>, pub start: Input<'static>, }
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
}
}