Bridge Plugin over a serial-port capability #105

Closed
opened 2026-10-24 11:03:15 +02:00 by SBDeveloper · 1 comment
Owner

What to build

An optional bridge Plugin that talks to a Medley Bridge (MB-1) over USB serial and shows its status in its Plugin view: headset name, Bridge state, battery, signal and input level. This needs a new Plugin capability for serial ports, along the lines of local_sockets (ADR 0006): the Plugin declares the ports it may open, the user consents to that list, and the Plugin opens, reads, writes and closes them through one host function. The Plugin speaks the Bridge protocol, so the host knows nothing about the Bridge.

The Plugin also gives the host a way to read the Bridge's current state (polled by the host, since Plugins are call-driven) and to send RELEASE / CLAIM. Later tickets use these.

See ADR 0026 and the glossary term Bridge (it is not an Output).

Acceptance criteria

  • A Plugin can declare serial ports (with wildcards like ttyACM*) and the user consents to that list like any other capability
  • Only listed, consented ports open. The host function never traps: failures come back as errors. Ports belong to one Plugin instance and close when it is replaced
  • A fixture plugin covers the capability in core integration tests (works without real hardware)
  • The Bridge Plugin finds the Bridge by its USB product name, switches it to the raw protocol, and shows headset name, state, battery, signal and input level
  • The host can poll the Plugin for the Bridge state (state, signal, headset name) and ask it to send RELEASE / CLAIM
  • docs/plugin-manifest.md documents the capability; the Plugin installs from the registry like the other optional Plugins

Blocked by

None (can start immediately)

## What to build An optional `bridge` Plugin that talks to a Medley Bridge (MB-1) over USB serial and shows its status in its Plugin view: headset name, Bridge state, battery, signal and input level. This needs a new Plugin capability for serial ports, along the lines of `local_sockets` (ADR 0006): the Plugin declares the ports it may open, the user consents to that list, and the Plugin opens, reads, writes and closes them through one host function. The Plugin speaks the Bridge protocol, so the host knows nothing about the Bridge. The Plugin also gives the host a way to read the Bridge's current state (polled by the host, since Plugins are call-driven) and to send `RELEASE` / `CLAIM`. Later tickets use these. See ADR 0026 and the glossary term **Bridge** (it is not an Output). ## Acceptance criteria - [ ] A Plugin can declare serial ports (with wildcards like `ttyACM*`) and the user consents to that list like any other capability - [ ] Only listed, consented ports open. The host function never traps: failures come back as errors. Ports belong to one Plugin instance and close when it is replaced - [ ] A fixture plugin covers the capability in core integration tests (works without real hardware) - [ ] The Bridge Plugin finds the Bridge by its USB product name, switches it to the raw protocol, and shows headset name, state, battery, signal and input level - [ ] The host can poll the Plugin for the Bridge state (state, signal, headset name) and ask it to send `RELEASE` / `CLAIM` - [ ] `docs/plugin-manifest.md` documents the capability; the Plugin installs from the registry like the other optional Plugins ## Blocked by None (can start immediately)
Author
Owner

Implemented in a465b38 (serial_ports capability, fixture plugin, bridge Plugin 0.1.0); view polished in ae87204 (bridge 0.2.0: badge, meters, live refresh). Follow-ups: #110–#114.

Implemented in a465b38 (serial_ports capability, fixture plugin, bridge Plugin 0.1.0); view polished in ae87204 (bridge 0.2.0: badge, meters, live refresh). Follow-ups: #110–#114.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
SBDeveloper/medley#105
No description provided.