use crate::firmware::boot_target::BootTarget; use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep, SplashScreenStep}; use crate::firmware::prometeu_context::PrometeuContext; use prometeu_hal::log::{LogLevel, LogSource}; #[derive(Debug, Clone)] pub struct ResetStep; impl ResetStep { pub fn on_enter(&mut self, ctx: &mut PrometeuContext) { ctx.os.log(LogLevel::Info, LogSource::Pos, 0, "Firmware Reset".to_string()); ctx.os.reset(ctx.vm); } pub fn on_update(&mut self, ctx: &mut PrometeuContext) -> Option { match ctx.boot_target { BootTarget::Hub => Some(FirmwareState::SplashScreen(SplashScreenStep { frame: 0 })), BootTarget::Cartridge { .. } => Some(FirmwareState::LaunchHub(LaunchHubStep)), } } pub fn on_exit(&mut self, _ctx: &mut PrometeuContext) {} }