Skip to content

Harden WHOOP BLE protocol capture layer - #1

Open
goamorim wants to merge 1 commit into
Sophonbot0:mainfrom
goamorim:feat/whoop-ble-protocol-hardening
Open

Harden WHOOP BLE protocol capture layer#1
goamorim wants to merge 1 commit into
Sophonbot0:mainfrom
goamorim:feat/whoop-ble-protocol-hardening

Conversation

@goamorim

Copy link
Copy Markdown

Summary

This PR pushes the current local WHOOP Vault BLE/protocol work from whoop-vault-ext/whoop-vault to GitHub.

It focuses on making the local BLE backend more robust as the reference layer for the upcoming fully-local iOS app:

  • Support WHOOP 4.0 and WHOOP 5.0/MG device-family metadata.
  • Add multi-family scan helpers and advertisement matching.
  • Harden BLE write/notify behavior with transient retry handling and raw notification buffering.
  • Expand Maverick/frame/CRC/command/response decoding coverage.
  • Add historical v2 parsing and raw history archive support.
  • Add standard HR/battery helpers.
  • Improve daemon persistence and capture behavior.
  • Add parity-oriented tests against Noop/schema/golden expectations.
  • Add broader unit coverage for commands, events, frames, historical packets, raw notifications and persistence.

Why

The UI/iOS PR is moving the product toward:

WHOOP strap → iPhone CoreBluetooth → local packet parser/rebuilder → SQLite vault → local UI.

For that to be safe, this repo needs the Python BLE/reference implementation to be stronger and better-tested. This PR makes the BLE/protocol layer a better oracle for the Swift/iOS port.

Validation

Ran locally from whoop-vault-ext/whoop-vault:

/Users/goamorim/whoop-vault-ext/.venv/bin/python -m pytest ble/tests

Result:

444 passed, 1 skipped in 9.02s

Notes

No DBs, logs, exports, virtualenvs, caches, or runtime data are included.

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.

1 participant