CGGTTS

Rust package to manipulate CGGTTS (BIPM) data files

Rust codecov

CGGTTS is specified by BIPM, Paris (Bureau International des Poids & des Mesures) and is dedicated to GNSS Time Transfer, Common View, Two Way Satellites time transfers.

CGGTTS Specifications

Supported version: "2E". Older versions are not managed by this lib, mainly because it knows how to manipulate cable delays.

Examples

For compelling examples, refer to the integrated test methods.

Basic usage

Basic usage does not provide enough information for dual frequency CGGTTS, but gets you started quickly

rust let mut cggtts = Cggtts::new(); cggtts.set_lab_agency("MyLab"); cggtts.set_nb_channels(10); // Antenna phase center coordinates [m] IRTF referencing cggtts.set_antenna_coordinates( (+4027881.79.0,+306998.67,+4919499.36) ); // basic usage, only total system delay is known cggtts.set_total_delay(300E-9);

Building from a file

```rust let cggtts = Cggtts::fromfile("data/standard/GSOP0159.571"); prinln!("{:?}", cggtts); prinln!("{:?}", cggtts.gettrack(3)); asserteq!(cggtts.hasionosphericparameters(), false); // basic println!("{:?}", cggtts.getantennacoordinates()); println!("{}", cggtts.gettotaldelay().unwrap()); // always asserteq!(cggtts.getsystemdelay().iserr(), true); // basic usage asserteq!(cggtts.getcabledelay().is_err(), true); // basic usage

let cggtts = Cggtts::from_file("data/ionospheric/GSOP0159.571");
prinln!("{}", cggtts);
prinln!("{:?}", cggtts.get_track(5));
assert_eq!(cggtts.has_ionospheric_parameters(), true); // advanced
println!("{}", cggtts.get_total_delay().unwrap()); // always
assert_eq!(cggtts.get_system_delay().is_err(), false); // advanced usage
assert_eq!(cggtts.get_cable_delay().is_err(), false); // advanced usage
println!("{}", cggtts.get_cable_delay().unwrap());

```

CGGTTS Tracks manipulation ```rust let mut cggtts = [...] let mut track = track::Cggttrack::new(); track.setelevation(180.0); track.setazimuth(180.0); track.setduration(track::BIPMSPECIFIEDTRACKINGDURATION); cggtts.add_track(track);

let mut track = cggtts.pop(); // grab 1 please
assert_eq!(track.get_satellite_id(), 0xFF); // Multi satellite PRN#
track.set_satellite_id(0x01); // Single SatVehicule PRN#

```