Repository navigation
fix(ble): register the disconnect callback with Bleak 3.x (ROADMAP 1.7) - #35
Merged
Merged
Conversation
- Override Controller.connect() to pass disconnected_callback to BleakClient - Drop the dead set_disconn_callback/set_disconnected_callback branches - Clear connected before shutdown's own disconnect so it isn't a drop - Test the argument against the real BleakClient signature Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bleak 3.x takes the disconnect callback only as a
BleakClientconstructor argument, andph4-walkingpad'sController.connect()passes none. The oldset_disconn_callback/set_disconnected_callbackbranches never ran on Bleak 3.x, so a drop was only noticed by the staleness watchdogs (~15 s active, ~45 s idle/paused). The test fake hadset_disconn_callback, which hid this.app.Controllersubclasses the library'sControllerand overridesconnect()to passdisconnected_callback=_handle_disconnect._graceful_shutdown()clearsconnectedbefore its own disconnect, so the now-live callback doesn't log it as a drop or record an auto-pause.Testing
BleakClientsignature, not the fake.pyteston 3.10, 3.12, 3.13 (557 passed each);ruff check .clean.Notes
The
connect()override mirrors the library's code, so upstream changes to it won't be picked up;ph4-walkingpadis pinned<2.🤖 Generated with Claude Code