Timeular / noble-winrt

Noble Windows 10 bindings using the official C++/WinRT API
MIT License
20 stars 25 forks source link

Filtering service uuids in parameters for startScanning() is not reliable. #18

Open pursual opened 4 years ago

pursual commented 4 years ago

The noble lib allows you to provide two parameters to startScanning() (an array of service uuids, and a boolean for allow duplicates).

This binding does not discover anything when an array of service ids is passed?

pursual commented 4 years ago

It looks like it works when the array only contains one item?

This might be miscoded. Instead of matching any of the service uuids, it might be trying to match only advertisements which contain ALL of them. I do not have a device that broadcasts moret than 1 service uuid, so unable to confirm.

Regardless it does not work with more than one service uuid. noble_uwp and other bindings do.

geovie commented 4 years ago

@pursual You're right currently we pass the service uuids as filter to the AdvertismentWatcher.

The alternative would be to watch for all and filter the advertisement manually once we receive it.

If anyone wants to provide a PR for this the steps would be:

tony-gutierrez commented 4 years ago

Fixed in https://github.com/tony-gutierrez/noble-winrt/tree/servicefilter which is based off of https://github.com/fido-alliance/noble-winrt