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

How to retrieve information from Soft Device

Hi all,

I am currently working on the nRF51422 with the S110 version of the Softdevice. The SDK version is 8.1.0.

I tried to get some information back from the Softdevice itself without using a BLE connection in my application. I have done some manipulation (especially using the handle number of my serv/char) with the S130 but it seems that the S110 is a bit different. My problems and also my questioning are:

  1. Using the ble_gatts.h library in S130 I used the function "sd_ble_gatts_attr_get" to get a correlation between uuid and handle number. The function is not available in the S110? Why?

  2. Is there any other way, except from the function used in 1. to retrieve information from the SD using S110? (Handle and uuid associated)

  3. Also in an application server, when we initialize each service/char/descr, is every handle attributed by the SD always incremented by 1?

Thanks a lot for your answers, Thomas

Parents
  • Hi Thomas,

    before Nordic will comment on details of S110/S130 APIs: you should get (and store) GATTS handle at the time you provision (create) given service/characteristic/include/descriptor handle through functions such as sd_ble_gatts_service_add, sd_ble_gatts_characteristic_add, sd_ble_gatts_descriptor_add and sd_ble_gatts_descriptor_add, or not?

    Cheers Jan

  • Well "normally" the work with GATT server in Nordic SoftDevice looks like this:

    1. Initialize all necessary objects and store in your app handle references to all of them which you need for further communication (it typically are only Characteristic's Value handles and CCCD handles but could be more).
    2. Once you get any GATTS related event in your main SoftDevice event hadler then you simply first check over which GATTS handle this event comes and acting accordingly.

    It looks very simple and straight forward to me. No need to interrogate SoftDevice (even more crazy to do it each time and during interrupt/scheduled event) what this handle means. Sure, it brings necessity of storing all active handles in your app as kind of state variables but you will anyway need to do something like that if you list your application's features by UUIDs... I find this pretty effective. Cheers

Reply
  • Well "normally" the work with GATT server in Nordic SoftDevice looks like this:

    1. Initialize all necessary objects and store in your app handle references to all of them which you need for further communication (it typically are only Characteristic's Value handles and CCCD handles but could be more).
    2. Once you get any GATTS related event in your main SoftDevice event hadler then you simply first check over which GATTS handle this event comes and acting accordingly.

    It looks very simple and straight forward to me. No need to interrogate SoftDevice (even more crazy to do it each time and during interrupt/scheduled event) what this handle means. Sure, it brings necessity of storing all active handles in your app as kind of state variables but you will anyway need to do something like that if you list your application's features by UUIDs... I find this pretty effective. Cheers

Children
No Data
Related