cursed input flags stuff

This commit is contained in:
sigil-03 2025-10-26 15:44:35 -06:00
parent b1d7574a80
commit 485f617515
2 changed files with 56 additions and 27 deletions

View file

@ -4,7 +4,7 @@ use hal::println;
pub unsafe fn init_gpio_irq(pin: u8, port: u8, rising: bool, falling: bool) {
critical_section::with(|_| {
#[cfg(feature = "enable_print")]
println!("init_gpio_irq");
println!("init_gpio_irq {pin}:{port}");
let exti = &hal::pac::EXTI;
let afio = &hal::pac::AFIO;
@ -20,7 +20,6 @@ pub unsafe fn init_gpio_irq(pin: u8, port: u8, rising: bool, falling: bool) {
});
}
// FIXME: should return a vec of the interrupts
pub fn clear_interrupt(coin_pin: u8, button_pin: u8) -> crate::InputFlags {
let mut input_flags = crate::InputFlags::default();
@ -36,27 +35,52 @@ pub fn clear_interrupt(coin_pin: u8, button_pin: u8) -> crate::InputFlags {
// We don't handle or change any EXTI lines above 24.
let bits = bits.0 & 0x00FFFFFF;
println!("bits: {bits:08x}");
// coin_flag
if (bits & (0x1 << coin_pin)) != 0x0 {
#[cfg(feature = "enable_print")]
println!("coin irq!");
input_flags.sense_coin_flag = true;
// unsafe {
// INPUT_FLAGS.coin_flag = true;
// }
}
// button_flag
if (bits & (0x1 << button_pin)) != 0x0 {
#[cfg(feature = "enable_print")]
println!("button irq!");
input_flags.main_btn_flag = true;
println!("main_btn irq!");
// CHECK PC6
// unsafe {
// INPUT_FLAGS.button_flag = true;
// let mut val = 0;
// let reg: u32 = 0x40011008;
// val = (reg as *mut u32).read_volatile();
// if ((val >> 0x6) & 0x1) == 0x0 {
// input_flags.volume_btn_flag = true;
// #[cfg(feature = "enable_print")]
// println!("volume irq!");
// println!("CBANK: {val:08x}");
// }
// }
// // CHECK PD6
// unsafe {
// let mut val = 0;
// let reg: u32 = 0x40011408;
// val = (reg as *mut u32).read_volatile();
// // if ((val >> 0x6) & 0x1) == 0x0 {
// input_flags.main_btn_flag = true;
// #[cfg(feature = "enable_print")]
// println!("main_btn irq!");
// println!("DBANK: {val:08x}");
// // }
// }
}
// light_ctrl_btn_flag
// if (bits & (0x1 << light_ctrl_btn_pin)) != 0x0 {
// #[cfg(feature = "enable_print")]
// println!("light ctrl btn irq!");
// input_flags.light_ctrl_btn_flag = true;
// }
// Clear pending - Clears the EXTI's line pending bits.
exti.intfr().write(|w| w.0 = bits);