Skip to content

Signal Computation Foundations

bijux-gnss-signal owns reusable facts and computations between shared GNSS types and receiver execution: signal catalogs, spreading codes, raw-sample meaning, replicas, timing, spectra, correlation, and tracking-loop primitives. Its behavior must remain meaningful without one receiver session, repository layout, navigation estimator, or command workflow.

Decide By Physical Ownership

flowchart TD
    behavior["candidate behavior"]
    physical{"defines signal, code,<br/>sample, phase, or spectrum?"}
    reusable{"same meaning outside<br/>one receiver session?"}
    policy{"selects work, interprets<br/>history, or emits run evidence?"}
    signal["signal package"]
    receiver["receiver package"]
    owner["stronger domain owner"]

    behavior --> physical
    physical -- yes --> reusable
    physical -- no --> owner
    reusable -- no --> receiver
    reusable -- yes --> policy
    policy -- no --> signal
    policy -- yes --> receiver

State does not by itself make a component receiver-owned. An oscillator may preserve phase and a filter may preserve delay-line state while remaining a reusable signal primitive. Ownership moves to receiver when behavior schedules channels, combines session history, declares lifecycle state, or commits operational evidence.

Start From The Signal Question

question contract
Which carrier, code, component role, wavelength, or acquisition default applies? Signal model assumptions
How is a primary, secondary, data, pilot, or multiplexed code generated? Code contracts
Which timing, replica, spectrum, correlation, or loop primitive applies? DSP contracts
What do encoded samples and capture metadata mean? Raw IQ and sample contracts
Which signal pair is compatible for an observation operation? Validation contracts
Which polymorphic source, sink, or correlator seam is stable? Trait contracts
Does the behavior belong in this package? Ownership boundary

Preserve Continuity

Signal computations often process blocks while modeling continuous physical time. The contract must expose enough origin and state to make chunking an implementation choice rather than a change in meaning.

flowchart LR
    origin["absolute sample or<br/>time origin"]
    state["phase, rate, and<br/>code state"]
    first["sample block"]
    second["next sample block"]
    joined["continuous result"]

    origin --> state --> first --> second
    first --> joined
    second --> joined

A continuous interval generated in adjacent blocks should agree with the same interval generated as one block within the documented numerical tolerance. That requires explicit sample rate, phase origin, wrapping domain, code rate, carrier frequency, and units.

Refuse Ambiguous Meaning

  • A signal identity must not be silently remapped to another carrier, component, code family, or GLONASS channel.
  • Raw bytes without sample format, quantization, sampling rate, and intermediate-frequency context are not a complete signal input.
  • Generic helpers must not erase data/pilot roles, secondary-code state, or constellation-specific modulation.
  • A DSP metric does not declare receiver lock; it provides evidence the receiver may use under its own lifecycle policy.
  • Signal compatibility does not establish navigation validity.

Use the package overview for the concise role, GPS L1 coarse-acquisition reference for a worked signal family, scope and non-goals for explicit refusals, and change principles before altering physical behavior.

Implementation evidence begins with the signal architecture, catalog guide, code-family guide, DSP guide, raw-IQ guide, and sample guide.