Ride state machine: idle / running / paused / stopped #11
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#11
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
Explicit ride lifecycle driving what is recorded and what is displayed.
Acceptance criteria
CMDFiles
watchapp/src/c/state.cwatchapp/src/c/state.hUpdate — 2026-09-02: commands survive a dropout, and the watch never auto-pauses
The phone is authoritative on
RIDE_STATEonce connected; the rider can pause from the wrist; thewatch runs on its own through a dropout; and dropouts of tens of seconds are ordinary (D31). Put
together, the rider pauses at a café mid-dropout, the phone reconnects asserting
running, and thepause is silently undone (D43).
CMDis stamped withCMD_TIMEand held in a watch-side queue until the phoneacknowledges it via
STATE_ACKRIDE_STATEis appliedRIDE_STATEpushsource when disconnected and cannot implement it even in principle
not as moving time; on reconnect the phone's moving time replaces it
paused