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}