# `Sidereon.GNSS.SSR`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/gnss/ssr.ex#L1)

State-space GNSS corrections.

This module is the Elixir wrapper over the core SSR/HAS correction store and
corrected broadcast ephemeris source. It holds decoded corrections in a native
resource and evaluates corrected satellite states through the core.

# `epoch`

```elixir
@type epoch() :: NaiveDateTime.t() | tuple() | number()
```

# `t`

```elixir
@type t() :: %Sidereon.GNSS.SSR{handle: reference()}
```

# `clock`

```elixir
@spec clock(t(), String.t()) ::
  {:ok, Sidereon.GNSS.SSR.ClockCorrection.t()} | {:error, term()}
```

Return the latest clock correction for a satellite.

# `clock!`

# `corrected_position`

```elixir
@spec corrected_position(
  Sidereon.GNSS.Broadcast.t(),
  t(),
  String.t(),
  epoch(),
  keyword()
) ::
  {:ok, %{position_ecef_m: {float(), float(), float()}, clock_s: float()}}
  | {:error, term()}
```

Evaluate an SSR-corrected broadcast satellite state at an epoch.

# `corrected_position!`

# `from_rtcm`

```elixir
@spec from_rtcm(binary(), non_neg_integer(), number(), keyword()) ::
  {:ok, t()} | {:error, term()}
```

Decode framed RTCM SSR/HAS messages into a correction store.

# `from_rtcm!`

# `ingest`

```elixir
@spec ingest(t(), Sidereon.GNSS.RTCM.message(), non_neg_integer(), number()) ::
  :ok | {:error, term()}
```

Ingest one decoded RTCM message into an existing correction store.

Non-SSR RTCM messages are ignored by the core store.

# `new`

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

Create an empty correction store.

# `orbit`

```elixir
@spec orbit(t(), String.t()) ::
  {:ok, Sidereon.GNSS.SSR.OrbitCorrection.t()} | {:error, term()}
```

Return the latest orbit correction for a satellite.

# `orbit!`

# `sample`

Sample an SSR-corrected broadcast source over a time grid.

# `sample!`

# `ura_index`

```elixir
@spec ura_index(t(), String.t()) :: {:ok, integer()} | {:error, term()}
```

Return the latest SSR URA index for a satellite.

# `ura_index!`

---

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