One data record with its typed reading.
record_type is :ar, :as, :cr, :dr or :ms; satellite is the
canonical identifier of an AS record and nil otherwise. civil_epoch
keeps the epoch fields, its second the nearest double to every digit the
seconds field states; epoch is the instant in the product's time scale,
nil when the time system resolves to no scale. values are the declared
values, bias first; surplus_values are values present beyond the declared
count as %{position: index, value: value}. line is the one-based line of
the record in the source (nil for a record built or edited through the
API) and line_count the lines it spans. reading and
continuation_reading say how the first and continuation lines were read:
{:columns, :v300 | :v304}, {:columns_trailing_text, :v300 | :v304},
:whitespace or :edited. The trailing suffix itself remains retained by
the core when declared values are edited and the product is written;
trailing_text_bytes and zero-based trailing_text_column expose it on the
record and survive value edits.
Summary
Types
@type reading() :: {:columns, :v300 | :v304} | {:columns_trailing_text, :v300 | :v304} | :whitespace | :edited | {:other, String.t()}
@type t() :: %Sidereon.GNSS.RINEX.Clock.Record{ civil_epoch: Sidereon.GNSS.RINEX.Clock.CivilEpoch.t(), continuation_reading: reading() | nil, epoch: Sidereon.GNSS.Ionosphere.Epoch.t() | nil, line: pos_integer() | nil, line_count: non_neg_integer(), name: String.t(), reading: reading() | nil, record_type: :ar | :as | :cr | :dr | :ms, satellite: String.t() | nil, surplus_values: [%{position: non_neg_integer(), value: float()}], trailing_text_bytes: binary() | nil, trailing_text_column: non_neg_integer() | nil, values: [float()] }