/**@brief Function for indicating that a connection has successfully been established. * Either when the Service Discovery Procedure completes or a re-connection has been * established to a bonded central. * * @details This function is executed when a service discovery or a re-connect to a bonded central * occurs. In the event of re-connection to a bonded central, this function will ensure * writing of the control point according to the Alert Notification Service Client * specification. * Finally an event is passed to the application: * BLE_ANS_C_EVT_RECONNECT - When we are connected to an existing central and the * alert notification control point has been written. * BLE_ANS_C_EVT_DISCOVER_COMPLETE - When we are connected to a new central and the Service * Discovery has been completed. */ static void connection_established(const ble_ans_c_t * p_ans) { ble_ans_c_evt_t event; m_client_state = STATE_RUNNING; if (m_service.handle == INVALID_SERVICE_HANDLE) { m_service.handle = INVALID_SERVICE_HANDLE_DISC; } if (p_ans->central_handle != INVALID_CENTRAL_HANDLE && m_service.handle < INVALID_SERVICE_HANDLE_BASE) { uint32_t err_code = ble_ans_c_new_alert_notify(p_ans, ANS_TYPE_ALL_ALERTS); if (err_code != NRF_SUCCESS && p_ans->error_handler != NULL) { p_ans->error_handler(err_code); } err_code = ble_ans_c_unread_alert_notify(p_ans, ANS_TYPE_ALL_ALERTS); if (err_code != NRF_SUCCESS && p_ans->error_handler != NULL) { p_ans->error_handler(err_code); } event.evt_type = BLE_ANS_C_EVT_RECONNECT; p_ans->evt_handler(&event); } else { event.evt_type = BLE_ANS_C_EVT_DISCOVER_COMPLETE; p_ans->evt_handler(&event); } }
/**@brief Function for handling key presses of the All Alert Notify button. * * @details This function check the current state of the alert notifications and based on the state * it will request the central to resend current alert counters. */ static void all_alert_notify_request(void) { uint32_t err_code = NRF_SUCCESS; if (m_unread_alert_state == ALERT_NOTIFICATION_ON || m_unread_alert_state == ALERT_NOTIFICATION_ENABLED ) { err_code = ble_ans_c_unread_alert_notify(&m_ans_c, ANS_TYPE_ALL_ALERTS); if (err_code != NRF_SUCCESS && err_code != NRF_ERROR_INVALID_STATE) { APP_ERROR_HANDLER(err_code); } } if (m_new_alert_state == ALERT_NOTIFICATION_ON || m_new_alert_state == ALERT_NOTIFICATION_ENABLED ) { err_code = ble_ans_c_new_alert_notify(&m_ans_c, ANS_TYPE_ALL_ALERTS); if (err_code != NRF_SUCCESS && err_code != NRF_ERROR_INVALID_STATE) { APP_ERROR_HANDLER(err_code); } } }