Skip to content

v0.1.2-alpha — the light goes out

Pre-release
Pre-release

Choose a tag to compare

@trvny trvny released this 16 Aug 19:46
05806ab

Built from 05806ab, run 31968404676.

The speaker is told the stream is over (#48)

Until now nothing on the PCM path ever said so. Every session left the M5 holding a
SetUrlPlayback whose source had simply vanished — and a speaker in that state never starts
its idle countdown, so the front light stayed on until somebody dealt with it by hand. That
was the "it never sleeps by itself" the notes had been repeating for a week; it was ours.

Each session now ends over the connection the listener already holds, and says what happened:

WAMBRIDGE STOPPED stop=sent sleep=off holding=0

Measured on the physical M5 the same evening, same speaker, two sessions:

session ended front light
on a build sending no release still lit 33 minutes after the last audio
on this build, stop=sent holding=0 dark after 17 min 4 s

Seeking was the risk, since a seek replaces the helper and therefore pauses the speaker before
the next SetUrlPlayback is offered. Four seeks, audio back every time, about a second each.

sleep_after_stop arms SetSleepTimer when you want the speaker down on demand. In normal use
it is not needed — a released speaker gets there on its own.

Also in this build

  • A start no longer arrives loud (#52). With the slider routed to the speaker, an explicit
    level was handed over before the startup cap was consulted, so the one guard that existed was
    bypassed exactly where it was needed. start_volume_max caps the first helper of a session,
    raw step, default 3.
  • Diagnostics survive the startup window (#51). The CLOCK line used to stop dead after 240
    lines, about four minutes in, which made a stream that died at minute ten look identical to a
    healthy one. It now continues at a slower rate for as long as the stream lasts.
  • One silent command no longer fails the whole status read (#50). GetPowerStatus does not
    exist on this firmware and answers with silence; letting that timeout propagate reported a
    perfectly healthy speaker as unreachable.

Notes

Pre-release, and honest about it: this is a driver for one speaker model, tested by one person
on one M5. The transport has passed the physical checklist repeatedly, but wav/wav24 remain
opt-in and flac stays the default.

If a stream drops mid-playback, read the CLOCK line before suspecting this component: a full
buffer with submitted frozen means the speaker stopped pulling, which is the network rather
than the encoder. docs/WAM_PROTOCOL.md explains the signature and how to read the speaker's
own radio with GetApInfo.