Repository navigation
v3.0.0rc1
Added
- Discard queued playback on TX streams (MOR-3760).
TxStreamand
DuplexStreamgainasync discard_queued(), dropping every playback
frame queued but not yet handed to the device and returning how many
queued writes were dropped;TxStreamHealthreportsdiscard_events
anddiscarded_audio_ms. - Outside-only TX audio admission (MOR-3764). New binary TX frame type
0x12on/api/v1/audio: admitted only while the radio is observed keyed
outside Core (intentrx, no release debt, a foreign TX observation),
authorized and pushed atomically against any Core-client keying
transition; refused otherwise.0x11behavior is unchanged.
Fixed
-
Profile receive ranges match published coverage (MOR-3782). The
IC-7300MK2, IC-705 and FTX-1 profiles' tuning/receive ranges now match
the manufacturer's published receiver coverage (IC-7300MK2 up to
74.800 MHz; IC-705 0.030-199.999999 and 400-470 MHz; FTX-1 0.030-174
and 400-470 MHz); no transmit band was added or widened; not verified
on radios. -
IC-7300 frequency entry and tuning are no longer capped at 60 MHz
(MOR-3782). The profile now covers the receiver range up to 74.800 MHz,
which includes the 4 m band; no 4 m transmit band is declared, so the
frontend does not offer TX at 70 MHz (EU 4 m transmit needs per-radio
variant selection, a separate follow-up); not verified on a radio. -
IC-7300MK2 CI-V identity (MOR-3792). The shared serial identity
table now maps the MK2's default CI-V address0xB6toIC-7300MK2,
soidentify_radio— and the CI-V identity resolver Pro consumes —
answersIC-7300MK2instead ofUnknown (0xB6). The MK2 model-ID
bytes are not documented in the CI-V guide and the radio has not been
verified on hardware; the profile's identity gate stays unverified. -
Split-mode read-modify-write detects concurrent commands
(MOR-3743). A split-mode mode write that preserves DATA or filter
(DualRxRuntimeMixin.write_relative_vfo_mode, rigctldX) now runs
its preservation read → SET → readback inside an
IcomCommander.interference_scope: any non-BACKGROUND command
dispatched by another task between the preservation read and the SET —
including a direct raw CI-V transaction, which reaches the wire
without entering the commander queue — marks the scope, the SET is
refused before the wire (the refusal carries the new
StaleBeforeWireError, aConnectionErrorsubclass and the only
retryable one), and the whole write retries from the preservation
read — up to three attempts, then a retryableCommandError. A SET
that already reached the wire is never retried: a currency failure
raised behind the send — interference detected while the SET's ACK
was pending — propagates asConnectionErrorinstead of repeating
the SET, interference behind an acknowledged SET is decided by the
readback (a consistent readback succeeds, a contradictory one fails),
and a VFO selection change during the write — including one that
completes during the readback — fails it withCommandErroreven
though the SET was already applied; the caller must re-read. A
retired scope's currency dies with it, so a delayed transport
retransmit request for its SET is answered with the idle packet,
never the stale tuple. No command is ever delayed or reordered and no
send priority changed; TX releases are unaffected. This detects and
retries; it does not exclude anyone.