I'm performing a UUID filtered scan on Android (mobile device A) and I have two test cases.
One uses an app called BLE Scanner on another Android device (mobile device b) to create a BLE server with two test Services (each with their own unique UUID). The other is via an Arduino BLE server with a custom UUID for it's service.
If I use mobile device B's BLE Scanner app and scan for the arduino I can find it, connect to it and see the Services along with each services UUID. It has Generic Attribute, Generic Access and a custom service (the one I set). So that's great.
If I use mobile device A and perform a BLE filtered scan using the three services (Generic Attribute UUID, Generic Access UUID and the custom service UUID) the Arduino doesn't show up in the scan at all.
If I use mobile device A and perform a BLE filtered scan using the UUID's from the test server created via the BLE Scanner app on mobile device B, mobile devices B's BLE server does show up in the scan.
So I'm confused. Mobile Device A's filtered scanning seems to work to find the server created via the BLE Scanner app with the assigned custom UUIDs created by the BLE Scanner App, but for the Arduino BLE server it fails to show up.
Is it perhaps because the BLE Scanner app doesn't do filtered scan to find/connect to the Arduino BLE Server that it is able to work? In which case is it not possible to do a filtered scan using the known Service UUID's on the Arduino? Or is there a hidden UUID I'm missing or does the UUID need to be contained in the advertisement data / manufacturing data?