35 lines
1.1 KiB
Rust
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);
|
|
}
|
|
|
|
} |