start integrating new susbystem commanding helper

This commit is contained in:
Robin Mueller committed 2026-07-14 12:57:05 +02:00
1 parent 818f7d19eb
commit 2700e03c16
7 files changed
+102 -47

No files matched your search

+2 -1
View File
@@ -1,4 +1,5 @@
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Copy, PartialEq, Eq, num_enum::IntoPrimitive, num_enum::TryFromPrimitive)]
#[repr(u32)]
pub enum Mode {
Passive,
Safe,
@@ -1,5 +1,8 @@
use core::str::FromStr;
use num_enum::TryFromPrimitive as _;
use satrs::mode::ModeRaw;
use crate::DeviceMode;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
@@ -11,6 +14,32 @@ pub enum Mode {
NoModeKeeping,
}
impl From<Mode> for ModeRaw {
fn from(value: Mode) -> Self {
match value {
Mode::Device(device_mode) => device_mode.into(),
Mode::NoModeKeeping => 5,
}
}
}
impl TryFrom<ModeRaw> for Mode {
type Error = ();
fn try_from(value: ModeRaw) -> Result<Self, Self::Error> {
match DeviceMode::try_from_primitive(value) {
Ok(val) => Ok(Mode::Device(val)),
Err(_) => {
if value == 5 {
Ok(Mode::NoModeKeeping)
} else {
Err(())
}
}
}
}
}
impl FromStr for Mode {
type Err = ();
+2 -1
View File
@@ -1,4 +1,5 @@
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Copy, PartialEq, Eq, num_enum::IntoPrimitive, num_enum::TryFromPrimitive)]
#[repr(u32)]
pub enum Mode {
Off,
Normal,
+4 -1
View File
@@ -29,8 +29,10 @@ pub enum ComponentId {
AcsSubsystem,
AcsMgmAssembly,
AcsController,
AcsMgm0,
AcsMgm1,
AcsMgt,
EpsSubsystem,
EpsPcdu,
@@ -159,7 +161,8 @@ pub trait Message {
/// The states are related both to the physical and the logical state of the device. Some
/// device handlers control the power supply of their own device and an off state might also
/// mean that the device is physically off.
#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Copy, Clone)]
#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Copy, Clone, num_enum::IntoPrimitive, num_enum::TryFromPrimitive)]
#[repr(u32)]
pub enum DeviceMode {
Off = 0,
On = 1,