toJoinChannelSet
Builds the ChannelSet to hand the QR channel-import dialog for a given option.
ADD omits lora_config so the dialog merges the offered channel into a free secondary slot with no reboot. SWITCH carries a fresh lora_config (not a copy of currentLora) with use_preset = true, the advertised preset+region applied, and every RF field left at its default — notably channel_num/override_frequency zeroed so firmware re-derives the frequency from the offered channel name (Apple FR-006). Starting blank guarantees no stale slot/frequency pin (channel_num, override_frequency, manual bandwidth/spread_factor/coding_rate) from the old mesh survives the retune. Only region is carried from currentLora when the beacon doesn't advertise one — this config is sent as a full LoRaConfig replacement, and a zero region disables transmit; hop_limit/tx_enabled fall back to the app's standard defaults. Returns null for NONE or a beacon with no offered channel.
Both paths strip position sharing from the offered channel (withoutPositionSharing) so joining a stranger's mesh never leaks our location — matching Apple's joinBeaconMesh/addBeaconChannel.
Parameters
The radio's current LoRaConfig; a switch reuses only its region/preset as fallbacks.