/**@brief Function for handling of descriptor discovery responses. * * @details This function will validate and store the descriptor received. * If not all descriptors are discovered it will continue the descriptor discovery * procedure, otherwise it will continue to running state. * If we receive a GATT Client error, we will go to handling of discovery failure. */ static void event_descriptor_rsp(ble_ans_c_t * p_ans, const ble_evt_t * p_ble_evt) { if (p_ble_evt->evt.gattc_evt.gatt_status == BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND || p_ble_evt->evt.gattc_evt.gatt_status == BLE_GATT_STATUS_ATTERR_INVALID_HANDLE) { handle_discovery_failure(p_ans, NRF_ERROR_NOT_FOUND); } else if (p_ble_evt->evt.gattc_evt.gatt_status) { // We have received an unexpected result. // As we are in a connected state, but can not continue // our descriptor discovery, we will go to running state. handle_discovery_failure(p_ans, p_ble_evt->evt.gattc_evt.gatt_status); } else { if (p_ble_evt->evt.gattc_evt.params.desc_disc_rsp.count > 0) { descriptor_set(&m_service, &(p_ble_evt->evt.gattc_evt.params.desc_disc_rsp.descs[0])); } if (m_service.new_alert.handle_cccd == BLE_ANS_INVALID_HANDLE || m_service.unread_alert_status.handle_cccd == BLE_ANS_INVALID_HANDLE) { descriptor_disc_req_send(p_ans); } else { connection_established(p_ans); } } }
void ChatCore::tryconnect(const QString& nickname, const QString& ip, const QString& port) { auto thread = new QThread(this); if (server != nullptr) { server->destroy_connection(); delete server; } server = new Server(nickname.toStdString(), ip.toStdString(), port.toInt()); // server->moveToThread(thread); connect(thread, SIGNAL(started()), server, SLOT(establish_connection())); connect(server, SIGNAL(connected()), this, SLOT(connection_established())); connect(server, SIGNAL(readyRead()), this, SLOT(message_received())); connect(server, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(connection_failed(QAbstractSocket::SocketError))); connect(server, SIGNAL(stop_thread()), thread, SLOT(quit())); thread->start(); }
/**@brief Function for handling the encrypted link event when a secure * connection has been established with a central. * * @details This function will check if the service for the central is known. * Service known - Execute action running / switch to running state. * Service unknown - Initiate Service Discovery Procedure. */ static void event_encrypted_link(ble_ans_c_t * p_ans, const ble_evt_t * p_ble_evt) { // If we are setting up a bonded connection and the UUID of the service // is unknown, a new discovery must be performed. if (m_service.service.uuid.uuid != BLE_UUID_ALERT_NOTIFICATION_SERVICE) { m_service.handle = INVALID_SERVICE_HANDLE; service_disc_req_send(p_ans); } else { connection_established(p_ans); } }