Skip to content

v0.3.6 — several clients at once (MultiFlex + bound controllers)

Latest

Choose a tag to compare

@nigelfenton nigelfenton released this 22 Oct 04:06
· 8 commits to main since this release
e34dfc7

The Flex radio sim now serves several API clients at once, as a real FlexRadio does. A controller can sit beside AetherSDR and drive its slices, for example a CTR2 through AetherSDR's CTR2 Relay. With only AetherSDR connected, nothing changes.

About the binaries below: they are the Flex radio sim (flex_sim.py). The KPA1500, ANAN and station sims run from source.

Added: several clients at once (#24)

  • Each connection is served on its own thread, with its own client handle (V/H greeting) and its own send lock. The radio's slices, panadapters and transmit state stay shared.
  • GUI and non-GUI clients: a client that sends client gui is a GUI client. sub client all reports client 0x<handle> connected … client_id=<uuid> program=… station=… for each one, and disconnected when it leaves.
  • client bind client_id=<uuid>: a non-GUI controller binds to a GUI client, then sees and drives that client's slices (slice tune, slice set … mode=, audio_level=, filter, xmit / transmit set mox=). Status reaches every client that should see it.
  • Disconnects are per client: only the leaving client's own slices and pans are removed, and TX is dropped only if that client keyed it.

Fixed: autopan=1 re-announces the pan (#25)

slice tune <n> <MHz> autopan=1 now re-sends the panadapter status with its new centre, as display pan set center= already did. Before, AetherSDR kept the old centre while the sim framed the spectrum on the new one, so the carrier pattern appeared away from the slice flag.

Added: sim get / sim set level= (#25)

Flex sim-only API verbs, so a controller without access to the web control panel can read and set the signal level (the same value as the panel's signal-level slider):

  • sim get replies level=<dBm> floor=<dBm> pattern=<name>.
  • sim set level=<dBm> sets it, clamped like the slider.

A real radio rejects them. Documented in PROTOCOL.md as a flex-sim extension.

Tested with

AetherSDR's CTR2 Relay and a CTR2-Max running the AetherPanel firmware:

  • the controller binds to AetherSDR's session
  • the VFO tunes with autopan=1 and the pan follows, with the carrier on the flag
  • push-and-turn sets the signal level
  • PTT and TUNE key the sim only