cancel
Showing results for 
Search instead for 
Did you mean: 

[SPBTLE-RF] phone doesn't respect connection interval

raphael declercq
Associate II
Posted on June 23, 2017 at 16:24

Hi guys,

I'm using a spblte-rf module on a custom board.

Correct me if i am wrong, but from what i understood the master module will ask the module for data every 'connection interval'. i.e if this interval is 1s, the phone will ask my spbtle every 1s.

Here's the problem: even if a modify the connection interval into the aci_gap_set_discoverable function, I can see no changes in the behavior of my device (my device show the same consumption with a 7.5ms or 4s connection interval) . I also tried with a IDB05A1 on a nucleo board and got the same results.

So it seems that the phone doesn't take this parameter into consideration, even tho i can see the connection interval parameters into the advertising frame.

Is there a way to force the phone to use these parameters, does this time depends on the application, on the phone itself ?

Thanks in advance

regards,

Raphael

#spbtle-rf #bluenrg #ble
3 REPLIES 3
Antonio Vilei
Senior III
Posted on June 26, 2017 at 14:44

Hi Raphael,

after the connection is established, you can try sending

an L2CAP Connection Parameter Update request from the slave to the master.

It works with many smartphone models, even if there is no guarantee that the master will accept it (as it isn't mandated by the standard).

Here is the function you need to call:

/**

* @brief Send an L2CAP Connection Parameter Update request from the slave to the master.

* @note  An @ref EVT_BLUE_L2CAP_CONN_UPD_RESP event will be raised when the master will respond to the request

*                        (accepts or rejects).

* @param conn_handle Connection handle on which the connection parameter update request has to be sent.

* @param interval_min Defines minimum value for the connection event interval in the following manner:

*                                                                      connIntervalMin = interval_min x 1.25ms

* @param interval_max Defines maximum value for the connection event interval in the following manner:

*                                                                      connIntervalMax = interval_max x 1.25ms

* @param slave_latency Defines the slave latency parameter (number of connection events that can be skipped).

* @param timeout_multiplier Defines connection timeout parameter in the following manner:

*                                                                                   timeout_multiplier x 10ms.

* @return Value indicating success or error code.

*/

tBleStatus aci_l2cap_connection_parameter_update_request(uint16_t conn_handle, uint16_t interval_min,

                                                                                    uint16_t interval_max, uint16_t slave_latency,

                                                                                    uint16_t timeout_multiplier);

Posted on June 26, 2017 at 16:26

Thanks Antonio, I will try this

Andrew Neil
Evangelist
Posted on November 30, 2017 at 13:17

Is there a way to force the phone to use these parameters

No, there isn't - the phone is not obliged to use the requested parameters.

>:(

And I have certainly seen that Android will give different results at various times - even on the same phone/tablet!

Never worked out how it decides!

>:(

But your device should be able to see what settings have been granted.

If the granted settings aren't to your liking, it  might be worth disconnecting & trying again ...