Skip to content

Public Imports

Import signal-owned behavior from bijux_gnss_signal::api. The crate has one public module and no feature-dependent API variants, so callers should not depend on private module layout or use another crate’s re-export as the canonical owner.

Choose The Owning Import

flowchart TD
    need["value or behavior needed"]
    signal{"signal-owned?"}
    api{"exported by signal API?"}
    direct["declare direct signal dependency and import from api"]
    review["review whether a durable signal export is missing"]
    core{"shared identity, unit, time, or record?"}
    core_api["import from core API"]
    higher["import from receiver, navigation, or infrastructure owner"]

    need --> signal
    signal -- yes --> api
    api -- yes --> direct
    api -- no --> review
    signal -- no --> core
    core -- yes --> core_api
    core -- no --> higher

Public signal traits use core sample records in their signatures. That does not make core types signal-owned. A caller that names those records independently should use the core API boundary rather than relying on an incidental path through a higher crate.

Public Families

family use it for do not use it for
catalog and physical helpers registry lookup, carrier and wavelength conversion, component identity, shared-path Doppler and ionosphere scaling receiver support policy or navigation solution claims
code families constellation-specific assignments, chips, samplers, symbol timing, and stable constants acquisition scheduling or channel lifecycle
DSP primitives front-end models, NCO, phase math, replicas, spectrum, correlation, loop helpers, and uncertainty runtime orchestration or persisted evidence
raw-IQ contracts format, quantization, metadata, and numeric sample conversion dataset discovery or run layout
observation compatibility structural observation validation, dual-frequency pairing, and alignment evidence estimator accuracy or integrity
traits generic sample sources, minimal sources, correlators, and sample sinks receiver logging, scheduling, or repository persistence

The authoritative inventory is the signal public API. The trait contract explains the four implementable seams.

Direct Dependency Or Convenience Facade

flowchart LR
    owner["signal API"]
    receiver["receiver signal facade"]
    command["top-level signal facade"]
    consumer["downstream consumer"]

    owner --> receiver
    owner --> command
    owner --> consumer
    receiver -. "integration convenience" .-> consumer
    command -. "application convenience" .-> consumer

Receiver and the top-level crate expose convenience routes to signal behavior. Use those routes when writing against the higher crate’s integrated surface. Declare a direct signal dependency when the caller’s own logic depends on signal semantics. This keeps ownership, version review, and API documentation visible in the caller’s manifest.

Do not:

  • import a signal helper from receiver merely to avoid declaring the owning dependency;
  • expose a private lookup table because one caller needs a shortcut;
  • create aliases that erase constellation, component, unit, or model meaning;
  • route receiver policies or navigation estimators through the signal API.

Compatibility Review

flowchart TD
    export["proposed public change"]
    owned{"durable signal meaning?"}
    reject["keep private or move to owner"]
    serialized{"serialized metadata?"}
    traits{"trait signature?"}
    numeric{"units, defaults, or numerical meaning?"}
    proof["focused proof and direct consumer review"]

    export --> owned
    owned -- no --> reject
    owned -- yes --> serialized
    serialized -- yes --> proof
    serialized -- no --> traits
    traits -- yes --> proof
    traits -- no --> numeric
    numeric --> proof

Treat these as compatibility-sensitive even when Rust still compiles:

  • registry defaults, identifiers, carrier frequencies, component roles, and supported band pairs;
  • serde field names or defaults in raw-IQ metadata;
  • stable quantization identifiers used by commands and artifacts;
  • trait methods, associated errors, end-of-stream semantics, and downcasting;
  • units, phase conventions, sign conventions, and numerical tolerances.

The compatibility commitments define the review standard. The signal completion gate maps each public family to executable evidence.