018b: BeiDou B2a Gold codes + secondaries, bds_b2a Tier-1 flip; GLONASS CDMA disposition #26

Merged
ykp merged 1 commit from feat/018b-bds-b2a into main 2026-09-25 08:13:47 +02:00
Owner

Second step of the remaining-Tier-2 wave, stacked on merged 018a (PR #25).

BeiDou B2a (BDS-SIS-ICD-B2a-1.0, fetched 2017-12 PDF, section 5.2):

  • Primary codes are 13-stage GOLD codes (not Weil): data g1 = 1+x+x^5+x^11+x^13,
    g2 = 1+x^3+x^5+x^9+x^11+x^12+x^13; pilot g1 = 1+x^3+x^6+x^7+x^13,
    g2 = 1+x+x^5+x^7+x^8+x^12+x^13 (polynomials decoded from the PDF's =/+ term
    counts - two x^1 superscripts were lost in text extraction)
  • Structure mirrors the proven B3I machinery: register 1 (all-ones) truncated
    at 8190 chips, register 2 (13-bit per-PRN init, reciprocal c-set convention)
    runs its 8191-chip m-sequence; output = r1 XOR r2 over 10230 chips
  • Tables 5-2/5-3: 63 PRNs x 2 components, 126/126 rows validated against
    BOTH octal columns. Note: the ICD states data/pilot start "with the same
    initial bit values", but PRNs 61-63 print different inits - both validate,
    so both are kept per component (flagged in codes.py)
  • Pilot secondary (Table 5-4): 100-chip truncated Weil over prime 1021,
    all 63 rows validated; 3 rows carried single corrupted octal digits in the
    PDF text - unique repairs applied and documented (PRN 21/56/57)
  • Data secondary: fixed 5-bit sequence 00010 (MSB first)
  • bds_b2a flipped to Tier 1 (QPSK(10) I/Q @ 10.23 Mcps, power ~1:1 per
    Table 4-4 'effective ratio offset < 0.5 dB'); harness data replica

GLONASS CDMA disposition (glo_l1oc/l2oc/l3oc): the CDMA ICD appendices
remain 403-gated; gnss-sdr has no GLONASS CDMA support either (only FDMA
L1/L2 CA) - no public baked source found. Documented infeasible; the
signals stay Tier-2 in the registry.

Tests (6): PRN-1 octal columns, all 126 rows re-validated in-process,
secondary table validation (63 rows), properties/unknown-PRN, QPSK I/Q
recovery at amp/sqrt(2) with secondaries, end-to-end harness acquisition.

Local verification: pytest 191 passed + 1 gui skip, ruff clean (Python 3.14).

After this PR the only remaining Tier-2 signals are the GLONASS CDMA
trio (documented infeasible).
Next: v1.1 release (task tracked).

Note (process): NOT to be merged by automation - awaiting manual review/merge.

Second step of the remaining-Tier-2 wave, stacked on merged 018a (PR #25). **BeiDou B2a** (BDS-SIS-ICD-B2a-1.0, fetched 2017-12 PDF, section 5.2): - Primary codes are 13-stage GOLD codes (not Weil): data g1 = 1+x+x^5+x^11+x^13, g2 = 1+x^3+x^5+x^9+x^11+x^12+x^13; pilot g1 = 1+x^3+x^6+x^7+x^13, g2 = 1+x+x^5+x^7+x^8+x^12+x^13 (polynomials decoded from the PDF's =/+ term counts - two x^1 superscripts were lost in text extraction) - Structure mirrors the proven B3I machinery: register 1 (all-ones) truncated at 8190 chips, register 2 (13-bit per-PRN init, reciprocal c-set convention) runs its 8191-chip m-sequence; output = r1 XOR r2 over 10230 chips - Tables 5-2/5-3: 63 PRNs x 2 components, **126/126 rows validated** against BOTH octal columns. Note: the ICD states data/pilot start "with the same initial bit values", but PRNs 61-63 print different inits - both validate, so both are kept per component (flagged in codes.py) - Pilot secondary (Table 5-4): 100-chip truncated Weil over prime 1021, all 63 rows validated; 3 rows carried single corrupted octal digits in the PDF text - unique repairs applied and documented (PRN 21/56/57) - Data secondary: fixed 5-bit sequence 00010 (MSB first) - bds_b2a flipped to Tier 1 (QPSK(10) I/Q @ 10.23 Mcps, power ~1:1 per Table 4-4 'effective ratio offset < 0.5 dB'); harness data replica **GLONASS CDMA disposition (glo_l1oc/l2oc/l3oc):** the CDMA ICD appendices remain 403-gated; gnss-sdr has no GLONASS CDMA support either (only FDMA L1/L2 CA) - no public baked source found. Documented infeasible; the signals stay Tier-2 in the registry. **Tests** (6): PRN-1 octal columns, all 126 rows re-validated in-process, secondary table validation (63 rows), properties/unknown-PRN, QPSK I/Q recovery at amp/sqrt(2) with secondaries, end-to-end harness acquisition. Local verification: pytest 191 passed + 1 gui skip, ruff clean (Python 3.14). **After this PR the only remaining Tier-2 signals are the GLONASS CDMA trio (documented infeasible).** Next: v1.1 release (task tracked). Note (process): NOT to be merged by automation - awaiting manual review/merge.
018b(core): BeiDou B2a Gold codes (B2A ICD Tables 5-2..5-4, 126/126 validated) + secondaries, QPSK(10) I/Q generator, tier flip
All checks were successful
ci / test (3.12) (push) Successful in 1m12s
ci / test (3.14) (push) Successful in 1m13s
ci / test (3.14) (pull_request) Successful in 4m27s
ci / test (3.12) (pull_request) Successful in 4m34s
354564de99
ykp merged commit 545b63261f into main 2026-09-25 08:13:47 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ykp/gengnss!26
No description provided.