one more function

This commit is contained in:
Robin Mueller
2026-07-10 17:17:34 +02:00
parent 7efaa0757b
commit 3ea16c1558
+32 -28
View File
@@ -177,6 +177,33 @@ impl Subsystem {
}
}
pub fn execute_transition_step(&mut self, step: &TransitionCommands) {
if let Some((target_mode, _info)) = &step.mgm_assembly_mode {
self.mode_request_senders
.mode_request_assy
.send(models::acs::mgm_assembly::request::ModeRequest::SetMode(
*target_mode,
))
.expect("failed to send mode request to MGM assembly");
}
if let Some((target_mode, _info)) = &step.mgt_mode {
self.mode_request_senders
.mode_request_mgt
.send(models::acs::mgt::request::ModeRequest::SetMode(
*target_mode,
))
.expect("failed to send mode request to MGM assembly");
}
if let Some((target_mode, _info)) = &step.controller_mode {
self.mode_request_senders
.mode_request_ctrl
.send(models::acs::ctrl::request::ModeRequest::SetMode(
*target_mode,
))
.expect("failed to send mode request to MGM assembly");
}
}
pub fn handle_mode_request(
&mut self,
mode_request: models::acs::subsystem::request::ModeRequest,
@@ -184,34 +211,11 @@ impl Subsystem {
match mode_request {
models::acs::subsystem::request::ModeRequest::SetMode(target_mode) => {
self.mode_helper.start(target_mode);
match target_mode {
models::acs::subsystem::Mode::Off => {
// TODO: We need to start executing the transition table here..
/*
self.mode_request_senders
.mode_request_assy
.send(models::acs::mgm_assembly::request::ModeRequest::SetMode(
models::acs::mgm_assembly::Mode::Device(models::DeviceMode::Off),
))
.expect("failed to send mode request to MGM assembly");
self.mode_request_senders
.mode_request_mgt
.send(models::acs::mgt::request::ModeRequest::SetMode(
models::acs::mgt::Mode::Normal,
))
.expect("failed to send mode request to MGM assembly");
self.mode_request_senders
.mode_request_ctrl
.send(models::acs::ctrl::request::ModeRequest::SetMode(
models::acs::ctrl::Mode::Passive,
))
.expect("failed to send mode request to MGM assembly");
*/
}
models::acs::subsystem::Mode::Safe => {
// TODO: Perform SAFE sequence.
}
}
self.transition_step = 0;
let first_step = Self::transition_sequence_for_mode(target_mode)
.get(self.transition_step)
.expect("empty transition table");
self.execute_transition_step(first_step);
}
models::acs::subsystem::request::ModeRequest::ReadMode => {
self.send_telemetry(