test(cardio): validate CYCPLUS H2 BLE profile
This commit is contained in:
parent
984b1e058e
commit
5bf90899bd
3 changed files with 13 additions and 7 deletions
|
|
@ -148,8 +148,8 @@ parallel implementation of its rules.
|
|||
| Local Web | `TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED` |
|
||||
| Web Exercises V1 | `TRAINLOG_WEB_EXERCISES_V1=PASS` |
|
||||
| Cardio persistence/sync | `TRAINLOG_CARDIO_PERSISTENCE_SYNC_V1=PASS`: Android v27 + desktop v30, strict optional `trainlog-heart-rate` V1 Android→desktop companion, generation relation and correlated ACK |
|
||||
| Cardio BLE diagnostics | `TRAINLOG_CARDIO_BLE_DIAGNOSTICS_V1=SOFTWARE_PASS / HARDWARE_VALIDATION_PENDING`: strict `0x2A37` parser, bounded HRS/expanded BLE scan, GATT service discovery and notification subscription are installed on Android 0.1.5 vc38; filtered real-device scan observed no advertising HRS device on 2026-09-23 |
|
||||
| Current operational cursor | `TRAINLOG_CARDIO_BLE_HARDWARE_VALIDATION_V1`: identify the real armband, confirm `0x180D/0x2A37`, notification cadence and optional RR/contact/energy fields before persistent acquisition |
|
||||
| Cardio BLE diagnostics | `TRAINLOG_CARDIO_BLE_DIAGNOSTICS_V1=PASS`: real CYCPLUS H2 validated on Android; `0x180D` + `0x2A37`, Battery Service, approximately 1 Hz notifications and one raw RR interval per observed notification; contact and energy fields absent in the observed payloads |
|
||||
| Current operational cursor | `TRAINLOG_CARDIO_PERSISTENT_ACQUISITION_V1`: remember the validated sensor, persistent reconnecting Android acquisition service, stale-signal handling and global grey/orange/green `♥ BPM` indicator |
|
||||
| Complete synchronization gap contract | Frozen dependency contract; operational USB/Drive slices required by v0.1.2 are delivered |
|
||||
| Isolated synchronization test environment | `TRAINLOG_SYNC_TEST_ENV_V1=PASS/FROZEN` |
|
||||
| Synchronization characterization | `TRAINLOG_SYNC_CHARACTERIZATION_V1=PASS/FROZEN` |
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ sensor. Heart-rate ingestion must not reuse or overload the frozen Trainlog
|
|||
Bluetooth synchronization transport contract.
|
||||
|
||||
```text
|
||||
CURRENT_OPERATIONAL_CURSOR=TRAINLOG_CARDIO_BLE_HARDWARE_VALIDATION_V1
|
||||
CURRENT_OPERATIONAL_CURSOR=TRAINLOG_CARDIO_PERSISTENT_ACQUISITION_V1
|
||||
```
|
||||
|
||||
The focused `TRAINLOG_SYNC_CAUSAL_DELETE_V1_CLOSEOUT` is complete before this
|
||||
|
|
|
|||
|
|
@ -1690,10 +1690,16 @@ On 2026-09-23 the diagnostic APK was installed non-destructively on the
|
|||
authorized SM_G990B as Trainlog 0.1.5 versionCode 38 using the same Android
|
||||
debug signing certificate as the existing private installation. Application
|
||||
startup completed without SQLite/crash errors and the diagnostic route opened.
|
||||
The first real 10-second HRS-filtered scan completed cleanly but found no
|
||||
device advertising Heart Rate Service. Real armband identification, GATT HRS
|
||||
confirmation and notification-field characterization therefore remain
|
||||
`HARDWARE_VALIDATION_PENDING` and are not represented as PASS.
|
||||
The first real 10-second HRS-filtered scan completed cleanly before the armband
|
||||
was positively identified. A subsequent expanded scan identified the real
|
||||
CYCPLUS H2 advertising Heart Rate Service. Trainlog connected through GATT,
|
||||
discovered `0x180D`, `0x2A37` and Battery Service, enabled notifications and
|
||||
received live BPM successfully. The observed payloads carried one raw RR
|
||||
interval, no sensor-contact field and no energy-expended field. A 12-second
|
||||
measurement window advanced from 43 to 56 notifications (13 notifications),
|
||||
confirming an approximately 1 Hz emission cadence. This closes the real-sensor
|
||||
hardware characterization gate without recording device-specific MAC identity
|
||||
in project documentation.
|
||||
|
||||
The complete Android JVM inventory after this tranche reports **266 tests:
|
||||
261 passed, five skipped, zero failures/errors**, and `assembleDebug` succeeds.
|
||||
|
|
|
|||
Loading…
Reference in a new issue