1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! Shared GNSS constants.
//!
//! These are semantic constants used across multiple GNSS modules. A parity
//! target may still keep a local alias or comment when the operation order of a
//! formula matters, but the source value lives here so modules do not drift.
pub use SECONDS_PER_WEEK;
/// Seconds in half a GNSS week, the rollover fold threshold.
pub const HALF_WEEK_S: f64 = SECONDS_PER_WEEK / 2.0;
/// Seconds per civil day.
pub const SECONDS_PER_DAY: f64 = 86_400.0;
/// Speed of light in vacuum (m/s), IS-GPS-200.
pub const C_M_S: f64 = 299_792_458.0;
/// GPS L1 carrier frequency (Hz). Galileo E1 shares this frequency.
pub const F_L1_HZ: f64 = 1_575.42e6;
/// BeiDou B1I carrier frequency (Hz).
pub const F_B1I_HZ: f64 = 1_561.098e6;
/// WGS84 Earth rotation rate (rad/s), used by GNSS Sagnac/transport terms.
pub const OMEGA_E_DOT_RAD_S: f64 = 7.2921151467e-5;
/// Meters per kilometer.
pub const M_PER_KM: f64 = 1000.0;
/// Astronomical unit (km), Skyfield convention.
pub const AU_KM: f64 = 149_597_870.700;
/// WGS84 ellipsoid semi-major axis (km).
pub const WGS84_A_KM: f64 = 6378.137;
/// WGS84 ellipsoid flattening.
pub const WGS84_F: f64 = 1.0 / 298.257223563;
/// WGS84 first eccentricity squared.
pub const WGS84_E2: f64 = 2.0 * WGS84_F - WGS84_F * WGS84_F;
/// Seconds from GPS epoch (1980-01-06 00:00) to J2000 (2000-01-01 12:00).
pub const GPS_EPOCH_TO_J2000_S: f64 = 630_763_200.0;
/// GPS Time minus BeiDou Time (seconds): BDT = GPST - 14 s.
pub const GPST_MINUS_BDT_S: f64 = 14.0;
/// Seconds from the GPS epoch to the BeiDou epoch (2006-01-01).
pub const BDS_EPOCH_MINUS_GPS_EPOCH_S: f64 = 1356.0 * SECONDS_PER_WEEK;