Skip to content

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

Description

@ten9876

Background

PR #3050 (closes #2649) added a `license_classes` JSON block to the bandplan schema. `arrl-us.json` shipped with it populated:

```json
"license_classes": {
"T": "Technician",
"G": "General",
"E": "Extra"
}
```

Combined with per-segment `license` codes, this lets the ATU pre-tune dialog filter scan centers to only the frequencies the operator's class authorizes — preventing accidental TX into a sub-band the operator isn't licensed for.

Other regional bandplans don't yet have the block populated, so operators on those plans see the no-filter behavior (combobox hidden, all segments treated as authorized).

Bandplans currently missing the block

File Region Class structure to add
`resources/bandplans/iaru-region1.json` EMEA IARU R1 doesn't actually have class structure — leave empty / unchanged
`resources/bandplans/iaru-region2.json` Americas Same — leave empty
`resources/bandplans/iaru-region3.json` APAC Same — leave empty
`resources/bandplans/rac-canada.json` Canada Basic, Basic-with-Honours, Advanced
`resources/bandplans/ssa-sweden.json` Sweden (research — SSA has Cept Class 1 / Class 2 in some references)

For IARU regional plans the answer is "no change needed" because the IARU recommendations are band-allocation-by-mode, not by license class — the underlying national regulators apply class restrictions. Operators on those plans should select their national plan (e.g. `arrl-us.json` for US ops on R2, or a future `rsgb-uk.json` for UK ops on R1) to get class filtering.

Bandplans worth adding fresh (not in repo today)

  • `rsgb-uk.json` — UK / RSGB Foundation / Intermediate / Full
  • `jarl-japan.json` — JARL 1st / 2nd / 3rd / 4th class
  • `dxcc-iaru-r1-de.json` (DARC Germany) — German Class A / Class E
  • `acma-australia.json` — ACMA Foundation / Standard / Advanced

These are good first-contribution targets for international operators who hit the project — the data is publicly available in each regulator's documentation.

Schema reminder

For each plan that adopts class structure:

  1. Add a top-level `license_classes` object: `{"": "", ...}`
  2. Annotate each segment's `license` field with comma-separated class codes (e.g. `"E,G"`)
  3. Segments with empty `license: ""` always pass through (BCN markers, general-purpose)

The dialog code at `AtuPreTuneDialog.cpp:populateLicenseClassRow()` auto-detects whether the active plan declares classes and shows/hides the combobox accordingly. Zero code change needed for new plans — pure data contribution.

Eligibility

Per-bandplan additions are great good-first-issue targets for community contributors with local-jurisdiction knowledge. `aetherclaude-eligible` for Canada (the bot can read the RAC docs and produce a defensible mapping); not eligible for jurisdictions where the data isn't unambiguously public.

Stats

  • Per plan: ~5-20 lines added to JSON file + ~5-15 lines of comma-prefix updates on segments
  • No code change required
  • Each plan can be its own micro-PR

Spotted by

Review of PR #3050 — the schema landed but only ARRL US was populated. Other regions deserve the same operator-safety floor.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GUIUser interfaceenhancementImprovement to existing featuregood first issueGood for newcomershelp wantedExtra attention neededmaintainer-reviewRequires maintainer review before any action is takensafetyEquipment protection concern

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions