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

Questions about connection interval negotiation

I would like to learn a little more about the process of negotiating a connection interval between an iOS and Android central and a nRF51 peripheral.

So, here are my questions:

  1. I have experimented and saw that I could provide the same value for ble_gap_conn_params_t.min_conn_interval and ble_gap_conn_params_t.max_conn_interval to attempt to force the connection interval to that value. So far, I have not encountered any problems. But are there any potential problems with this?
  2. I have learned that it is possible that a central device could not support the connection interval I restricted with min_conn_interval and max_conn_interval, and in such case it would decided its own connection interval. In this case:
  • How likely does this happen?
  • Is there a particular preferred connection interval value to minimize this chance?
  • Would the central device attempt to use a connection interval as low as it could get to, or would it just chose a certain default value?

A little overview of my situation, in case someone are curious or see a better approach than what I am heading towards:

In my application, at certain events I will have a stream of data needed to be forwarded via a GATT characteristics. Experiments show that processing the stream of data takes much shorter than the connection interval, so I concluded that a delay between each call to the notifying function is necessary.

Parents
  • If the connection parameters are not within what the central can set it can refuse the connection parameter update request. The peripheral will then get an event indicating this and will have to do appropriate actions.

    The central will decide the connection parameters on connection establishment until a connection parameter update request is accepted. You can set the range between min and max interval high to be sure that the connection parameter update request is accepted. You can also take knowledge of what the limits or rules for the connection parameters the central has.

    It depends on the central what interval it will choose.

    Which intervals can be chosen for Android depends on the device, do a search for this on the internet. Apple have guidelines for the connection parameters, see section 3.6 in this document, here it is summarized:

    Interval Max * (Slave Latency + 1) ≤ 2 seconds
    Interval Min ≥ 20 ms
    Interval Min + 20 ms ≤ Interval Max
    Slave Latency ≤ 4
    connSupervisionTimeout ≤ 6 seconds
    Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout
    

    The connection interval must be between 7.5 ms and 4 s according to the Bluetooth spec.

  • There is no problem with setting max interval = min interval in our SDK, the only possible problem will be if the connection parameter update request is rejected, but then the application can handle this.

    There is nothing in the Bluetooth standard that specifies if the central should attempt to use the min interval or the max interval. The central migth choose a high interval if it already has a lot of connections or low if not. You can for example set in Master Control Panel for PC if the central shall choose the minimum, medium or maximum value for connection interval. Looks like this feature is not present in nRF connect, but you can disable "auto accept update requests" and manually choose the parameters when the connection request arrives.

Reply
  • There is no problem with setting max interval = min interval in our SDK, the only possible problem will be if the connection parameter update request is rejected, but then the application can handle this.

    There is nothing in the Bluetooth standard that specifies if the central should attempt to use the min interval or the max interval. The central migth choose a high interval if it already has a lot of connections or low if not. You can for example set in Master Control Panel for PC if the central shall choose the minimum, medium or maximum value for connection interval. Looks like this feature is not present in nRF connect, but you can disable "auto accept update requests" and manually choose the parameters when the connection request arrives.

Children
No Data
Related