Skip to content

Add licensing options: subscription, features, DVK refusal, live changes - #17

Merged
nigelfenton merged 1 commit into
mainfrom
feat/licence-options
Oct 13, 2026
Merged

nigelfenton merged 1 commit into
mainfrom
feat/licence-options

Conversation

@nigelfenton

Copy link
Copy Markdown
Owner

Asked for by K5PTB: test AetherSDR against different licences.

The sim now answers sub license all with the three FlexLib licence objects (license, license subscription, license feature) and can report any licence, at startup or live.

  • Startup: --subscription none|smartsdr+|early-access, --subscription-expires YYYY-MM-DD (a past date = expired), --license-feature NAME=0|1[:REASON] (repeatable), --dvk-refuses; --no-dvk-license kept. Malformed values stop the sim at startup.
  • Live: GET /license?feature=&enabled=&reason= / subscription= / expires= / dvk_refuses= changes the licence and pushes the new status to the connected client, with no reconnect. Everything is validated before anything changes. Rack mode takes radio=N. /state carries the licence.
  • DVK refusal: with dvk_refuses on, dvk ... commands are answered 0x50004001.
  • tests/test_licensing.py (20 checks), PROTOCOL.md §11, README.

Tests: full suite 44 passed.

End to end: against the aethersdr/AetherSDR#6292 build, with the keyer source on Automatic, AE switches Radio → Local when the licence goes off (the "Radio DVK" item is removed from the menu) and back to Radio when it comes on, without reconnecting.

🤖 Generated with Claude Code

The sim now answers 'sub license all' with the three FlexLib licence
objects (license, license subscription, license feature) and can be set
up to report any licence, at startup or live from the control port.
Asked for by K5PTB to test AetherSDR against different licences.

- --subscription none|smartsdr+|early-access, --subscription-expires,
  --license-feature NAME=0|1[:REASON] (repeatable), --dvk-refuses;
  --no-dvk-license kept
- /license?feature=&enabled=&reason= / subscription= / expires= /
  dvk_refuses= changes it live and pushes the status to the connected
  client; validated before anything changes; rack mode takes radio=N
- dvk commands refused with 50004001 when dvk_refuses is on
- tests/test_licensing.py (20 checks), PROTOCOL.md section 11, README

Checked end to end against the aethersdr/AetherSDR#6292 build: with the
keyer source on Automatic, AE switches Radio -> Local and back on live
licence changes without reconnecting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nigelfenton
nigelfenton merged commit ba1a2fd into main Oct 13, 2026
4 checks passed
@nigelfenton
nigelfenton deleted the feat/licence-options branch October 13, 2026 04:59
@nigelfenton nigelfenton mentioned this pull request Oct 13, 2026
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.

1 participant