doris_rs/record/
observation.rs

1#[cfg(doc)]
2use crate::prelude::Observable;
3
4#[cfg(feature = "serde")]
5use serde::{Deserialize, Serialize};
6
7use crate::prelude::SNR;
8
9/// Signal [Observation].
10#[derive(Copy, Default, Clone, Debug, PartialEq, PartialOrd)]
11#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
12pub struct Observation {
13    /// [SNR] for all frequency measurements
14    pub snr: Option<SNR>,
15
16    // /// Phase lock [Flag] for phase measurements specifically.
17    // pub phase_flag: Option<Flag>,
18    /// Measured value, unit is [Observable] dependent.
19    pub value: f64,
20}
21
22impl Observation {
23    /// Define DORIS [Observation] with [SNR] value
24    pub fn with_snr(mut self, snr: SNR) -> Self {
25        self.snr = Some(snr);
26        self
27    }
28
29    // /// Defines DORIS phase measurement with associated [Flag]
30    // pub fn with_phase_flag(mut self, flag: Flag) -> Self {
31    //     self.phase_flag = Some(flag);
32    //     self
33    // }
34
35    /// Defines new DORIS measurement with desired value.
36    /// Unit and meaning is dependent on attached [Observable].
37    pub fn with_value(mut self, value: f64) -> Self {
38        self.value = value;
39        self
40    }
41}
42
43#[cfg(test)]
44mod test {
45    // use super::*;
46
47    // #[test]
48    // fn default_flag() {
49    //     assert_eq!(Flag::default(), Flag::Ok);
50    // }
51
52    // #[test]
53    // fn parsing() {
54    //     for (flag, expected) in [("0", Flag::Ok), ("1", Flag::PowerFailure)] {
55    //         let parsed = Flag::from_str(flag).unwrap();
56
57    //         assert_eq!(parsed, expected);
58
59    //         let formatted = parsed.to_string();
60
61    //         assert_eq!(formatted, flag);
62    //     }
63    // }
64}