// Function for dispatching a S110 SoftDevice event to all modules // with a S110 SoftDevice event handler. static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { ble_conn_params_on_ble_evt(p_ble_evt); ble_nus_on_ble_evt(&m_nus, p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the scheduler in the main loop after a BLE stack event has * been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { if((p_ble_evt->evt.gap_evt.params.connected.role == BLE_GAP_ROLE_CENTRAL) || (m_conn_handle_central_hrs == p_ble_evt->evt.gap_evt.conn_handle) || (m_conn_handle_central_rsc == p_ble_evt->evt.gap_evt.conn_handle)) { dm_ble_evt_handler(p_ble_evt); ble_db_discovery_on_ble_evt(&m_ble_db_discovery, p_ble_evt); ble_hrs_c_on_ble_evt(&m_ble_hrs_c, p_ble_evt); ble_rscs_c_on_ble_evt(&m_ble_rsc_c, p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_central_evt(p_ble_evt); } if((p_ble_evt->evt.gap_evt.params.connected.role == BLE_GAP_ROLE_PERIPH) || (m_conn_handle_peripheral == p_ble_evt->evt.gap_evt.conn_handle)) { ble_hrs_on_ble_evt(&m_hrs, p_ble_evt); ble_rscs_on_ble_evt(&m_rscs, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); on_ble_peripheral_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); } }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { dm_ble_evt_handler(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the scheduler in the main loop after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); ble_android_on_ble_evt(&m_android, p_ble_evt); ble_temp_on_ble_evt(&m_temp, p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { ble_conn_state_on_ble_evt(p_ble_evt); pm_on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); nrf_ble_qwr_on_ble_evt(&m_qwr, p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { dm_ble_evt_handler(p_ble_evt); ble_db_discovery_on_ble_evt(&m_ble_db_discovery, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); ble_ancs_c_on_ble_evt(&m_ancs_c, p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the scheduler in the main loop after a BLE stack event has * been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { uint16_t conn_handle; uint16_t role; /** The Connection state module has to be fed BLE events in order to function correctly * Remember to call ble_conn_state_on_ble_evt before calling any ble_conns_state_* functions. */ ble_conn_state_on_ble_evt(p_ble_evt); pm_ble_evt_handler(p_ble_evt); // The connection handle should really be retrievable for any event type. conn_handle = p_ble_evt->evt.gap_evt.conn_handle; role = ble_conn_state_role(conn_handle); // Based on the role this device plays in the connection, dispatch to the right applications. if (role == BLE_GAP_ROLE_PERIPH) { // Manages peripheral LEDs. on_ble_peripheral_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); // Dispatch to peripheral applications. ble_hrs_on_ble_evt (&m_hrs, p_ble_evt); ble_rscs_on_ble_evt(&m_rscs, p_ble_evt); } else if ((role == BLE_GAP_ROLE_CENTRAL) || (p_ble_evt->header.evt_id == BLE_GAP_EVT_ADV_REPORT)) { /** on_ble_central_evt will update the connection handles, so we want to execute it * after dispatching to the central applications upon disconnection. */ if (p_ble_evt->header.evt_id != BLE_GAP_EVT_DISCONNECTED) { on_ble_central_evt(p_ble_evt); } if (conn_handle == m_conn_handle_hrs_c) { ble_hrs_c_on_ble_evt(&m_ble_hrs_c, p_ble_evt); ble_db_discovery_on_ble_evt(&m_ble_db_discovery_hrs, p_ble_evt); } else if (conn_handle == m_conn_handle_rscs_c) { ble_rscs_c_on_ble_evt(&m_ble_rsc_c, p_ble_evt); ble_db_discovery_on_ble_evt(&m_ble_db_discovery_rsc, p_ble_evt); } // If the peer disconnected, we update the connection handles last. if (p_ble_evt->header.evt_id == BLE_GAP_EVT_DISCONNECTED) { on_ble_central_evt(p_ble_evt); } } }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { ble_conn_state_on_ble_evt(p_ble_evt); pm_on_ble_evt(p_ble_evt); ble_db_discovery_on_ble_evt(&m_ble_db_discovery, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); ble_ans_c_on_ble_evt(&m_ans_c, p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { ble_conn_state_on_ble_evt(p_ble_evt); pm_on_ble_evt(p_ble_evt); ble_hrs_on_ble_evt(&m_hrs, p_ble_evt); ble_bas_on_ble_evt(&m_bas, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the scheduler in the main loop after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); /* YOUR_JOB: Add service ble_evt handlers calls here, like, for example: ble_bas_on_ble_evt(&m_bas, p_ble_evt); */ }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { dm_ble_evt_handler(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); /*YOUR_JOB add calls to _on_ble_evt functions from each service your application is using ble_xxs_on_ble_evt(&m_xxs, p_ble_evt); ble_yys_on_ble_evt(&m_yys, p_ble_evt); */ }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { dm_ble_evt_handler(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); #ifdef BLE_DFU_APP_SUPPORT /** @snippet [Propagating BLE Stack events to DFU Service] */ ble_dfu_on_ble_evt(&m_dfus, p_ble_evt); /** @snippet [Propagating BLE Stack events to DFU Service] */ #endif // BLE_DFU_APP_SUPPORT on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); ble_cch_service_on_ble_evt(&m_cch_service, p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { /** The Connection state module has to be fed BLE events in order to function correctly * Remember to call ble_conn_state_on_ble_evt before calling any ble_conns_state_* functions. */ ble_conn_state_on_ble_evt(p_ble_evt); pm_on_ble_evt(p_ble_evt); ble_cscs_on_ble_evt(&m_cscs, p_ble_evt); ble_bas_on_ble_evt(&m_bas, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { // APPL_LOG("ble_evt_dispatch evt_id %d \r\n", (int)p_ble_evt->header.evt_id); dm_ble_evt_handler(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); if (p_ble_evt->header.evt_id == BLE_GAP_EVT_DISCONNECTED || p_ble_evt->header.evt_id == BLE_GAP_EVT_TIMEOUT) { advertising_init(); } on_ble_evt(p_ble_evt); bluetooth_on_ble_evt(p_ble_evt); }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { /** The Connection state module has to be fed BLE events in order to function correctly * Remember to call ble_conn_state_on_ble_evt before calling any ble_conns_state_* functions. */ ble_conn_state_on_ble_evt(p_ble_evt); pm_on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); /*YOUR_JOB add calls to _on_ble_evt functions from each service your application is using ble_xxs_on_ble_evt(&m_xxs, p_ble_evt); ble_yys_on_ble_evt(&m_yys, p_ble_evt); */ }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the scheduler in the main loop after a BLE stack event has * been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { uint16_t conn_handle; uint16_t role; ble_conn_state_on_ble_evt(p_ble_evt); pm_on_ble_evt(p_ble_evt); // The connection handle should really be retrievable for any event type. conn_handle = p_ble_evt->evt.gap_evt.conn_handle; role = ble_conn_state_role(conn_handle); // Based on the role this device plays in the connection, dispatch to the right applications. if (role == BLE_GAP_ROLE_PERIPH) { // Manages peripheral LEDs. on_ble_peripheral_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); // Dispatch to peripheral applications. ble_hrs_on_ble_evt (&m_hrs, p_ble_evt); ble_rscs_on_ble_evt(&m_rscs, p_ble_evt); } else if ((role == BLE_GAP_ROLE_CENTRAL) || (p_ble_evt->header.evt_id == BLE_GAP_EVT_ADV_REPORT)) { /** on_ble_central_evt will update the connection handles, so we want to execute it * after dispatching to the central applications upon disconnection. */ if (p_ble_evt->header.evt_id != BLE_GAP_EVT_DISCONNECTED) { on_ble_central_evt(p_ble_evt); } if (conn_handle < CENTRAL_LINK_COUNT + PERIPHERAL_LINK_COUNT) { ble_db_discovery_on_ble_evt(&m_ble_db_discovery[conn_handle], p_ble_evt); } ble_hrs_c_on_ble_evt(&m_ble_hrs_c, p_ble_evt); ble_rscs_c_on_ble_evt(&m_ble_rsc_c, p_ble_evt); // If the peer disconnected, we update the connection handles last. if (p_ble_evt->header.evt_id == BLE_GAP_EVT_DISCONNECTED) { on_ble_central_evt(p_ble_evt); } } }
/**@brief Function for dispatching a BLE stack event to all modules with a BLE stack event handler. * * @details This function is called from the BLE Stack event interrupt handler after a BLE stack * event has been received. * * @param[in] p_ble_evt Bluetooth stack event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { dm_ble_evt_handler(p_ble_evt); ble_rscs_on_ble_evt(&m_rscs, p_ble_evt); ble_bas_on_ble_evt(&m_bas, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); #ifdef BLE_DFU_APP_SUPPORT /** @snippet [Propagating BLE Stack events to DFU Service] */ ble_dfu_on_ble_evt(&m_dfus, p_ble_evt); /** @snippet [Propagating BLE Stack events to DFU Service] */ #endif // BLE_DFU_APP_SUPPORT #ifdef BLE_DATA_SYNC_SUPPORT /** @snippet [Propagating BLE Stack events to data sync Service] */ ble_data_sync_on_ble_evt(&m_data_syncs, p_ble_evt); /** @snippet [Propagating BLE Stack events to data sync Service] */ #endif // BLE_DATA_SYNC_SUPPORT }
/**@brief Function for dispatching a S110 SoftDevice event to all modules with a S110 SoftDevice * event handler. * * @details This function is called from the S110 SoftDevice event interrupt handler after a S110 * SoftDevice event has been received. * * @param[in] p_ble_evt S110 SoftDevice event. */ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { #ifdef BLE_DFU_APP_SUPPORT dm_ble_evt_handler(p_ble_evt); #endif ble_conn_params_on_ble_evt(p_ble_evt); bsp_btn_ble_on_ble_evt(p_ble_evt); ble_nus_on_ble_evt(&m_nus, p_ble_evt); #if ENABLE_NEW_SERVECE new_service_nus_on_ble_evt(&new_m_nus, p_ble_evt); #endif #ifdef BLE_DFU_APP_SUPPORT /** @snippet [Propagating BLE Stack events to DFU Service] */ ble_dfu_on_ble_evt(&m_dfus, p_ble_evt); /** @snippet [Propagating BLE Stack events to DFU Service] */ #endif // BLE_DFU_APP_SUPPORT on_ble_evt(p_ble_evt); ble_advertising_on_ble_evt(p_ble_evt); //bsp_btn_ble_on_ble_evt(p_ble_evt); }
static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { on_ble_evt(p_ble_evt); // Intercept advertising timeout events to implement infinite advertising, and disconnect events to let radio-conflicting // operations to execute after a connection closes if( (p_ble_evt->header.evt_id == BLE_GAP_EVT_TIMEOUT // if timeout event && p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISING) // from advertising || p_ble_evt->header.evt_id == BLE_GAP_EVT_DISCONNECTED) // OR if disconnect event { // Count number of pending pause requests int pauseReqSrc = PAUSE_REQ_NONE; for(int src=0; src<PAUSE_REQ_NONE; src++) // look through all pause request sources { if(pauseRequest[src]) { pauseReqSrc = src; break; // check for any pending pause requests } } // If there are any pending pause requests, don't restart advertising yet. if(pauseReqSrc != PAUSE_REQ_NONE) { isAdvertising = false; sleep = false; // wake so that modules waiting for pause can act. debug_log("ADV: advertising paused, src %d.\r\n",pauseReqSrc); } // Otherwise restart advertising, for infinite advertising. else { isAdvertising = true; if(needAdvDataUpdate) { setAdvData(); /*ble_advdata_t advdata; constructAdvData(&advdata); uint32_t result = ble_advdata_set(&advdata, NULL); // set advertising data, don't set scan response data. if(result != NRF_SUCCESS) { debug_log("ERR: error setting advertising data, #%d.\r\n",(int)result); } else { debug_log("Updated adv. data.\r\n"); }*/ needAdvDataUpdate = false; } //debug_log("ADV: advertising REstarted\r\n"); uint32_t err_code = ble_advertising_start(BLE_ADV_MODE_FAST); // restart advertising BLE_ERROR_CHECK(err_code); } } else { ble_advertising_on_ble_evt(p_ble_evt); } //ble_bas_on_ble_evt(&m_bas, p_ble_evt); ble_nus_on_ble_evt(&m_nus, p_ble_evt); }