fcb_looper/firmware/src/display.rs
2025-07-01 22:23:02 +02:00

35 lines
1.1 KiB
Rust

use crate::{bus::Bus, led_state::LedState};
use stm32f0xx_hal::{delay::Delay, prelude::*};
pub struct DisplayController;
impl DisplayController {
#[cfg(not(debug_assertions))]
pub fn run_boot_sequence(bus: &mut Bus, delay: &mut Delay) {
let mut boot_sequence_index = 0;
while let Some(led_state) = LedState::boot_sequence(boot_sequence_index) {
for _ in 0..20 {
for i in 0_u8..6_u8 {
let ic_3_value = led_state.ic_3_value(i as _);
bus.output(10, 1_u8 << i);
bus.output(3, ic_3_value);
delay.delay_us(1000u16);
bus.output(3, 0xFF);
bus.output(11, 4_u8 << i);
}
}
boot_sequence_index += 1;
}
}
pub fn display_led_state(i: u8, bus: &mut Bus, led_state: &LedState, delay: &mut Delay) {
let ic_3_value = led_state.ic_3_value(i as _);
bus.output(10, 1_u8 << i);
bus.output(3, ic_3_value);
delay.delay_us(20u16);
bus.output(3, 0xFF);
}
}