Sure, this is the section related to the BLE communication:
void updateBPM(){
CYBLE_GATTS_HANDLE_VALUE_NTF_T tempHandle;
if(CyBle_GetState() != CYBLE_STATE_CONNECTED){
return;
}
tempHandle.attrHandle = CYBLE_BPMSPO2_BPM_CHAR_HANDLE;
tempHandle.value.val = (uint8 *)&promedioBPM;
tempHandle.value.len = 4;
CyBle_GattsWriteAttributeValue(&tempHandle,0,&cyBle_connHandle,0);
if(BPMNotify){
CyBle_GattsNotification(cyBle_connHandle,&tempHandle);
}
}
//BLE STACK
void BleCallBack(uint32 event, void* eventParam{
CYBLE_GATTS_WRITE_REQ_PARAM_T *wrReqParam;
switch(event){
case CYBLE_EVT_STACK_ON:
CyBle_GappStartAdvertisement(CYBLE_ADVERTISING_FAST);
PWM_Start();
break;
case CYBLE_EVT_GAP_DEVICE_DISCONNECTED:
BPMNotify = 0;
CyBle_GappStartAdvertisement(CYBLE_ADVERTISING_FAST);
PWM_Start();
break;
//Update BPM Value
case CYBLE_EVT_GATT_CONNECT_IND:
updateBPM();
PWM_Stop();
break;
//Write request
case CYBLE_EVT_GATTS_WRITE_REQ:
wrReqParam = (CYBLE_GATTS_WRITE_REQ_PARAM_T *) eventParam;
//Petición de actualizar notificación de BPM
if(wrReqParam->handleValPair.attrHandle == CYBLE_BPMSPO2_BPM_BPMCCCD_DESC_HANDLE){
CyBle_GattsWriteAttributeValue(&wrReqParam->handleValPair, 0, &cyBle_connHandle, CYBLE_GATT_DB_PEER_INITIATED);
BPMNotify = wrReqParam->handleValPair.value.val[0] & 0x01;
CyBle_GattsWriteRsp(cyBle_connHandle);
}
break;
default:
break;
}
then on my main function I this:
int main(){
while(1){
if(BPMNotify == 1){
updateBPM();
}
CyBle_ProcessEvents();
}
}
Basically, I followed this tutorial:
Thanks!!