107: GLONASS FDMA + scan-all mode #46

Merged
ykp merged 1 commit from feat/107-glonass-scanall into main 2026-10-06 20:45:34 +02:00
Owner

Step 107 — GLONASS FDMA + scan-all mode

Engine (src/testgnss/engine/glonass.py)

  • glonass_slot_surface() — slot×Doppler surface: for each FDMA slot k, mix to slot carrier, run PCPS, take code-phase max per Doppler bin. Skips out-of-band slots.
  • glonass_single_slot_surface() — classic code-phase×Doppler surface for one slot.

Orchestrator (src/testgnss/orchestrator.py)

  • run_test(): new GLONASS single-slot branch using glonass_single_slot_surface()
  • run_test_scan_all(): iterates over all satellites of a service, returns sorted results by peak-to-floor. Uses efficient slot-scan for GLONASS.

Tests (tests/test_testgnss_glonass.py)

  • 8 tests: slot surface shape, peak at planted slot, single-slot surface, out-of-band rejection (T7), scan-all GPS/GLONASS/with-interference, orchestrator integration

Verification

All testgnss tests pass
ruff check src/testgnss/ tests/ → All checks passed

Depends on: 106 (GUI window)

## Step 107 — GLONASS FDMA + scan-all mode ### Engine (src/testgnss/engine/glonass.py) - `glonass_slot_surface()` — slot×Doppler surface: for each FDMA slot k, mix to slot carrier, run PCPS, take code-phase max per Doppler bin. Skips out-of-band slots. - `glonass_single_slot_surface()` — classic code-phase×Doppler surface for one slot. ### Orchestrator (src/testgnss/orchestrator.py) - `run_test()`: new GLONASS single-slot branch using glonass_single_slot_surface() - `run_test_scan_all()`: iterates over all satellites of a service, returns sorted results by peak-to-floor. Uses efficient slot-scan for GLONASS. ### Tests (tests/test_testgnss_glonass.py) - 8 tests: slot surface shape, peak at planted slot, single-slot surface, out-of-band rejection (T7), scan-all GPS/GLONASS/with-interference, orchestrator integration ### Verification ``` All testgnss tests pass ruff check src/testgnss/ tests/ → All checks passed ``` Depends on: 106 (GUI window)
107(testgnss): GLONASS FDMA + scan-all mode
All checks were successful
ci / test (3.14) (push) Successful in 1m47s
ci / test (3.12) (push) Successful in 1m53s
ci / testgnss (3.12) (push) Successful in 2m30s
ci / test (3.9) (push) Successful in 2m41s
ci / testgnss (3.14) (push) Successful in 2m6s
ci / testgnss (3.9) (push) Successful in 2m11s
ci / test (3.12) (pull_request) Successful in 3m1s
ci / test (3.14) (pull_request) Successful in 3m2s
ci / test (3.9) (pull_request) Successful in 3m1s
ci / testgnss (3.12) (pull_request) Successful in 2m49s
ci / testgnss (3.14) (pull_request) Successful in 2m43s
ci / testgnss (3.9) (pull_request) Successful in 2m44s
1c6b23adf7
- src/testgnss/engine/glonass.py: glonass_slot_surface (slot×Doppler
  scan) and glonass_single_slot_surface (classic code-phase×Doppler)
- src/testgnss/orchestrator.py: GLONASS single-slot path in run_test();
  add run_test_scan_all() for multi-satellite scan with sorted results
- tests/test_testgnss_glonass.py: 8 tests — slot surface shape, peak
  at planted slot, single-slot surface, out-of-band rejection,
  scan-all GPS/GLONASS/with-interference, orchestrator integration
- Backlog: 105/106 moved to docs/done/
ykp merged commit fa186431fd into main 2026-10-06 20:45:34 +02:00
ykp deleted branch feat/107-glonass-scanall 2026-10-06 20:45:34 +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!46
No description provided.