spacepackets/ecss/
event.rs

1//! PUS Service 5 Events
2use num_enum::{IntoPrimitive, TryFromPrimitive};
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Eq, PartialEq, Copy, Clone, IntoPrimitive, TryFromPrimitive)]
7#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
8#[repr(u8)]
9pub enum Subservice {
10    TmInfoReport = 1,
11    TmLowSeverityReport = 2,
12    TmMediumSeverityReport = 3,
13    TmHighSeverityReport = 4,
14    TcEnableEventGeneration = 5,
15    TcDisableEventGeneration = 6,
16    TcReportDisabledList = 7,
17    TmDisabledEventsReport = 8,
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn test_conv_into_u8() {
26        let subservice: u8 = Subservice::TmLowSeverityReport.into();
27        assert_eq!(subservice, 2);
28    }
29
30    #[test]
31    fn test_conv_from_u8() {
32        let subservice: Subservice = 2.try_into().unwrap();
33        assert_eq!(subservice, Subservice::TmLowSeverityReport);
34    }
35
36    #[test]
37    fn test_conv_fails() {
38        let conversion = Subservice::try_from(9);
39        assert!(conversion.is_err());
40        let err = conversion.unwrap_err();
41        assert_eq!(err.number, 9);
42    }
43}