Skip to content

Restore QuickPlay ad-hoc MQTT protocol doc - #5

Open
theelims wants to merge 4 commits into
mainfrom
claude/adhoc-play-mode-mqtt-docs-gjqu5q
Open

Restore QuickPlay ad-hoc MQTT protocol doc#5
theelims wants to merge 4 commits into
mainfrom
claude/adhoc-play-mode-mqtt-docs-gjqu5q

Conversation

@theelims

Copy link
Copy Markdown
Member

Recover docs/QuickPlay.md verbatim as it was before commit fbd811d
("Clean repo") removed it, to serve as the basis for further work on
the ad-hoc play protocol.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01V3xZUzUsThbJPhFhkCMya5

claude added 4 commits August 20, 2026 05:38
Recover docs/QuickPlay.md verbatim as it was before commit fbd811d
("Clean repo") removed it, to serve as the basis for further work on
the ad-hoc play protocol.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V3xZUzUsThbJPhFhkCMya5
Specifies Quick Play over connectionless BLE advertising, preserving the
full message model of the MQTT spec: tags, intensity range, keep-alive and
decay timing, absence-means-zero, highest-intensity-wins arbitration,
coexisting sessions and per-device APIs.

The broker and the Facilitator role are dropped: Quick Play messages are
idempotent state, repeated and loss-tolerant, so they need no connection.
Covers the wire format inside a 31-byte legacy advertisement, radio
parameter sizing against the 1.5 s decay window, receiver state handling,
allow-listing and optional payload authentication, a GATT fallback for
platforms that cannot broadcast, BLE 5 extended advertising, and bridging
back to the MQTT binding.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V3xZUzUsThbJPhFhkCMya5
Android can emit Quick Play unmodified, but the legacy AdvertiseSettings
API only offers three fixed intervals, of which just LOW_LATENCY satisfies
the decay-window sizing rule; startAdvertisingSet with legacy PDUs gives
exact interval control instead. The platform also rotates the advertiser
address without exposing it, which breaks address-based origin identity and
allow-listing.

Add an optional 4-byte Source ID behind a new flags nibble in the version
byte for emitters without a stable address, and note that it is a weaker
basis for allow-listing than an address.

Quantify scanning cost for an always-listening consumer: nRF52 figures per
duty cycle against ESP32 variants, standby life on a 1000 mAh cell, and the
two second-order costs (loss of controller-side accept-list filtering when
addresses rotate, and host wake-ups in crowded rooms).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V3xZUzUsThbJPhFhkCMya5
A sub-100 ms sensor-to-actuator target does not survive the parameters
previously recommended. Split the radio settings into two profiles: an
Ambient profile matching the original spec's timing, and a Responsive
profile at a 20-30 ms advertising interval with continuous scanning.

Duty-cycled scanning cannot meet the target at any advertising rate, since
the consumer must wait for a scan window and an advertising event to
coincide; continuous scanning receives every event and costs roughly 3x the
standby current. Add an adaptive rate - burst on change, back off to the
keep-alive rate - to recover most of the airtime and room capacity.

Document capacity: collision loss is an airtime limit that applies only to
emitters, so listeners are unbounded. About 5 emitters are comfortable
under the latency budget and 10 at the limit, against 20-30 for the Ambient
profile. Also note Android's 100 ms advertising floor, which closes the
Responsive profile to phone emitters.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V3xZUzUsThbJPhFhkCMya5
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.

2 participants