Changing the connection interval

Go To Last Post
3 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I would like to have control over the connection interval in order to optimize power consumption of the device. When I connect the SAMB11 Xplained Pro to my Android phone, the connection interval is 48 ms. Then I send at_ble_connection_param_update() and the phone seems to choose the con_int_max. It even seems to be OK to set con_int_min the same.

So it worked as I wanted, but not with my old iPAD (I don't know which model, maybe 4 years old, IOS 8.3). It just send AT_BLE_CONN_PARAM_UPDATE_DONE with all parametes zeros and kept on with the stupid 30 ms connection interval consuming 500 uA instead of 30 uA.

Is this to be expected on many BLE devices, mainly handheld? How can I make a system, that would consume ~50 uA? Only way to keep it just a broadcaster? But then I can't get any data from the user.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I got it working with iPAD as well. The problem was the short timeout chosen by iPAD. I just used it as is. Now I'm setting it to 500 (5 s), which is the maximum for IOS.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

This is not working reliably. Sometimes the low connection interval remains on. Mostly this happens with my iPAD, but sometimes also with Android phone. How can I know reliably what are the connection parameters afterI have called "at_ble_connection_param_update"? Sometimes this works at first try and the callback shows nicely the new paramaters (~500 ms connection interval). Sometimes the callback shows just zeros as parameters and sometimes it shows the very low ones (e.g. 30 ms). Then I try to call "at_ble_connection_param_update" again. Sometimes it works OK at the first retry, sometimes at the second etc. But at some cases I receive no callback at all. How can I then know which connection parameters are really in use? Is the only option to disconnect, since I can't afford the current consumption of 30 ms connection interval? I couldn't find a ble function to ask this nor a way to dig it out from the ble structures without actually modifying the code in blusdk.

 

When is the correct time to call "at_ble_connection_param_update"? After connected or pairing?