Skip to content

v3.0.0rc1

Choose a tag to compare

@morozsm morozsm released this 26 Oct 20:06
· 74 commits to main since this release
b3a10f9

Added

  • Discard queued playback on TX streams (MOR-3760). TxStream and
    DuplexStream gain async discard_queued(), dropping every playback
    frame queued but not yet handed to the device and returning how many
    queued writes were dropped; TxStreamHealth reports discard_events
    and discarded_audio_ms.
  • Outside-only TX audio admission (MOR-3764). New binary TX frame type
    0x12 on /api/v1/audio: admitted only while the radio is observed keyed
    outside Core (intent rx, no release debt, a foreign TX observation),
    authorized and pushed atomically against any Core-client keying
    transition; refused otherwise. 0x11 behavior 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 address 0xB6 to IC-7300MK2,
    so identify_radio — and the CI-V identity resolver Pro consumes —
    answers IC-7300MK2 instead of Unknown (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, rigctld X) 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, a ConnectionError subclass and the only
    retryable one), and the whole write retries from the preservation
    read — up to three attempts, then a retryable CommandError. 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 as ConnectionError instead 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 with CommandError even
    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.