This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

A problem in BLE service discovery

Hi,

I am developing a product based on  SDK v15.3.0 and SoftDevice v6.1.1. my product acts as a BLE central device.

On the peripheral side, is an iOS application which contains a service with "fb349b5f8000008000100000fdff0000" UUID. "fb349b5f800000800010000000000000" is an standard base uuid and when i trye to add this uuid with "sd_ble_uuid_vs_add" function, as uuid_type i get '1' which means that this uuid could not be added as custom 128-bit base uuid.

Then I try to register {uuid: 0xFFFD, UUID_Type: 1} with "ble_db_discovery_evt_register" function, to search for "fb349b5f8000008000100000fdff0000" service in iOS gatt table.

during service discovery, Softdevice sends a "FindByTypeValueRequest" with value 0xFDFF in order to find the service in the iOS gatt table, but it receives "FindByTypeValueRespnse" with "attribute not found" error code.

Now can anyone give me a solution, to search for a service with "fb349b5f8000008000100000fdff0000" uuid in the iOS gatt table?

As i said, registering "fb349b5f8000008000100000fdff0000"  as base uuid is not possible in the sofrdevice, and searching with 16-bit uuid "fdff" could n't find the service in the peripheral gatt table.

Thanks

Parents
  • The base uuid you are trying to write is the BT UUID: https://www.bluetooth.com/specifications/assigned-numbers/service-discovery/

    You should not register the BT UUID with the sd_ble_uuid_vs_add().

    Instead you can call sd_ble_gatts_characteristic_add() directly with UUID type set to BLE_UUID_TYPE_BLE.

    The BT base UUID should only be used with BT 16-bit UUID assigned by BT SIG.

  • Thank you for your response, but I think you did not get my point.

    As I said I use nrf52 as a central device, Therefore I didn't implement any service on nrf52 side and I do not want to add any characteristic.

    I want to discover service on the peripheral side using the nordic service discovery library, and the target service's UUID is "fb349b5f8000008000100000fdff0000". 

    i register {uuid: 0xFFFD, UUID_Type: 1} with "ble_db_discovery_evt_register" function, to search for "fb349b5f8000008000100000fdff0000" service in peripheral gatt table.

    during service discovery, Softdevice sends a "FindByTypeValueRequest" with value 0xFDFF in order to find the service in the peripheral, but it receives "FindByTypeValueRespnse" with "attribute not found" error code.

    Now i want to find a way that soft device send FindByTypeValueRequest with "fb349b5f8000008000100000fdff0000", not 0xFFFD,

Reply
  • Thank you for your response, but I think you did not get my point.

    As I said I use nrf52 as a central device, Therefore I didn't implement any service on nrf52 side and I do not want to add any characteristic.

    I want to discover service on the peripheral side using the nordic service discovery library, and the target service's UUID is "fb349b5f8000008000100000fdff0000". 

    i register {uuid: 0xFFFD, UUID_Type: 1} with "ble_db_discovery_evt_register" function, to search for "fb349b5f8000008000100000fdff0000" service in peripheral gatt table.

    during service discovery, Softdevice sends a "FindByTypeValueRequest" with value 0xFDFF in order to find the service in the peripheral, but it receives "FindByTypeValueRespnse" with "attribute not found" error code.

    Now i want to find a way that soft device send FindByTypeValueRequest with "fb349b5f8000008000100000fdff0000", not 0xFFFD,

Children
Related