one more function
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user