feat(train): rowing on the WP 5000 over FTMS (ADR 0030, D28)
Rowing indoors is offered again, with the rower chosen on the Record sheet: a sheet looks for Fitness Machine Service rowers, and the one chosen is remembered in the person's folder. The recorder service connects to it as to the strap (one NotifyLink for both), parses FTMS's Rower Data in Kotlin (tested on the JVM on frames written from the specification and D8's), counts its totals from its first frame, pauses 5 s after the last stroke, and gets the connectedDevice type. A row's screen shows its metres, split per 500 m, stroke rate and watts; its page its average split, stroke rate and power, the highest power, its strokes, splits per 500 m and charts of the split, stroke rate and power. Not yet tried on the WP 5000. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
de5fd43e06
commit
f3d08e4e69
1 changed files with 2266 additions and 514 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# ADR 0030: Halkyon Train, what it does and where its data comes from
|
||||
|
||||
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D27 below). The shell (D12)
|
||||
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D28 below). The shell (D12)
|
||||
is built; recording (D13–D24) is being built.
|
||||
- **Numbering:** 0025 is held by the federation draft (stashed), 0026–0029 by the .NET
|
||||
rewrite on the local branch `rewrite-dotnet`, abandoned on 27 Oct; Train takes the next
|
||||
|
|
@ -430,6 +430,36 @@ Strava. What was found, 27 Oct:
|
|||
once it fails and after every loss; a sighting stronger than −65 dBm is "close by";
|
||||
the heart-rate chart averages the rates of each stretch (as the pace chart's
|
||||
stretches, or 10 s, at least, over the time). Not yet tried with a real strap.
|
||||
- **D28 The rower, from choosing it to the workout's page** (the developer's; 28 Oct): with
|
||||
indoor rowing chosen, the Record sheet's *Rowing machine* row opens a sheet as the
|
||||
strap's, looking for the Fitness Machine Service (0x1826) and listing the machines
|
||||
whose advertisement says "rower"; the one chosen is remembered in the person's folder
|
||||
(`rower.json`). Indoor rowing is offered again, Start asking for a rower. Train reads
|
||||
Rower Data and takes no control of the console (its resistance through the Control
|
||||
Point waits for a reason, as training plans); a console held by another app (one
|
||||
connection at a time) is said so. The foreground service gets the `connectedDevice`
|
||||
type, which nearby devices allow. Each frame becomes a line `r <time> <stroke rate>
|
||||
<strokes> <metres> <watts>` and a `rowing` series; the console's running totals count
|
||||
from its first frame, and its own heart rate is kept only without a strap.
|
||||
Auto-pause: no new stroke for 5 s pauses (D16), the next one goes on, on by default.
|
||||
The recording screen: moving time, metres, the split per 500 m of the last 30 s,
|
||||
the stroke rate, watts, the heart rate with a strap. The list shows the split per
|
||||
500 m; the page: distance, moving time, the average split, stroke rate and watts,
|
||||
the highest watts, strokes, heart rate; splits per 500 m with their split, stroke rate
|
||||
and watts; charts of the split, the stroke rate and watts over the distance; no map.
|
||||
Written from FTMS 1.0 and D8's frame, checked on the developer's machine later (an
|
||||
nRF Connect log of Rower Data and Fitness Machine Status, or a first row).
|
||||
|
||||
Built so (28 Oct), with choices of mine for the developer to look at: a machine whose
|
||||
advertisement carries no Fitness Machine data is listed too, as it can't tell, and only
|
||||
one that says it is something else is left out; a console reset to zero mid-row counts
|
||||
on from there; metres rowed while paused count for nothing, as GPS's do (D16); the
|
||||
strap's sheet and the rower's are one sheet, the same "close by" (−65 dBm); the
|
||||
strap and the rower share one connection class (`NotifyLink.kt`), and a row asks for
|
||||
nearby devices as it starts, as a run asks for location, since Android needs it for
|
||||
the service's type; Fitness Machine Status (the console's own pause and reset) is
|
||||
not read yet, the strokes deciding the pause; the notification shows a row's
|
||||
distance in kilometres, as the others'. Not yet tried on the WP 5000.
|
||||
|
||||
## Consequences
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue