spacepackets/ecss/
event.rs1use 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}