//! PUS Service 11 Scheduling #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Eq, Copy, Clone)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub enum Subservice { // Core subservices TcEnableScheduling = 1, TcDisableScheduling = 2, TcResetScheduling = 3, TcInsertActivity = 4, TcDeleteActivityByRequestId = 5, TcDeleteActivitiesByFilter = 6, // Time shift subservices TcTimeShiftActivityWithRequestId = 7, TcTimeShiftActivitiesByFilter = 8, TcTimeShiftAll = 15, // Reporting subservices TcDetailReportByRequestId = 9, TmDetailReport = 10, TcDetailReportByFilter = 11, TcSummaryReportByRequestId = 12, TmSummaryReport = 13, TcSummaryReportByFilter = 14, TcDetailReportAll = 16, TcSummaryReportAll = 17, // Subschedule subservices TcReportSubscheduleStatus = 18, TmReportSubscheduleStatus = 19, TcEnableSubschedule = 20, TcDisableSubschedule = 21, // Group subservices TcCreateScheduleGroup = 22, TcDeleteScheduleGroup = 23, TcEnableScheduleGroup = 24, TcDisableScheduleGroup = 25, TcReportAllGroupsStatus = 26, TmReportAllGroupsStatus = 27, } /// This status applies to sub-schedules and groups as well as specified in ECSS-E-ST-70-41C 8.11.3 #[derive(Debug, PartialEq, Eq, Copy, Clone)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub enum SchedStatus { Disabled = 0, Enabled = 1, } impl From for SchedStatus { fn from(value: bool) -> Self { if value { SchedStatus::Enabled } else { SchedStatus::Disabled } } } /// Time window types as specified in ECSS-E-ST-70-41C 8.11.3 #[derive(Debug, PartialEq, Eq, Copy, Clone)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub enum TimeWindowType { SelectAll = 0, TimeTagToTimeTag = 1, FromTimeTag = 2, ToTimeTag = 3, } #[cfg(test)] mod tests { use crate::ecss::scheduling::SchedStatus; #[test] fn test_bool_conv_0() { let enabled = true; let status: SchedStatus = enabled.into(); assert_eq!(status, SchedStatus::Enabled) } #[test] fn test_bool_conv_1() { let enabled = false; let status: SchedStatus = enabled.into(); assert_eq!(status, SchedStatus::Disabled) } }