From c6fe1611800bd6d8e5ad8b6adeb0bb6050caa354 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 16 Sep 2026 13:22:47 +0200 Subject: [PATCH] let's wrap this up --- satrs-example/client/src/main.rs | 11 +++++++---- satrs-example/src/acs/mgm.rs | 20 ++++++++------------ satrs-example/src/eps/mod.rs | 32 ++++++++------------------------ satrs-example/src/eps/pcdu.rs | 23 +++++++---------------- 4 files changed, 30 insertions(+), 56 deletions(-) diff --git a/satrs-example/client/src/main.rs b/satrs-example/client/src/main.rs index f6f39ab..4979574 100644 --- a/satrs-example/client/src/main.rs +++ b/satrs-example/client/src/main.rs @@ -137,9 +137,7 @@ fn handle_mgm_command( ) -> anyhow::Result<()> { if let Some(mode) = args.spi_fault { if target_id != types::ComponentId::AcsMgm0 { - bail!( - "SPI fault injection is only supported for MGM0 right now (minisim limitation)" - ); + bail!("SPI fault injection is only supported for MGM0 right now (minisim limitation)"); } inject_mgm_failure(mode.into())?; } @@ -419,7 +417,12 @@ fn inject_mgm_failure(mode: SpiFaultMode) -> anyhow::Result<()> { } } } - Err(e) if matches!(e.kind(), std::io::ErrorKind::WouldBlock | std::io::ErrorKind::TimedOut) => { + Err(e) + if matches!( + e.kind(), + std::io::ErrorKind::WouldBlock | std::io::ErrorKind::TimedOut + ) => + { bail!("minisim not reachable at {sim_addr} (ping timed out) - is it running?"); } Err(e) => return Err(e.into()), diff --git a/satrs-example/src/acs/mgm.rs b/satrs-example/src/acs/mgm.rs index 387622a..78e2739 100644 --- a/satrs-example/src/acs/mgm.rs +++ b/satrs-example/src/acs/mgm.rs @@ -16,8 +16,6 @@ use types::acs::mgm::response::ModeResponse; use types::pcdu::SwitchId; use types::{ComponentId, DeviceMode, HkRequestType, acs::mgm}; -use satrs::request::MessageMetadata; - use crate::ccsds::pack_ccsds_tm_packet_for_now; use crate::eps::PowerSwitchHelper; @@ -471,11 +469,9 @@ impl MgmHandlerLis3Mdl { let switch_target_on = target_mode != DeviceMode::Off; if self.mode_helpers.transition_state == TransitionState::Idle { let result = if switch_target_on { - self.switch_helper - .send_switch_on_cmd(MessageMetadata::new(0, self.id as u32), self.switch_id()) + self.switch_helper.send_switch_on_cmd(self.switch_id()) } else { - self.switch_helper - .send_switch_off_cmd(MessageMetadata::new(0, self.id as u32), self.switch_id()) + self.switch_helper.send_switch_off_cmd(self.switch_id()) }; if result.is_err() { // Could not send switch command.. still continue with transition. @@ -554,7 +550,7 @@ mod tests { }; use arbitrary_int::u11; - use satrs::{request::GenericMessage, spacepackets::SpacePacketHeader}; + use satrs::spacepackets::SpacePacketHeader; use satrs_minisim::acs::lis3mdl::MgmLis3RawValues; use types::{ Apid, ComponentId, TcHeader, @@ -600,7 +596,7 @@ mod tests { pub shared_switch_set: SharedSwitchSet, pub tc_tx: mpsc::SyncSender, pub tm_rx: mpsc::Receiver, - pub switch_rx: mpsc::Receiver>, + pub switch_rx: mpsc::Receiver, pub health_table: HealthTableMapSync, pub handler: MgmHandlerLis3Mdl, } @@ -697,8 +693,8 @@ mod tests { // Verify power switch handling. let switch_req = testbench.switch_rx.try_recv().expect("no switch request"); - assert_eq!(switch_req.message.switch_id, SwitchId::Mgm0); - assert_eq!(switch_req.message.target_state, SwitchStateBinary::On); + assert_eq!(switch_req.switch_id, SwitchId::Mgm0); + assert_eq!(switch_req.target_state, SwitchStateBinary::On); // This simulates one cycle for the power switch to update. testbench @@ -950,8 +946,8 @@ mod tests { .switch_rx .try_recv() .expect("no switch-off request sent after fault"); - assert_eq!(switch_req.message.switch_id, SwitchId::Mgm0); - assert_eq!(switch_req.message.target_state, SwitchStateBinary::Off); + assert_eq!(switch_req.switch_id, SwitchId::Mgm0); + assert_eq!(switch_req.target_state, SwitchStateBinary::Off); // Simulate the PCDU acting on the switch-off request. testbench diff --git a/satrs-example/src/eps/mod.rs b/satrs-example/src/eps/mod.rs index 8075bf1..6e3b714 100644 --- a/satrs-example/src/eps/mod.rs +++ b/satrs-example/src/eps/mod.rs @@ -2,10 +2,7 @@ use derive_new::new; use std::{cell::RefCell, collections::VecDeque, sync::mpsc, time::Duration}; use types::pcdu::{SwitchId, SwitchRequest, SwitchState, SwitchStateBinary}; -use satrs::{ - queue::GenericSendError, - request::{GenericMessage, MessageMetadata}, -}; +use satrs::{queue::GenericSendError, request::MessageMetadata}; use thiserror::Error; use crate::eps::pcdu::SwitchMapWrapper; @@ -16,7 +13,7 @@ pub mod pcdu; #[derive(new, Clone)] pub struct PowerSwitchHelper { - switcher_tx: mpsc::SyncSender>, + switcher_tx: mpsc::SyncSender, shared_switch_set: SharedSwitchSet, } @@ -37,28 +34,15 @@ pub enum SwitchInfoError { } impl PowerSwitchHelper { - pub fn send_switch_on_cmd( - &self, - requestor_info: satrs::request::MessageMetadata, - switch_id: SwitchId, - ) -> Result<(), GenericSendError> { - self.switcher_tx.send(GenericMessage::new( - requestor_info, - SwitchRequest::new(switch_id, SwitchStateBinary::On), - ))?; + pub fn send_switch_on_cmd(&self, switch_id: SwitchId) -> Result<(), GenericSendError> { + self.switcher_tx + .send(SwitchRequest::new(switch_id, SwitchStateBinary::On))?; Ok(()) } - #[allow(dead_code)] - pub fn send_switch_off_cmd( - &self, - requestor_info: satrs::request::MessageMetadata, - switch_id: SwitchId, - ) -> Result<(), GenericSendError> { - self.switcher_tx.send(GenericMessage::new( - requestor_info, - SwitchRequest::new(switch_id, SwitchStateBinary::Off), - ))?; + pub fn send_switch_off_cmd(&self, switch_id: SwitchId) -> Result<(), GenericSendError> { + self.switcher_tx + .send(SwitchRequest::new(switch_id, SwitchStateBinary::Off))?; Ok(()) } diff --git a/satrs-example/src/eps/pcdu.rs b/satrs-example/src/eps/pcdu.rs index a09dd59..41190cc 100644 --- a/satrs-example/src/eps/pcdu.rs +++ b/satrs-example/src/eps/pcdu.rs @@ -6,7 +6,7 @@ use std::{ use derive_new::new; use num_enum::{IntoPrimitive, TryFromPrimitive}; -use satrs::{request::GenericMessage, spacepackets::CcsdsPacketIdAndPsc}; +use satrs::spacepackets::CcsdsPacketIdAndPsc; use satrs_example::TimestampHelper; use satrs_minisim::{ SerializableSimMsgPayload, SimReply, SimRequest, @@ -264,7 +264,7 @@ pub enum OpCode { #[allow(clippy::too_many_arguments)] pub struct PcduHandler { dev_str: &'static str, - switch_request_rx: mpsc::Receiver>, + switch_request_rx: mpsc::Receiver, tc_rx: std::sync::mpsc::Receiver, tm_tx: mpsc::SyncSender, pub com_interface: ComInterface, @@ -277,7 +277,7 @@ impl PcduHandler { pub fn new( tc_rx: std::sync::mpsc::Receiver, tm_tx: std::sync::mpsc::SyncSender, - switch_request_rx: mpsc::Receiver>, + switch_request_rx: mpsc::Receiver, com_interface: ComInterface, shared_switch_map: Arc>, init_mode: DeviceMode, @@ -488,10 +488,7 @@ impl PcduHandler { loop { match self.switch_request_rx.try_recv() { Ok(switch_req) => { - self.handle_device_switching( - switch_req.message.switch_id(), - switch_req.message.target_state(), - ); + self.handle_device_switching(switch_req.switch_id(), switch_req.target_state()); } Err(e) => match e { mpsc::TryRecvError::Empty => break, @@ -531,10 +528,7 @@ mod tests { use std::sync::mpsc; use arbitrary_int::u11; - use satrs::{ - request::{GenericMessage, MessageMetadata}, - spacepackets::SpacePacketHeader, - }; + use satrs::spacepackets::SpacePacketHeader; use types::{ Apid, TcHeader, pcdu::{SwitchMapBinary, SwitchStateBinary}, @@ -593,7 +587,7 @@ mod tests { pub mode_reply_rx_to_parent: mpsc::Receiver, pub tc_tx: mpsc::SyncSender, pub tm_rx: mpsc::Receiver, - pub switch_request_tx: mpsc::Sender>, + pub switch_request_tx: mpsc::Sender, pub handler: PcduHandler, } @@ -730,10 +724,7 @@ mod tests { .unwrap(); testbench .switch_request_tx - .send(GenericMessage::new( - MessageMetadata::new(0, ComponentId::AcsMgm0 as u32), - SwitchRequest::new(SwitchId::Mgm0, SwitchStateBinary::On), - )) + .send(SwitchRequest::new(SwitchId::Mgm0, SwitchStateBinary::On)) .expect("failed to send switch request"); testbench.handler.periodic_operation(OpCode::RegularOp); testbench