You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OpenGD77 (and CPS formats generally) model a zone as a flat list of channels. Operators often want hierarchy: e.g. zones Glasgow and Edinburgh, plus a parent zone Scotland that should contain everything in both. There is no way to express this today, and the vendor format cannot represent nesting.
Intended outcome
Allow a zone to include other zones as members, as an application-only concept:
The structure must be acyclic (a DAG / forest): a zone cannot contain itself directly or transitively.
Tools resolve a zone's effective channel set by recursively flattening child zones and de-duplicating by channel id (stable order).
At the export boundary the hierarchy is denormalised to a flat channel list per the target CPS version (the radio only ever sees channels). Example: writing Scotland emits the de-duplicated union of Glasgow + Edinburgh channels.
Not importable: vendor exports are flat, so a round-trip import cannot reconstruct the hierarchy. This is an accepted compromise — nesting is created and maintained only inside the app.
Behaviour details
Cycle prevention: reject or ignore any membership edge that would introduce a cycle; surface a clear validation error in the UI.
Effective membership: union of the zone's own channels and the effective channels of each child zone, de-duplicated by channel id, order-stable (depth-first, parents' own channels first is a reasonable default — finalise during design).
Vendor limits on export: flattening can exceed CPS per-zone limits (e.g. OpenGD77's ~80-channel zone cap). Detect and warn (and/or document) when a denormalised zone overflows the target's limit.
Map/report tools should visualise/aggregate using the effective (flattened) channel set.
Problem
OpenGD77 (and CPS formats generally) model a zone as a flat list of channels. Operators often want hierarchy: e.g. zones
GlasgowandEdinburgh, plus a parent zoneScotlandthat should contain everything in both. There is no way to express this today, and the vendor format cannot represent nesting.Intended outcome
Allow a zone to include other zones as members, as an application-only concept:
id, building on the ID-based model from feat: genericise CPS import via internal data models #7).Scotlandemits the de-duplicated union ofGlasgow+Edinburghchannels.Behaviour details
Affected tool(s)
tools/(map first), export (feat: CPS export support (internal models → vendor format) #8), and any report/CRUD tools.Notes / dependencies
Out of scope