25 lines
935 B
Rust
25 lines
935 B
Rust
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.sessions().clear_vm_sessions();
|
|
ctx.os.vm().reset_global_runtime_state();
|
|
}
|
|
|
|
pub fn on_update(&mut self, ctx: &mut PrometeuContext) -> Option<FirmwareState> {
|
|
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) {}
|
|
}
|