Limitations on procedure concurrency

When the SoftDevice has established multiple connections as a Central, the concurrency of protocol procedures will have some limitations.

The Host instantiates both GATT and GAP instances for each connection, while the Security Manager (SM) Initiator is only instantiated once for all connections. The Link Layer also has concurrent procedure limitations that are handled inside the SoftDevice without requiring management from the application.

Table 1. Limitations on procedure concurrency
Protocol procedures Limitation with multiple connections
GATT None. All procedures can be executed in parallel.
GAP None. All procedures can be executed in parallel. Note that some GAP procedures require link layer control procedures (connection parameter update and encryption). In this case, the GAP module will queue the LL procedures and execute them in sequence.
SM SM procedures cannot be executed in parallel for connections as a Central. That is, each SM procedure must run to completion before the next procedure begins across all connections as a Central. For example sd_ble_gap_authenticate().

The LL Disconnect procedure has no limitations and can be executed on any, or all, links simultaneously.

The LL connection parameter update and encryption establishment procedure on a master link can only be executed on one master link at a time.

Accepting connection parameter update and encryption establishment on a slave link is always allowed irrespective of any control procedure running on master links.

Documentation feedback | Developer Zone | Subscribe | Updated 2017-03-10