Characteristic Discovery with 128bit UUID

Hi,

We are evaluating the possibility to connect our nRF52840 to another BLE device but we are facing issues with UUID Nordic handling strategy.

Quickly: 

  • We have a central nRF and two pheripheral. The first is Nordic the second is system in production and we cannot change the SW.
  • We created a custom service on the Nordic pheripheral and it works properly (characteristic discovered sendind data etc.)
  • Later we tried to discovery the service on the second pheripheral.
    Second pheripheral has:
    • SERVICE UUID acbd3540-0211-4126-8c1f-45bcb7722f9e
    • CHAR_1 UUID acbd3540-0211-4126-8c1f-45bcb7722fA0
    • CHAR_2 UUID acbd3540-0211-4126-8c1f-45bcb7722fA1
    • CHAR_3 UUID acbd3540-0211-4126-8c1f-45bcb7722fA2

As you can see the other vendor is adopting the same Nordic strategy for UUID but on 00-01 octet instead of 12-13 octet as Nordic.

We added SERVICE UUID and CHAR_1 UUID to UUID List in the SD (sd_ble_uuid_vs_add(..) ) and we provide 0x3540 to ble_db_discovery_evt_register

It connects to the pheripheal but the discovery fail.
Here the log:

ble_db_disc: Starting discovery of service with UUID 0x3540 on connection handle 0x1

nrf_ble_gq: Adding item to the request queue

nrf_ble_gq: GATTC Primary Services Discovery Request

nrf_ble_gq: SD GATT procedure (2) succeeded on connection handle: 1

nrf_ble_gq: Processing the request queue...

ble_db_disc: Service UUID 0xB03E not found

Did someone solved a similar problem or someone from Nordic can support?

Alessandro

Parents
  • Hi again

    I see, so the Service UUID not found message actually states "Service UUID 0x3540 not found" correct? What might be happening is that you're using the wrong UUID tag when registering the service UUID with the discovery module. This tag is returned by sd_ble_uuid_vs_add(), so please make sure you're referencing the correct UUID tag here.

    Best regards,

    Simon

Reply
  • Hi again

    I see, so the Service UUID not found message actually states "Service UUID 0x3540 not found" correct? What might be happening is that you're using the wrong UUID tag when registering the service UUID with the discovery module. This tag is returned by sd_ble_uuid_vs_add(), so please make sure you're referencing the correct UUID tag here.

    Best regards,

    Simon

Children
  • Hi Simon,

    sorry I notice now I mixed text with explanation related to a test log of another test.

    Here the pheripheral service  UUID and the characteristic service UUID

    #define PHERIPHERAL_SERVICE_UUID_BASE               \
        {                                       \
            0xB7, 0x5C, 0x49, 0xD2, 0x04, 0xA3, \
                0x40, 0x71,                     \
                0xA0, 0xB5,                     \
                0x35, 0x83,                     \
                0x3E, 0xB0, 0x83, 0x07          \
        }
    
    
    #define PHERIPHERAL_CHARACTERISTIC_UUID_BASE               \
        {                                       \
            0xB8, 0x5C, 0x49, 0xD2, 0x04, 0xA3, \
                0x40, 0x71,                     \
                0xA0, 0xB5,                     \
                0x35, 0x83,                     \
                0x3E, 0xB0, 0x83, 0x07          \
        }

    By the way I am not asking support to debug my code as I simply perfor some test.

    I was shooting blind as there I found no documentation at all about this.

    My real question is:

    Is it possible with nRF52 to perform characteristic discovery with 128UUID totally indipendent from the 128UIID of the service?

    Possible answers are: 

    No it's not possible for limitation in the SD and I will drop my attempt.

    Yes it's possible using this SD function call and I will write new code based on your suggestion.

    Regards

    Alessandro

Related