This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2640R2F: Questions on connection parameter update

Part Number: CC2640R2F

Device

CC2640R2LAUNCHXL

SDK

simplelink_cc2640r2_sdk_4_20_00_04

IDE

IAR8.32.2

Reference Project

MultiRole

 

 

Hi Ti,

Recently we have faced some issue with the connection interval https://e2e.ti.com/support/wireless-connectivity/bluetooth/f/538/t/943355.

I have multiple questions as listed below.

1.     Connection interval update call-back never received to application.

As per the suggestion, we have used "GAPROLE_LINK_PARAM_UPDATE_APP_DECIDES” to update the connection interval where application need to receive call back in the “GAP_UPDATE_LINK_PARAM_REQ_EVENT”.

But unfortunately I couldn’t receive this event at all. I was always getting just the “GAP_LINK_PARAM_UPDATE_EVENT”.

Could you please let me know when this event will triggered? (Like in LL_CONNECTION_UPDATE_IND etc).

Update in Multi.c

// Connection parameter update parameters.

static gapRole_updateConnParams_t gapRole_updateConnParams =

{

.paramUpdateEnable = GAPROLE_LINK_PARAM_UPDATE_APP_DECIDES,  //<< updated on suggestion

.connHandle = INVALID_CONNHANDLE,

.minConnInterval = DEFAULT_MIN_CONN_INTERVAL, //<< set to 50 (ms I guess)

.maxConnInterval = DEFAULT_MAX_CONN_INTERVAL, //<< set to 60 (ms I guess)

.slaveLatency = MIN_SLAVE_LATENCY,

.timeoutMultiplier = DEFAULT_TIMEOUT_MULTIPLIER

};

 

2.     Multiple defines related to connection interval and connection update intervals

There are multiple connection interval related parameters (like #defines and update structures).

As I can see there are multiple structures for connection parameter updates as in below files:

  1. multi_role.c - gapRole_updateConnParams_t updateParams
  2. multi.c - static gapRole_updateConnParams_t gapRole_updateConnParams

As I can understand “gapRole_updateConnParams” is only used in “gapRole_HandleParamUpdateNoSuccess” which will be called on the connection param update timeout.

 

Could you please let me know the uses of different structure and the use of timeout? In other cases (than the timeout) it will not use the param update enable to “GAPROLE_LINK_PARAM_UPDATE_APP_DECIDES”.?

 

Also there are some unused #defines in multi.c like “MIN_CONN_INTERVAL” and “MAX_CONN_INTERVAL”, even project compiles without them.

 

 

3.     Multirole project will automatically choose higher connection interval (above the defined).

As I observed, on connecting a two Mutirole devices will not do any transactions for “LL_CONNECTION_UPDATE_IND” (unless connection update option used).

In mult_role.c I have set the “DEFAULT_CONN_INT” to 55 (I guess unit is 55 ms). Other Multirole was flashed with DEFAULT_CONN_INT to 200 which is initiating the connection.

After the connection as observed, "connection interval" will be 250ms.

I was expecting it to be around 50 - 60.

4.     Multirole project connection interval param update value has no relevance with one set to GAP, while connecting with Android.

(Similar to above question 3).

I also observed the connection interval with the Android mobile phone.

In mult_role.c I have set the “DEFAULT_CONN_INT” to 55 (I guess unit is 55 ms).

But after the connection param update the value has been set to 36.

 

I was expecting it to be in the range of 55. (50 – 60)

 

Not sure why?

 

 Could you please educate me on all of the questions I have?  Also let me know if you need any further information.

Thanks in advance.

Niranjan Hegde