L2CA_ConnectRsp(bd_addr, l2cap_id, l2cap_cid, L2CAP_CONN_OK, L2CAP_CONN_OK);
}
+static void sdp_on_l2cap_error(uint16_t l2cap_cid, uint16_t result) {
+ tCONN_CB* p_ccb = sdpu_find_ccb_by_cid(l2cap_cid);
+ if (p_ccb->con_state == SDP_STATE_CONN_SETUP) {
+ // If we see an error while waiting for connection response
+ SDP_TRACE_WARNING("SDP - Rcvd conn cnf with error: 0x%x CID 0x%x", result,
+ p_ccb->connection_id);
+
+ /* Tell the user if there is a callback */
+ if (p_ccb->p_cb || p_ccb->p_cb2) {
+ uint16_t err = -1;
+ if ((result == HCI_ERR_HOST_REJECT_SECURITY) ||
+ (result == HCI_ERR_AUTH_FAILURE) ||
+ (result == HCI_ERR_PAIRING_NOT_ALLOWED) ||
+ (result == HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED) ||
+ (result == HCI_ERR_KEY_MISSING))
+ err = SDP_SECURITY_ERR;
+ else if (result == HCI_ERR_HOST_REJECT_DEVICE)
+ err = SDP_CONN_REJECTED;
+ else
+ err = SDP_CONN_FAILED;
+ if (p_ccb->p_cb)
+ (*p_ccb->p_cb)(err);
+ else if (p_ccb->p_cb2)
+ (*p_ccb->p_cb2)(err, p_ccb->user_data);
+ }
+ sdpu_release_ccb(p_ccb);
+ } else if (p_ccb->con_state == SDP_STATE_CFG_SETUP) {
+ // If we see an error while waiting for configure response
+ sdp_disconnect(p_ccb, SDP_CFG_FAILED);
+ }
+}
+
/*******************************************************************************
*
* Function sdp_connect_cfm
if ((result == L2CAP_CONN_OK) && (p_ccb->con_state == SDP_STATE_CONN_SETUP)) {
p_ccb->con_state = SDP_STATE_CFG_SETUP;
} else {
- SDP_TRACE_WARNING("SDP - Rcvd conn cnf with error: 0x%x CID 0x%x", result,
- p_ccb->connection_id);
-
- /* Tell the user if there is a callback */
- if (p_ccb->p_cb || p_ccb->p_cb2) {
- uint16_t err = -1;
- if ((result == HCI_ERR_HOST_REJECT_SECURITY) ||
- (result == HCI_ERR_AUTH_FAILURE) ||
- (result == HCI_ERR_PAIRING_NOT_ALLOWED) ||
- (result == HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED) ||
- (result == HCI_ERR_KEY_MISSING))
- err = SDP_SECURITY_ERR;
- else if (result == HCI_ERR_HOST_REJECT_DEVICE)
- err = SDP_CONN_REJECTED;
- else
- err = SDP_CONN_FAILED;
- if (p_ccb->p_cb)
- (*p_ccb->p_cb)(err);
- else if (p_ccb->p_cb2)
- (*p_ccb->p_cb2)(err, p_ccb->user_data);
- }
- sdpu_release_ccb(p_ccb);
+ sdp_on_l2cap_error(l2cap_cid, result);
}
}
sdp_conn_timer_timeout, p_ccb);
}
} else {
- sdp_disconnect(p_ccb, SDP_CFG_FAILED);
+ sdp_on_l2cap_error(l2cap_cid, result);
}
}