016c (3/3): Galileo E1-B/E1-C memory codes + CBOC(6,1,1/11) generator, gal_e1bc Tier-1 flip #24
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/016c3-e1-cboc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Final increment of backlog step 016c, stacked on merged 016c-1/2 (PR #22)
and 016c-2/2 (PR #23). Completes the Galileo line except full AltBOC.
Data provenance (important): the E1-B/E1-C primary codes are optimised
MEMORY codes - the OS SIS ICD (v2.1 and v2.2 alike) states they are provided
ONLY in the electronic Annex C, which is distributed via the GSC PRN-assignment
process and is not publicly fetchable (candidate URLs 404). The complete
tables (50 PRNs x 2 components x 4092 chips, hex) are therefore taken from
gnss-sdr (src/core/system_parameters/Galileo_E1.h), whose E1 replicas have
been validated against live Galileo signals for a decade. Consistency check
against the ICD: gnss-sdr's GALILEO_E1_C_SECONDARY_CODE reproduces the ICD's
published CS25_1 binary example bit-for-bit. Source and rationale documented
in codes.py.
Implementation
galileo_e1c_secondary() (CS25_1, 25 chips)
composite is real): E1-B on (asc_a + bsc_b), E1-C x CS25_1 on
(asc_a - bsc_b), a = sqrt(10/11), b = sqrt(1/11); E1B:E1C = 1:1
Tests (7): E1-B PRN-1 chips from the baked hex, table well-formedness
(50 PRNs x 4092 chips per component, B != C), unknown-PRN/component errors,
CS25_1 vs the ICD example, CBOC data/pilot recovery at amp/sqrt(2), 50/50
power split, end-to-end harness acquisition at a 3.5 ms delay.
016c status after this PR: Galileo E1 + E5 COMPLETE (Tier 1).
Remaining from 016c: GLONASS CDMA (ICD appendices 403-gated - documented
as infeasible from public sources) and full AltBOC(15,10) (deferred;
registry stays QPSK(10) SSB). GPS L1C (TMBOC, IS-GPS-800) also remains
deferred from 016b.
Local verification: pytest 180 passed + 1 gui skip, ruff clean (Python 3.14).
Note (process): NOT to be merged by automation - awaiting manual review/merge.