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.

To Increase Central Device Scan/Discovery Frequency

Other Parts Discussed in Thread: CC2540

Hi, 

WHAT I'VE FOUND: I've searched a lot about this, found a similar issue (http://e2e.ti.com/support/wireless_connectivity/f/538/t/349134) but it is for Windows through USB Dongle. I couldn't figure out the similar/same functions to adapt it to Arduino and BLE Mini (http://redbearlab.com/blemini/

WHAT I CAN DO: I am getting RSSI and UUID from a peripheral device (Peripheral mode iPhone) through BLE Mini (Central Mode) I can get those data once in a 4-5 seconds.  

WHAT I CAN'T DO: I cannot get those data 3-4 times in a second.

I WANT TO: be able to get those data 3-4 times in a second and be able to understand what scan interval and scan window is. 

MY SETUP: I've installed 2540 HCI Firmware (HCI_UART_57600bps_20130502.bin.zip) to BLE Mini (CC2540) and have used BLE HCI Arduino Library (https://github.com/RedBearLab/BLE_HCI/tree/master/arduino/libraries/BLEHCI

Edit: other similar issue;

1- (http://e2e.ti.com/support/wireless_connectivity/f/538/p/254736/1173093#1173093)

Edit 2: progress and new issues;

I've found out that default value is 5000 ms. In Software Developers' Guide (http://www.ti.com/lit/ug/swru271f/swru271f.pdf), the formula is given as below:  

Effective Connection Interval = (Connection Interval) * ( 1 + (Slave Latency) )Take the following example:

Connection Interval: 80 (100ms)
Slave Latency: 4
Effective Connection Interval: (100ms) * ( 1 + 4 ) = 500ms

On (https://code.google.com/p/shred444/source/browse/trunk/Projects/ble/SimpleBLECentral/Source/simpleBLECentral.c?r=7) at line 102-103 it says:

// Maximum connection interval (units of 1.25ms) if automatic parameter update request is enabled
#define DEFAULT_UPDATE_MAX_CONN_INTERVAL      800

I've found out that I need to change "DEFAULT_UPDATE_MAX_CONN_INTERVAL" to 80 to make it 500 ms. Yet I don't have the source code of this .bin file: (https://github.com/RedBearLab/BLE_HCI/tree/master/arduino/libraries/BLEHCI

What do you recommend?

  • Just as a heads up. You can only obtain RSSI from a Connection Event, meaning if you want RSSI data to refresh 3-4 per second you Connection Interval must be less than 250msec.
  • Thank you. Can you explain it a little bit more please? Why did you say: "You can only obtain RSSI from a Connection Event"? I am already getting the RSSI and use it in a formula to measure the appr. distance. What if I modify Connection Interval less than 250 ms? A problem might occur? 

  • Oh, sorry. I've missed this: http://www.ti.com/lit/ug/swru271f/swru271f.pdf
  • Anyone had the chance to check this issue?
  • Progress and new issues;

    I've found out that default value is 5000 ms. In Software Developers' Guide (http://www.ti.com/lit/ug/swru271f/swru271f.pdf), the formula is given as below:

    Effective Connection Interval = (Connection Interval) * ( 1 + (Slave Latency) )Take the following example:

    Connection Interval: 80 (100ms)
    Slave Latency: 4
    Effective Connection Interval: (100ms) * ( 1 + 4 ) = 500ms

    On (https://code.google.com/p/shred444/source/browse/trunk/Projects/ble/SimpleBLECentral/Source/simpleBLECentral.c?r=7) at line 102-103 it says:

    // Maximum connection interval (units of 1.25ms) if automatic parameter update request is enabled
    #define DEFAULT_UPDATE_MAX_CONN_INTERVAL 800
    I've found out that I need to change "DEFAULT_UPDATE_MAX_CONN_INTERVAL" to 80 to make it 500 ms. Yet I don't have the source code of this .bin file: (https://github.com/RedBearLab/BLE_HCI/tree/master/arduino/libraries/BLEHCI)

    What do you recommend?