PebbleKit transport layer and message codec #16
Labels
No labels
area:companion
area:docs
area:shared
area:tooling
area:watchapp
blocker
kind:chore
kind:feature
kind:spike
kind:test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
robert/PedalPebble#16
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
One place that owns talking to the watch.
Acceptance criteria
PebbleDataReceiverregistered for the watchapp UUIDPebbleKit.sendAckToPebble()sent for every inbound messageFiles
companion/.../pebble/PebbleTransport.ktcompanion/.../pebble/Proto.ktNotes
Priority under backpressure: navigation messages must never be dropped in favour of map frames.
Update — 2026-09-01: rates and the uplink are part of this
changed keys only, full refresh every 10 s and on reconnect
PAGE_INDEXthat is not the mapHR_SAMPLESbatches decoded and handed to the recorder, backlog first (#66)Which PebbleKit path this is built on depends on #4 — see D36, and do not assume the 2016 artifact
until that spike reports.
Update — 2026-09-02: PebbleKit 2, the handshake, and the command queue
classic 4.0.1 intent path is the fallback (D37)
general rather than fallback-only)
SCREEN_W/SCREEN_H/SCREEN_SHAPEin the handshake — the phone sizes map slices fromthem and cannot guess (D46, NFR-C12)
RIDE_STATE, and acknowledge withSTATE_ACK(D43)changed — the watch's staleness rule depends on it (D44)