Skip to content

data(bandplans): add ISED license_classes to RAC Canada plan (#3061). Principle IV.#3088

Merged
ten9876 merged 1 commit into
mainfrom
aetherclaude/issue-3061
May 25, 2026
Merged

data(bandplans): add ISED license_classes to RAC Canada plan (#3061). Principle IV.#3088
ten9876 merged 1 commit into
mainfrom
aetherclaude/issue-3061

Conversation

@aethersdr-agent

Copy link
Copy Markdown
Contributor

Summary

Fixes #3061

What was changed

data(bandplans): add ISED license_classes to RAC Canada plan (#3061). Principle IV.

Files modified

  • resources/bandplans/rac-canada.json
  • resources/bandplans/ssa-sweden.json
 resources/bandplans/rac-canada.json | 219 ++++++++++++++++++------------------
 resources/bandplans/ssa-sweden.json |   2 +-
 2 files changed, 113 insertions(+), 108 deletions(-)

Generated by AetherClaude (automated agent for AetherSDR)


🤖 aethersdr-agent · cost: $15.6071 · model: claude-opus-4-7

… Principle IV.

Populates rac-canada.json with the license_classes block introduced
in #3050 using Canada's ISED RIC-3 / RBR-4 frequency authorizations:

- B  = Basic              (VHF/UHF only, >= 30 MHz)
- BH = Basic with Honours (all amateur bands)
- A  = Advanced           (all amateur bands)

All HF segments (1.8-29.7 MHz) are annotated "BH,A"; all segments at
50 MHz and above are annotated "B,BH,A"; receive-only beacon markers
keep `license: ""` so they pass through the filter unchanged. The
description is updated to make clear the class overlay is sourced
from ISED (the federal regulator), not from the RAC band-plan
document, which itself does not define class-based sub-segments.

For SSA Sweden, the description is updated to document why no
license_classes block is added: PTSFS 2025:1 treats Swedish amateurs
as a single qualification tier (the older CEPT Class 1 / Class 2
split was retired), so per-segment class filtering would be
misleading. The ATU pre-tune dialog hides the class combobox when no
license_classes block is present (AtuPreTuneDialog::populateLicenseClassRow,
#2649), so this is correct no-op behavior — the description records
the reasoning so a future contributor doesn't retry the addition.

IARU Region 1/2/3 plans are intentionally left unchanged: those
documents are mode-allocation-by-band, not class-allocation, and
operators wanting class filtering should select their national plan
(arrl-us, rac-canada) as the active plan.

Pure data change — no .cpp files modified, no test-target link
surface affected, no codegraph impact analysis applicable (the
dialog code path is data-driven and already in place from #3050).

Principle IV. Region-Aware Data Comes From BandPlanManager: the
class overlay is added to the per-region JSON files that drive
BandPlanManager, keeping the regional-data source authoritative
rather than introducing a parallel class-rules table.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

@aethersdr-agent aethersdr-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Data change looks good — thanks for the careful citation of ISED RIC-3 / RBR-4 in the description.

Verified:

  • license_classes schema ({B, BH, A}) matches the format already consumed by BandPlanManager::loadPlanFromJson (src/models/BandPlanManager.cpp:134-138).
  • Comma-separated license values ("BH,A", "B,BH,A") parse correctly via the existing split-and-trim in contiguousRegionsForBand (src/models/BandPlanManager.cpp:88-95). A Basic-only operator selecting "B" will be filtered out of HF segments (which carry only "BH,A") and permitted on ≥30 MHz segments — that matches the ISED rule cited in the description.
  • BCN segments retained "" license, consistent with the arrl-us.json convention so beacon markers always render regardless of class.
  • Spot-checked the regulatory boundary: Basic appears first at 50 MHz (6 m), absent on 30/24/21/18/14/10/7/5/3.5/1.8 MHz — correct.

One observation, not blocking:
The visual blend logic in SpectrumWidget.cpp:6104-6109 hardcodes tiers for "E", "E,G", and "T" only. The RAC codes ("B", "BH", "A", "B,BH,A", "BH,A") will all fall through to the default 0.60 blend, so previously-empty RAC segments will render slightly brighter than before (0.50 → 0.60). That's harmless and reads as "wider access" tier, but if/when we want per-tier dimming for Canada it would be a follow-up to that switch ladder — out of scope here.

The bundled Sweden description tweak is reasonable since it explains the absence of license_classes in the same regulatory-overlay vocabulary this PR introduces.

LGTM as a data-only change. Thanks!


🤖 aethersdr-agent · cost: $2.7793 · model: claude-opus-4-7

@ten9876 ten9876 merged commit 8ba680c into main May 25, 2026
5 checks passed
@ten9876 ten9876 deleted the aetherclaude/issue-3061 branch May 25, 2026 00:56
G6PWY-Chris pushed a commit to G6PWY-Chris/AetherSDR that referenced this pull request Jun 22, 2026
…dr#3061). Principle IV. (aethersdr#3088)

## Summary

Fixes aethersdr#3061

### What was changed

data(bandplans): add ISED license_classes to RAC Canada plan (aethersdr#3061).
Principle IV.

### Files modified

- `resources/bandplans/rac-canada.json`
- `resources/bandplans/ssa-sweden.json`

```
 resources/bandplans/rac-canada.json | 219 ++++++++++++++++++------------------
 resources/bandplans/ssa-sweden.json |   2 +-
 2 files changed, 113 insertions(+), 108 deletions(-)
```

---
Generated by AetherClaude (automated agent for AetherSDR)

---
<sub>🤖 aethersdr-agent · cost: $15.6071 · model: claude-opus-4-7</sub>

Co-authored-by: aethersdr-agent[bot] <273844287+aethersdr-agent[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add license_classes blocks to other regional bandplans (follow-up to #2649)

1 participant