/**@brief Dispatches 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_bondmngr_on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); ble_ans_c_on_ble_evt(&m_ans_c, p_ble_evt); on_ble_evt(p_ble_evt); }
/**@brief Dispatches 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_bondmngr_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); 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_bondmngr_on_ble_evt(p_ble_evt); //DM: ble_hrs_on_ble_evt(&m_hrs, p_ble_evt); ble_bas_on_ble_evt(&bas, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); }
/**@brief Dispatches 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_bondmngr_on_ble_evt(p_ble_evt); ble_oto_on_ble_evt(&m_oto, p_ble_evt); ble_as_on_ble_evt(&m_as, p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); on_ble_evt(p_ble_evt); }
*/ static void ble_evt_dispatch(ble_evt_t * p_ble_evt) { ble_bondmngr_on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); ble_ias_on_ble_evt(&m_ias, p_ble_evt); ble_lls_on_ble_evt(&m_lls, p_ble_evt); ble_bas_on_ble_evt(&m_bas, p_ble_evt); ble_ias_c_on_ble_evt(&m_ias_c, p_ble_evt); on_ble_evt(p_ble_evt);
/**@brief Dispatches 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_bondmngr_on_ble_evt(p_ble_evt); ble_conn_params_on_ble_evt(p_ble_evt); ble_ias_on_ble_evt(&m_ias, p_ble_evt); ble_lls_on_ble_evt(&m_lls, p_ble_evt); ble_bas_on_ble_evt(&m_bas, p_ble_evt); ble_ias_c_on_ble_evt(&m_ias_c, p_ble_evt); on_ble_evt(p_ble_evt); // main bluetooth event polling }
static void btle_handler(ble_evt_t *p_ble_evt) { /* Library service handlers */ #if NEED_BOND_MANAGER /* disabled by default */ ble_bondmngr_on_ble_evt(p_ble_evt); #endif #if SDK_CONN_PARAMS_MODULE_ENABLE ble_conn_params_on_ble_evt(p_ble_evt); #endif /* Custom event handler */ switch (p_ble_evt->header.evt_id) { case BLE_GAP_EVT_CONNECTED: { Gap::Handle_t handle = p_ble_evt->evt.gap_evt.conn_handle; nRF51Gap::getInstance().setConnectionHandle(handle); const Gap::ConnectionParams_t *params = reinterpret_cast<Gap::ConnectionParams_t *>(&(p_ble_evt->evt.gap_evt.params.connected.conn_params)); const ble_gap_addr_t *peer = &p_ble_evt->evt.gap_evt.params.connected.peer_addr; nRF51Gap::getInstance().processConnectionEvent(handle, static_cast<Gap::addr_type_t>(peer->addr_type), peer->addr, params); break; } case BLE_GAP_EVT_DISCONNECTED: { Gap::Handle_t handle = p_ble_evt->evt.gap_evt.conn_handle; // Since we are not in a connection and have not started advertising, // store bonds nRF51Gap::getInstance().setConnectionHandle (BLE_CONN_HANDLE_INVALID); #if NEED_BOND_MANAGER /* disabled by default */ ASSERT_STATUS_RET_VOID ( ble_bondmngr_bonded_centrals_store()); #endif Gap::DisconnectionReason_t reason; switch (p_ble_evt->evt.gap_evt.params.disconnected.reason) { case BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION: reason = Gap::LOCAL_HOST_TERMINATED_CONNECTION; break; case BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION: reason = Gap::REMOTE_USER_TERMINATED_CONNECTION; break; case BLE_HCI_CONN_INTERVAL_UNACCEPTABLE: reason = Gap::CONN_INTERVAL_UNACCEPTABLE; break; default: /* Please refer to the underlying transport library for an * interpretion of this reason's value. */ reason = static_cast<Gap::DisconnectionReason_t>(p_ble_evt->evt.gap_evt.params.disconnected.reason); break; } nRF51Gap::getInstance().processDisconnectionEvent(handle, reason); break; } case BLE_GAP_EVT_SEC_PARAMS_REQUEST: { ble_gap_sec_params_t sec_params = {0}; sec_params.timeout = 30; /*< Timeout for Pairing Request or * Security Request (in seconds). */ sec_params.bond = 1; /**< Perform bonding. */ sec_params.mitm = CFG_BLE_SEC_PARAM_MITM; sec_params.io_caps = CFG_BLE_SEC_PARAM_IO_CAPABILITIES; sec_params.oob = CFG_BLE_SEC_PARAM_OOB; sec_params.min_key_size = CFG_BLE_SEC_PARAM_MIN_KEY_SIZE; sec_params.max_key_size = CFG_BLE_SEC_PARAM_MAX_KEY_SIZE; ASSERT_STATUS_RET_VOID(sd_ble_gap_sec_params_reply(nRF51Gap::getInstance().getConnectionHandle(), BLE_GAP_SEC_STATUS_SUCCESS, &sec_params)); } break; case BLE_GAP_EVT_TIMEOUT: if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT) { nRF51Gap::getInstance().processEvent(GapEvents::GAP_EVENT_TIMEOUT); } break; case BLE_GATTC_EVT_TIMEOUT: case BLE_GATTS_EVT_TIMEOUT: // Disconnect on GATT Server and Client timeout events. // ASSERT_STATUS_RET_VOID (sd_ble_gap_disconnect(m_conn_handle, // BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION)); break; default: break; } nRF51GattServer::getInstance().hwCallback(p_ble_evt); }
static void btle_handler(ble_evt_t *p_ble_evt) { /* Library service handlers */ #if NEED_BOND_MANAGER /* disabled by default */ ble_bondmngr_on_ble_evt(p_ble_evt); #endif ble_conn_params_on_ble_evt(p_ble_evt); /* Custom event handler */ switch (p_ble_evt->header.evt_id) { case BLE_GAP_EVT_CONNECTED: { Gap::Handle_t handle = p_ble_evt->evt.gap_evt.conn_handle; nRF51Gap::getInstance().setConnectionHandle(handle); nRF51Gap::getInstance().processHandleSpecificEvent(GapEvents::GAP_EVENT_CONNECTED, handle); break; } case BLE_GAP_EVT_DISCONNECTED: { Gap::Handle_t handle = p_ble_evt->evt.gap_evt.conn_handle; // Since we are not in a connection and have not started advertising, // store bonds nRF51Gap::getInstance().setConnectionHandle (BLE_CONN_HANDLE_INVALID); #if NEED_BOND_MANAGER /* disabled by default */ ASSERT_STATUS_RET_VOID ( ble_bondmngr_bonded_centrals_store()); #endif nRF51Gap::getInstance().processHandleSpecificEvent(GapEvents::GAP_EVENT_DISCONNECTED, handle); break; } case BLE_GAP_EVT_SEC_PARAMS_REQUEST: { ble_gap_sec_params_t sec_params = {0}; sec_params.timeout = 30; /*< Timeout for Pairing Request or * Security Request (in seconds). */ sec_params.bond = 1; /**< Perform bonding. */ sec_params.mitm = CFG_BLE_SEC_PARAM_MITM; sec_params.io_caps = CFG_BLE_SEC_PARAM_IO_CAPABILITIES; sec_params.oob = CFG_BLE_SEC_PARAM_OOB; sec_params.min_key_size = CFG_BLE_SEC_PARAM_MIN_KEY_SIZE; sec_params.max_key_size = CFG_BLE_SEC_PARAM_MAX_KEY_SIZE; ASSERT_STATUS_RET_VOID( sd_ble_gap_sec_params_reply(nRF51Gap::getInstance(). getConnectionHandle(), BLE_GAP_SEC_STATUS_SUCCESS, &sec_params)); } break; case BLE_GAP_EVT_TIMEOUT: if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT) { nRF51Gap::getInstance().processEvent(GapEvents::GAP_EVENT_TIMEOUT); } break; case BLE_GATTC_EVT_TIMEOUT: case BLE_GATTS_EVT_TIMEOUT: // Disconnect on GATT Server and Client timeout events. // ASSERT_STATUS_RET_VOID (sd_ble_gap_disconnect(m_conn_handle, // BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION)); break; default: break; } nRF51GattServer::getInstance().hwCallback(p_ble_evt); }