sidereon 0.8.0

Thin ergonomic API over sidereon-core: SP3 loading and SPP/RTK/PPP positioning solves with rich result structs and one error enum
Documentation

sidereon

A thin, ergonomic Rust API over the sidereon-core engine.

It adds no modeling logic of its own: every function delegates to a sidereon-core reference entry point and re-exports its result structs, so the numerical behavior is identical to calling the core directly. What it provides is a small human surface:

  • load_sp3 parses a precise SP3 ephemeris product.
  • parse_antex / load_antex parse ANTEX antenna calibration products.
  • parse_rinex_nav / load_rinex_nav parse RINEX navigation products.
  • parse_rinex_obs / load_rinex_obs parse RINEX observation products.
  • parse_rinex_clock / load_rinex_clock parse RINEX clock products, with lossy variants for best-effort recovery.
  • decode_crinex / load_crinex expand Hatanaka-compressed observation files.
  • solve_spp runs single-point positioning.
  • solve_velocity solves receiver ECEF velocity and clock drift from range-rate or Doppler observations.
  • solve_rtk_float_with / solve_rtk_fixed_with solve static RTK baselines from typed configs; solve_rtk_float / solve_rtk_fixed remain the lower-level positional forms kept for bindings.
  • solve_ppp_float_with / solve_ppp_fixed_with solve static PPP arcs from typed configs; solve_ppp_float / solve_ppp_fixed remain the lower-level positional forms kept for bindings.
  • GNSS utility modules including frequencies, combinations, quality, carrier_phase, signal, velocity, broadcast_comparison, constants, navigation, geometry, and dgnss are re-exported from sidereon-core.
  • astro exposes astrodynamics modules for TLE/SGP4 propagation, numerical propagation, time/frame conversions, Sun/Moon positions, RF link budgets, eclipse events, conjunction/covariance utilities, TCA screening, and CDM/OMM parsing.
  • root-level tle, sgp4, passes, tca, propagator, and state remain shortcuts to the matching astro modules.
  • core domain modules including antex, rinex, ephemeris, positioning, rtk_filter, precise_positioning, and observables are available from the same crate root as the wrappers.
  • one Error enum unifies product parsing/loading and every solve failure.
let parsed = sidereon::load_sp3(b"not a valid sp3 file");
assert!(matches!(parsed, Err(sidereon::Error::Sp3(_))));

MIT licensed.

Attribution

The engine's SGP4 propagation is a Rust port of David Vallado's reference implementation (credit: David Vallado, AIAA 2006). See the sidereon-core crate for full attribution.