feat(winrtble): implement add_peripheral (connect by address)#465
Open
tanarchytan wants to merge 1 commit into
Open
feat(winrtble): implement add_peripheral (connect by address)#465tanarchytan wants to merge 1 commit into
tanarchytan wants to merge 1 commit into
Conversation
Was a NotSupported stub on Windows. Implement it the same way the scanner registers a discovered device (create a Peripheral from the address and add it to the manager), matching the Android backend, so a bonded or already connected device can be reached by address without an advertisement. Also adds the symmetric From<PeripheralId> for BDAddr.
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.
What
Implement the WinRT Central::add_peripheral, which currently returns Err(NotSupported). It creates a Peripheral from the given PeripheralId the same way the scanner registers a discovered device, and returns an already-known entry if present. Also adds the symmetric From for BDAddr.
Why
add_peripheral was added to the Central trait in 0.12.0 for Android but left unimplemented on Windows. Without it, a device the OS already knows (bonded, or connected to another central such as a phone) cannot be reached on Windows unless it happens to be advertising. This brings WinRT to parity with Android: get a Peripheral by address, then call connect(), which already uses FromBluetoothAddressAsync.
Tested on hardware: connects to a bonded device that is connected to another central and is not advertising, then reads and writes its GATT.