spacepackets/src/ecss/hk.rs

63 lines
1.8 KiB
Rust
Raw Normal View History

2023-02-04 15:16:57 +01:00
//! PUS Service 3 Housekeeping
2023-02-04 15:45:23 +01:00
use num_enum::{IntoPrimitive, TryFromPrimitive};
2023-02-04 15:16:57 +01:00
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Eq, PartialEq, Copy, Clone, IntoPrimitive, TryFromPrimitive)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
2024-03-29 13:42:02 +01:00
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
2023-02-04 15:16:57 +01:00
#[repr(u8)]
pub enum Subservice {
2023-02-04 15:45:23 +01:00
// Regular HK
TcCreateHkReportStructure = 1,
TcDeleteHkReportStructures = 3,
TcEnableHkGeneration = 5,
TcDisableHkGeneration = 6,
TcReportHkReportStructures = 9,
2023-02-04 15:16:57 +01:00
TmHkPacket = 25,
TcGenerateOneShotHk = 27,
2023-02-04 15:45:23 +01:00
TcModifyHkCollectionInterval = 31,
// Diagnostics HK
TcCreateDiagReportStructure = 2,
TcDeleteDiagReportStructures = 4,
TcEnableDiagGeneration = 7,
TcDisableDiagGeneration = 8,
TmHkStructuresReport = 10,
TcReportDiagReportStructures = 11,
TmDiagStructuresReport = 12,
TmDiagPacket = 26,
TcGenerateOneShotDiag = 28,
TcModifyDiagCollectionInterval = 32,
2023-02-04 15:16:57 +01:00
}
2023-12-03 13:05:55 +01:00
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_try_from_u8() {
let hk_report_subservice_raw = 25;
let hk_report: Subservice = Subservice::try_from(hk_report_subservice_raw).unwrap();
assert_eq!(hk_report, Subservice::TmHkPacket);
}
#[test]
fn test_into_u8() {
let hk_report_raw: u8 = Subservice::TmHkPacket.into();
assert_eq!(hk_report_raw, 25);
}
#[test]
fn test_partial_eq() {
let hk_report_raw = Subservice::TmHkPacket;
assert_ne!(hk_report_raw, Subservice::TcGenerateOneShotHk);
assert_eq!(hk_report_raw, Subservice::TmHkPacket);
}
#[test]
fn test_copy_clone() {
let hk_report = Subservice::TmHkPacket;
let hk_report_copy = hk_report;
assert_eq!(hk_report, hk_report_copy);
}
}