Filtering advertisement packets using UUIDs

Hello everybody,

I am working with a nRF52840 acting as a BLE central and I wan to scan (and connect) some specific peripherals. At first, I was using a whitelist; however, a new device for integration came and it was incompatible with this method of filtering. Now I am accepting all advertisement packets and filtering them by UUID. I am using the function ble_advdata_uuid_find to do so and it works fine for most of the peripherals.

My problem is with two specific peripherals whose UUIDs are non-standard. It is kind of weird because the function only works for one of these UUIDs, meaning it only recognizes and connects to only one of these peripherals. I have identified the following:

Scenario 1:
- I initialize custom service with custom UUID1.
-
I initialize custom service with custom UUID2.
-
The function I mention above is only able to find packets with custom UUID1.

Scenario 2:
- I initialize custom service with custom UUID2.
-
I initialize custom service with custom UUID1.
-
The function I mention above is only able to find packets with custom UUID2.

For more context:
Whenever I want to connect to 1 or 2, I pass the specific UUID to the function. While debugging, I confirmed that it is looking for the right UUID in each case.

More info:
- SDK v17.1
-  I have this in my sdkconfig.h #define NRF_SDH_BLE_VS_UUID_COUNT 4
- I have tried applying a UUID filter in the scanning process and it doesn't work either.

Any information of what might be happening is appreciated.

Thank you

Parents Reply Children
No Data
Related