rinex/antex/
mod.rs

1//! Antex (ATX) - special RINEX, for antenna caracteristics
2pub mod antenna;
3pub mod frequency;
4pub mod pcv;
5pub mod record;
6
7pub use pcv::Pcv;
8// pub use frequency::{Frequency, Pattern};
9
10pub use antenna::{
11    Antenna, AntennaMatcher, AntennaSpecific, Calibration, CalibrationMethod, RxAntenna, SvAntenna,
12};
13
14pub use record::{FrequencyDependentData, Record};
15
16use crate::prelude::FormattingError;
17
18use std::io::{BufWriter, Write};
19
20#[cfg(feature = "serde")]
21use serde::{Deserialize, Serialize};
22
23#[derive(Clone, Debug, Default, PartialEq)]
24#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
25pub struct HeaderFields {
26    /// Type of Phase Center Variation in use
27    pub pcv_type: pcv::Pcv,
28    /// Optionnal reference antenna Serial Number
29    /// used to produce this calibration file
30    pub reference_ant_sn: Option<String>,
31}
32
33impl HeaderFields {
34    /// Formats [HeaderFields] into [BufWriter].
35    pub(crate) fn format<W: Write>(&self, _w: &mut BufWriter<W>) -> Result<(), FormattingError> {
36        Ok(())
37    }
38
39    /// Set Phase Center Variations type
40    pub fn with_pcv_type(&self, pcv: Pcv) -> Self {
41        let mut s = self.clone();
42        s.pcv_type = pcv;
43        s
44    }
45
46    /// Sets Reference Antenna serial number
47    pub fn with_reference_antenna_sn(&self, sn: &str) -> Self {
48        let mut s = self.clone();
49        s.reference_ant_sn = Some(sn.to_string());
50        s
51    }
52}