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.

LAUNCHXL-CC1350: BLE, Bluetooth low energy, indications, sending multiple indications, cc1350 launchpad, bluetooth

Part Number: LAUNCHXL-CC1350
Other Parts Discussed in Thread: CC1350

Hi, 

I am using cc1350 launchpad. I have edited the simple_peripheral code to work with indications. I have also written an android app which can receive the indications. 

I have set the indication config on a particular characteristic, whenever I want to send an indication I use SimpleProfile_SetParameter to set a new value for that characteristic and that will automatically send the indication to my app. 

I want to send multiple indications. If I just loop SimpleProfile_SetParameter with new values, it only sends the first one. If I put a large delay between each cycle of the loop, then I am able to receive all indications but slowly. Since it is a BLE, I understand it can only send an indication on each connection interval.

Instead of having large delays and then send an indication, is there anyway for me to get alerted on a new connection interval? 

or is there anyway to make sure the indication has been sent (for a characteristic) before it changes its value and send the new indication?

  • Hi Babak,

    There is no constraint in Bluetooth that says that you can only send one indication packet per connection event. However, there may be constraints with the android BLE module.

    The peripheral can not force the central (the android device) to change the connection interval, but you can send a connection parameter update request. To do this, set the GAPROLE_PARAM_UPDATE_ENABLE to GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS and set the corresponding parameters as desired.

    // Whether to enable automatic parameter update request when a connection is
    // formed
    
    uint8_t enableUpdateRequest = GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS;
    
    // Minimum connection interval (units of 1.25ms, 80=100ms) if automatic
    // parameter update request is enabled
    
    uint16_t desiredMinInterval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;
    
    // Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic
    // parameter update request is enabled
    
        uint16_t desiredMaxInterval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;
    
    // Slave latency to use if automatic parameter update request is enabled
    
        uint16_t desiredSlaveLatency = DEFAULT_DESIRED_SLAVE_LATENCY;
    
    // Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter
    // update request is enabled
    
        uint16_t desiredConnTimeout = DEFAULT_DESIRED_CONN_TIMEOUT;    
    
        GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t),
                             &enableUpdateRequest);
        GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t),
                             &desiredMinInterval);
        GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t),
                             &desiredMaxInterval);
        GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t),
                             &desiredSlaveLatency);
        GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t),
                             &desiredConnTimeout);

     

  • I would also advice you to ask in Android forums what connection parameters tend to be accepted by the android central.