Quantcast
Channel: Cypress Semiconductor - PSoC 4 BLE
Viewing all articles
Browse latest Browse all 726

Handle correcty the "busy state" of the ble stack

$
0
0
Forums: 

Hello everyone,

I would like how to handle correcty the "busy state" of the ble stack.

I tried a basic test where  the same data is send constantly with notification :

void SendDataOverStatesNotification(uint8 StatesData, uint8 len)
{
/* 'StatesnotificationHandle' stores States notification data parameters */
CYBLE_GATTS_HANDLE_VALUE_NTF_T StatesnotificationHandle;
/* If stack is not busy, then send the notification */
    
/* Update notification handle with CapSense slider data*/
StatesnotificationHandle.attrHandle = CYBLE_SHUTBASSCV_STATES_CHAR_HANDLE;
StatesnotificationHandle.value.val = &StatesData;
StatesnotificationHandle.value.len = len;
    
/* Wait until stack is free to send data*/
    while(busyStatus  != CYBLE_STACK_STATE_FREE) { CyBle_ProcessEvents(); }
    
/* Send the updated handle as part of attribute for notifications */
CyBle_GattsNotification(connectionHandle,&StatesnotificationHandle);
}
 

 

If i put a  CyDelay(5); before this function this work fine (at least during 10 minutes).
Without the delay it's crashing after 5 sec.

I would like to have something which is not crashing no matter the connection interval. 
How i can just wait the BLE stack properly without a delay ?

Should i use : 

while(busyStatus  != CYBLE_STACK_STATE_FREE) { CyBle_ProcessEvents(); }

or

if(busyStatus  == CYBLE_STACK_STATE_FREE) {my function code}

I don't see why the stack is crashing if I wait unti it is not busy after each send..

 

Thanks for your answers

 

 

 


Viewing all articles
Browse latest Browse all 726

Trending Articles