# `Sidereon.GNSS.Navigation.LNAV.Ephemeris`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/gnss/navigation/lnav/ephemeris.ex#L1)

GPS LNAV clock and ephemeris parameters in engineering units.

Each field holds the natural engineering-unit value, i.e. the product of the
integer transmitted in the LNAV message and that parameter's IS-GPS-200 scale
factor (the value listed in IS-GPS-200 Tables 20-I, 20-II, and 20-III).
Angular ephemeris terms are in *semicircles* (1 semicircle = pi radians);
multiply by pi to obtain radians. The harmonic correction terms are already in
radians.

## Subframe 1 - clock and health (IS-GPS-200 Table 20-I)

  * `:week_number` - GPS week number, 10-bit truncated (weeks, integer).
  * `:l2_code` - code(s) on L2 indicator (2-bit code, integer; default 0).
  * `:l2_p_data_flag` - L2-P data flag (0/1; default 0).
  * `:ura_index` - SV accuracy (URA) index, 0..15 (integer).
  * `:sv_health` - SV health, 6-bit (integer).
  * `:iodc` - issue of data, clock, 10-bit (integer).
  * `:tgd` - group delay differential (seconds).
  * `:toc` - clock data reference time (seconds).
  * `:af0` - SV clock bias (seconds).
  * `:af1` - SV clock drift (seconds/second).
  * `:af2` - SV clock drift rate (seconds/second^2).

## Subframe 2 - ephemeris part 1 (IS-GPS-200 Table 20-II)

  * `:iode` - issue of data, ephemeris, 8-bit (integer).
  * `:crs` - amplitude of the sine harmonic correction to orbit radius (meters).
  * `:delta_n` - mean motion difference from computed value (semicircles/second).
  * `:m0` - mean anomaly at reference time (semicircles).
  * `:cuc` - amplitude of the cosine harmonic correction to argument of latitude (radians).
  * `:eccentricity` - orbital eccentricity (dimensionless).
  * `:cus` - amplitude of the sine harmonic correction to argument of latitude (radians).
  * `:sqrt_a` - square root of the semi-major axis (sqrt(meters)).
  * `:toe` - ephemeris reference time (seconds).
  * `:fit_interval_flag` - fit-interval flag (0/1; default 0).
  * `:aodo` - age of data offset term, 5-bit integer 0..31 (the offset in
    seconds is the term times 900; default 0).

## Subframe 3 - ephemeris part 2 (IS-GPS-200 Table 20-III)

  * `:cic` - amplitude of the cosine harmonic correction to inclination (radians).
  * `:omega0` - longitude of ascending node at weekly epoch (semicircles).
  * `:cis` - amplitude of the sine harmonic correction to inclination (radians).
  * `:i0` - inclination at reference time (semicircles).
  * `:crc` - amplitude of the cosine harmonic correction to orbit radius (meters).
  * `:omega` - argument of perigee (semicircles).
  * `:omega_dot` - rate of right ascension (semicircles/second).
  * `:idot` - rate of inclination angle (semicircles/second).

# `t`

```elixir
@type t() :: %Sidereon.GNSS.Navigation.LNAV.Ephemeris{
  af0: term(),
  af1: term(),
  af2: term(),
  aodo: term(),
  cic: term(),
  cis: term(),
  crc: term(),
  crs: term(),
  cuc: term(),
  cus: term(),
  delta_n: term(),
  eccentricity: term(),
  fit_interval_flag: term(),
  i0: term(),
  idot: term(),
  iodc: term(),
  iode: term(),
  l2_code: term(),
  l2_p_data_flag: term(),
  m0: term(),
  omega: term(),
  omega0: term(),
  omega_dot: term(),
  sqrt_a: term(),
  sv_health: term(),
  tgd: term(),
  toc: term(),
  toe: term(),
  ura_index: term(),
  week_number: term()
}
```

# `example`

```elixir
@spec example() :: t()
```

A representative set of clock and ephemeris parameters for a MEO GPS SV.

Useful for documentation and round-trip examples. Several signed fields carry
negative values.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
