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

Concurrent services discovery

I am using S132 4.0.2 and SDK 13, and I have theese questions:

  1. I have an application where BLE node establishes multiple concurrent connections (several as central and several as peripheral). They will start db discovery on each other regardless of GAP role in connections. So peripheral will discover central services and central will concurrently discover peripheral services. Will it work? I it even a good idea?

  2. As my BLE node can be connected to many other peers db discovery can be started concurrently on each connection. I have separate ble_db_discovery_t per connection. Will it work?

  3. How can I be notified that service disvovery process is finished (I have several services to discover)? There is lack of event 'db discovery process finished'. I can always count events and compare it to number of ble_db_discovery_evt_register calls but is there a better way?

What else should I know, the tutorial devzone.nordicsemi.com/.../ is good but a bit outdated.

Parents
  • Hi Andrzej,

    Most of the requirements you listed are already implemented in the ble_app_multilink_central example. There is no issue to have concurrent service discovery. When a service discovery of a node is finished, you will get an event: BLE_DB_DISCOVERY_COMPLETE with the conn_handle attached to the node. Please have a look at db_disc_handler() in the example.

    @endnode: I don't think we always do full service discovery. If you only look for one service UUID, we will only do "Find by Type Value Request" to ask the server the location of the exact service. This is when you call sd_ble_gattc_primary_services_discover() with a specific service UUID. This is variant 2 in this MSC.

  • Sorry, I've missed this possibility. But is there any added value in using ble_db_discovery module if application on top of GATT Client layer wants to discover single Characteristic Value handle within specific Primary Service? Assuming using sd_ble_gattc_primary_services_discover and sd_ble_gattc_characteristics_discover functions directly is the competitive option...

Reply
  • Sorry, I've missed this possibility. But is there any added value in using ble_db_discovery module if application on top of GATT Client layer wants to discover single Characteristic Value handle within specific Primary Service? Assuming using sd_ble_gattc_primary_services_discover and sd_ble_gattc_characteristics_discover functions directly is the competitive option...

Children
No Data
Related