Lines Matching refs:p_ccb
42 static void l2c_csm_closed (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
43 static void l2c_csm_orig_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
44 static void l2c_csm_term_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
45 static void l2c_csm_w4_l2cap_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
46 static void l2c_csm_w4_l2ca_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
47 static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
48 static void l2c_csm_open (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
49 static void l2c_csm_w4_l2cap_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
50 static void l2c_csm_w4_l2ca_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data);
65 void l2c_csm_execute (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_execute() argument
67 switch (p_ccb->chnl_state) in l2c_csm_execute()
70 l2c_csm_closed (p_ccb, event, p_data); in l2c_csm_execute()
74 l2c_csm_orig_w4_sec_comp (p_ccb, event, p_data); in l2c_csm_execute()
78 l2c_csm_term_w4_sec_comp (p_ccb, event, p_data); in l2c_csm_execute()
82 l2c_csm_w4_l2cap_connect_rsp (p_ccb, event, p_data); in l2c_csm_execute()
86 l2c_csm_w4_l2ca_connect_rsp (p_ccb, event, p_data); in l2c_csm_execute()
90 l2c_csm_config (p_ccb, event, p_data); in l2c_csm_execute()
94 l2c_csm_open (p_ccb, event, p_data); in l2c_csm_execute()
98 l2c_csm_w4_l2cap_disconnect_rsp (p_ccb, event, p_data); in l2c_csm_execute()
102 l2c_csm_w4_l2ca_disconnect_rsp (p_ccb, event, p_data); in l2c_csm_execute()
121 static void l2c_csm_closed (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_closed() argument
124 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_closed()
128 if (p_ccb->p_rcb == NULL) in l2c_csm_closed()
131 …L2CAP_TRACE_ERROR2 ("L2CAP - LCID: 0x%04x st: CLOSED evt: %s p_rcb == NULL", p_ccb->local_cid, l… in l2c_csm_closed()
133 …L2CAP_TRACE_ERROR2 ("L2CAP - LCID: 0x%04x st: CLOSED evt: 0x%04x p_rcb == NULL", p_ccb->local_ci… in l2c_csm_closed()
142 if ( l2c_ucd_process_event (p_ccb, event, p_data) ) in l2c_csm_closed()
150 disconnect_ind = p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb; in l2c_csm_closed()
151 connect_cfm = p_ccb->p_rcb->api.pL2CA_ConnectCfm_Cb; in l2c_csm_closed()
154 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: CLOSED evt: %s", p_ccb->local_cid, l2c_csm_get_eve… in l2c_csm_closed()
162 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_closed()
163 l2cu_release_ccb (p_ccb); in l2c_csm_closed()
168 p_ccb->chnl_state = CST_ORIG_W4_SEC_COMP; in l2c_csm_closed()
169 btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, in l2c_csm_closed()
170 p_ccb->p_lcb->handle, TRUE, &l2c_link_sec_comp, p_ccb); in l2c_csm_closed()
176 || !btm_acl_notif_conn_collision(p_ccb->p_lcb->remote_bd_addr)) in l2c_csm_closed()
178 …L2CAP_TRACE_API2 ("L2CAP - Calling ConnectCfm_Cb(), CID: 0x%04x Status: %d", p_ccb->local_cid, p_… in l2c_csm_closed()
179 l2cu_release_ccb (p_ccb); in l2c_csm_closed()
200 BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); in l2c_csm_closed()
203 BTM_CancelSniffMode (p_ccb->p_lcb->remote_bd_addr); in l2c_csm_closed()
207 if (btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, in l2c_csm_closed()
208 … p_ccb->p_lcb->handle, TRUE, &l2c_link_sec_comp, p_ccb) == BTM_CMD_STARTED) in l2c_csm_closed()
209 p_ccb->chnl_state = CST_ORIG_W4_SEC_COMP; in l2c_csm_closed()
213 p_ccb->chnl_state = CST_W4_L2CAP_CONNECT_RSP; in l2c_csm_closed()
216 if (!p_ccb->p_lcb->w4_info_rsp) in l2c_csm_closed()
219 if (!l2c_fcr_chk_chan_modes(p_ccb)) in l2c_csm_closed()
221 l2cu_release_ccb (p_ccb); in l2c_csm_closed()
222 (*p_ccb->p_rcb->api.pL2CA_ConnectCfm_Cb)(local_cid, L2CAP_CONN_NO_LINK); in l2c_csm_closed()
226 l2cu_send_peer_connect_req (p_ccb); in l2c_csm_closed()
227 … btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); in l2c_csm_closed()
233 …L2CAP_TRACE_API2 ("L2CAP - Calling ConnectCfm_Cb(), CID: 0x%04x Status: %d", p_ccb->local_cid, L2… in l2c_csm_closed()
234 l2cu_release_ccb (p_ccb); in l2c_csm_closed()
240 btu_stop_timer (&p_ccb->p_lcb->timer_entry); in l2c_csm_closed()
257 BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); in l2c_csm_closed()
260 BTM_CancelSniffMode (p_ccb->p_lcb->remote_bd_addr); in l2c_csm_closed()
263 p_ccb->chnl_state = CST_TERM_W4_SEC_COMP; in l2c_csm_closed()
264 if (btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, in l2c_csm_closed()
265 … p_ccb->p_lcb->handle, FALSE, &l2c_link_sec_comp, p_ccb) == BTM_CMD_STARTED) in l2c_csm_closed()
268 l2cu_send_peer_connect_rsp(p_ccb, L2CAP_CONN_PENDING, 0); in l2c_csm_closed()
273 …L2CAP_TRACE_API2 ("L2CAP - Calling ConnectCfm_Cb(), CID: 0x%04x Status: %d", p_ccb->local_cid, L2… in l2c_csm_closed()
274 l2cu_release_ccb (p_ccb); in l2c_csm_closed()
284 l2cu_release_ccb (p_ccb); in l2c_csm_closed()
300 static void l2c_csm_orig_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_orig_w4_sec_comp() argument
302 tL2CA_DISCONNECT_IND_CB *disconnect_ind = p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb; in l2c_csm_orig_w4_sec_comp()
303 tL2CA_CONNECT_CFM_CB *connect_cfm = p_ccb->p_rcb->api.pL2CA_ConnectCfm_Cb; in l2c_csm_orig_w4_sec_comp()
304 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_orig_w4_sec_comp()
307 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: ORIG_W4_SEC_COMP evt: %s", p_ccb->local_cid, l2c_c… in l2c_csm_orig_w4_sec_comp()
316 if ( l2c_ucd_process_event (p_ccb, event, p_data) ) in l2c_csm_orig_w4_sec_comp()
327 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_orig_w4_sec_comp()
328 l2cu_release_ccb (p_ccb); in l2c_csm_orig_w4_sec_comp()
334 btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, in l2c_csm_orig_w4_sec_comp()
335 p_ccb->p_lcb->handle, TRUE, &l2c_link_sec_comp, p_ccb); in l2c_csm_orig_w4_sec_comp()
340 p_ccb->chnl_state = CST_W4_L2CAP_CONNECT_RSP; in l2c_csm_orig_w4_sec_comp()
341 if (!p_ccb->p_lcb->w4_info_rsp) in l2c_csm_orig_w4_sec_comp()
344 if (!l2c_fcr_chk_chan_modes(p_ccb)) in l2c_csm_orig_w4_sec_comp()
346 l2cu_release_ccb (p_ccb); in l2c_csm_orig_w4_sec_comp()
351 … btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); in l2c_csm_orig_w4_sec_comp()
352 l2cu_send_peer_connect_req (p_ccb); /* Start Connection */ in l2c_csm_orig_w4_sec_comp()
358 …L2CAP_TRACE_API2 ("L2CAP - Calling ConnectCfm_Cb(), CID: 0x%04x Status: %d", p_ccb->local_cid, HC… in l2c_csm_orig_w4_sec_comp()
362 …if ( (p_ccb == p_ccb->p_lcb->ccb_queue.p_first_ccb) && (p_ccb == p_ccb->p_lcb->ccb_queue.p_last_cc… in l2c_csm_orig_w4_sec_comp()
364 p_ccb->p_lcb->idle_timeout = 0; in l2c_csm_orig_w4_sec_comp()
367 l2cu_release_ccb (p_ccb); in l2c_csm_orig_w4_sec_comp()
378 btm_sec_abort_access_req (p_ccb->p_lcb->remote_bd_addr); in l2c_csm_orig_w4_sec_comp()
380 l2cu_release_ccb (p_ccb); in l2c_csm_orig_w4_sec_comp()
396 static void l2c_csm_term_w4_sec_comp (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_term_w4_sec_comp() argument
399 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: TERM_W4_SEC_COMP evt: %s", p_ccb->local_cid, l2c_c… in l2c_csm_term_w4_sec_comp()
405 if ( p_ccb->local_cid == L2CAP_CONNECTIONLESS_CID ) in l2c_csm_term_w4_sec_comp()
408 if ( l2c_ucd_process_event (p_ccb, event, p_data) ) in l2c_csm_term_w4_sec_comp()
420 btm_sec_abort_access_req (p_ccb->p_lcb->remote_bd_addr); in l2c_csm_term_w4_sec_comp()
422 l2cu_release_ccb (p_ccb); in l2c_csm_term_w4_sec_comp()
426 p_ccb->chnl_state = CST_W4_L2CA_CONNECT_RSP; in l2c_csm_term_w4_sec_comp()
429 if (!p_ccb->p_lcb->w4_info_rsp) in l2c_csm_term_w4_sec_comp()
432 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); in l2c_csm_term_w4_sec_comp()
433 L2CAP_TRACE_API1 ("L2CAP - Calling Connect_Ind_Cb(), CID: 0x%04x", p_ccb->local_cid); in l2c_csm_term_w4_sec_comp()
435 … (*p_ccb->p_rcb->api.pL2CA_ConnectInd_Cb) (p_ccb->p_lcb->remote_bd_addr, p_ccb->local_cid, in l2c_csm_term_w4_sec_comp()
436 p_ccb->p_rcb->psm, p_ccb->remote_id); in l2c_csm_term_w4_sec_comp()
450 l2cu_send_peer_connect_rsp(p_ccb, L2CAP_CONN_PENDING, 0); in l2c_csm_term_w4_sec_comp()
458 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_DELAY_CHECK_SM4); in l2c_csm_term_w4_sec_comp()
462 l2cu_send_peer_connect_rsp (p_ccb, L2CAP_CONN_SECURITY_BLOCK, 0); in l2c_csm_term_w4_sec_comp()
463 l2cu_release_ccb (p_ccb); in l2c_csm_term_w4_sec_comp()
473 l2cu_release_ccb (p_ccb); in l2c_csm_term_w4_sec_comp()
477 … l2cu_send_peer_disc_rsp (p_ccb->p_lcb, p_ccb->remote_id, p_ccb->local_cid, p_ccb->remote_cid); in l2c_csm_term_w4_sec_comp()
480 btm_sec_abort_access_req (p_ccb->p_lcb->remote_bd_addr); in l2c_csm_term_w4_sec_comp()
482 l2cu_release_ccb (p_ccb); in l2c_csm_term_w4_sec_comp()
487 if (!btsnd_hcic_disconnect (p_ccb->p_lcb->handle, HCI_ERR_AUTH_FAILURE)) in l2c_csm_term_w4_sec_comp()
489 …L2CAP_TRACE_API1 ("L2CAP - Calling btsnd_hcic_disconnect for handle %i failed", p_ccb->p_lcb->hand… in l2c_csm_term_w4_sec_comp()
490 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, 1); in l2c_csm_term_w4_sec_comp()
495 btm_sec_l2cap_access_req (p_ccb->p_lcb->remote_bd_addr, p_ccb->p_rcb->psm, in l2c_csm_term_w4_sec_comp()
496 p_ccb->p_lcb->handle, FALSE, &l2c_link_sec_comp, p_ccb); in l2c_csm_term_w4_sec_comp()
512 static void l2c_csm_w4_l2cap_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_w4_l2cap_connect_rsp() argument
515 tL2CA_DISCONNECT_IND_CB *disconnect_ind = p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb; in l2c_csm_w4_l2cap_connect_rsp()
516 tL2CA_CONNECT_CFM_CB *connect_cfm = p_ccb->p_rcb->api.pL2CA_ConnectCfm_Cb; in l2c_csm_w4_l2cap_connect_rsp()
517 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_w4_l2cap_connect_rsp()
520 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: W4_L2CAP_CON_RSP evt: %s", p_ccb->local_cid, l2c_c… in l2c_csm_w4_l2cap_connect_rsp()
530 p_ccb->chnl_state = CST_CLOSED; in l2c_csm_w4_l2cap_connect_rsp()
531 … if ((p_ccb->flags & CCB_FLAG_NO_RETRY) || !p_data || (*((UINT8 *)p_data) != HCI_ERR_PEER_USER)) in l2c_csm_w4_l2cap_connect_rsp()
534 p_ccb->local_cid); in l2c_csm_w4_l2cap_connect_rsp()
535 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_connect_rsp()
538 p_ccb->flags |= CCB_FLAG_NO_RETRY; in l2c_csm_w4_l2cap_connect_rsp()
542 p_ccb->remote_cid = p_ci->remote_cid; in l2c_csm_w4_l2cap_connect_rsp()
543 p_ccb->chnl_state = CST_CONFIG; in l2c_csm_w4_l2cap_connect_rsp()
544 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); in l2c_csm_w4_l2cap_connect_rsp()
545 … L2CAP_TRACE_API1 ("L2CAP - Calling Connect_Cfm_Cb(), CID: 0x%04x, Success", p_ccb->local_cid); in l2c_csm_w4_l2cap_connect_rsp()
547 (*p_ccb->p_rcb->api.pL2CA_ConnectCfm_Cb)(local_cid, L2CAP_CONN_OK); in l2c_csm_w4_l2cap_connect_rsp()
551 p_ccb->remote_cid = p_ci->remote_cid; in l2c_csm_w4_l2cap_connect_rsp()
552 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT_EXT); in l2c_csm_w4_l2cap_connect_rsp()
553 if (p_ccb->p_rcb->api.pL2CA_ConnectPnd_Cb) in l2c_csm_w4_l2cap_connect_rsp()
555 L2CAP_TRACE_API1 ("L2CAP - Calling Connect_Pnd_Cb(), CID: 0x%04x", p_ccb->local_cid); in l2c_csm_w4_l2cap_connect_rsp()
556 (*p_ccb->p_rcb->api.pL2CA_ConnectPnd_Cb)(p_ccb->local_cid); in l2c_csm_w4_l2cap_connect_rsp()
561 …L2CAP_TRACE_API2 ("L2CAP - Calling Connect_Cfm_Cb(), CID: 0x%04x, Failure Code: %d", p_ccb->local_… in l2c_csm_w4_l2cap_connect_rsp()
562 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_connect_rsp()
567 … L2CAP_TRACE_API1 ("L2CAP - Calling Connect_Cfm_Cb(), CID: 0x%04x, Timeout", p_ccb->local_cid); in l2c_csm_w4_l2cap_connect_rsp()
568 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_connect_rsp()
574 if (p_ccb->remote_cid != 0) in l2c_csm_w4_l2cap_connect_rsp()
576 l2cu_send_peer_disc_req (p_ccb); in l2c_csm_w4_l2cap_connect_rsp()
577 p_ccb->chnl_state = CST_W4_L2CAP_DISCONNECT_RSP; in l2c_csm_w4_l2cap_connect_rsp()
578 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); in l2c_csm_w4_l2cap_connect_rsp()
581 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_connect_rsp()
591 if (!l2c_fcr_chk_chan_modes(p_ccb)) in l2c_csm_w4_l2cap_connect_rsp()
593 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_connect_rsp()
599 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); in l2c_csm_w4_l2cap_connect_rsp()
600 l2cu_send_peer_connect_req (p_ccb); /* Start Connection */ in l2c_csm_w4_l2cap_connect_rsp()
617 static void l2c_csm_w4_l2ca_connect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_w4_l2ca_connect_rsp() argument
620 tL2CA_DISCONNECT_IND_CB *disconnect_ind = p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb; in l2c_csm_w4_l2ca_connect_rsp()
621 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_w4_l2ca_connect_rsp()
624 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: W4_L2CA_CON_RSP evt: %s", p_ccb->local_cid, l2c_cs… in l2c_csm_w4_l2ca_connect_rsp()
632 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_w4_l2ca_connect_rsp()
633 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2ca_connect_rsp()
643 l2cu_send_peer_connect_rsp (p_ccb, L2CAP_CONN_OK, 0); in l2c_csm_w4_l2ca_connect_rsp()
644 p_ccb->chnl_state = CST_CONFIG; in l2c_csm_w4_l2ca_connect_rsp()
645 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); in l2c_csm_w4_l2ca_connect_rsp()
650 l2cu_send_peer_connect_rsp (p_ccb, p_ci->l2cap_result, p_ci->l2cap_status); in l2c_csm_w4_l2ca_connect_rsp()
651 … btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT_EXT); in l2c_csm_w4_l2ca_connect_rsp()
657 l2cu_send_peer_connect_rsp (p_ccb, p_ci->l2cap_result, p_ci->l2cap_status); in l2c_csm_w4_l2ca_connect_rsp()
658 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2ca_connect_rsp()
662 l2cu_send_peer_connect_rsp (p_ccb, L2CAP_CONN_NO_PSM, 0); in l2c_csm_w4_l2ca_connect_rsp()
663 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_w4_l2ca_connect_rsp()
664 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2ca_connect_rsp()
674 l2cu_send_peer_disc_req (p_ccb); in l2c_csm_w4_l2ca_connect_rsp()
675 p_ccb->chnl_state = CST_W4_L2CAP_DISCONNECT_RSP; in l2c_csm_w4_l2ca_connect_rsp()
676 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); in l2c_csm_w4_l2ca_connect_rsp()
681 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CONNECT_TOUT); in l2c_csm_w4_l2ca_connect_rsp()
682 L2CAP_TRACE_API1 ("L2CAP - Calling Connect_Ind_Cb(), CID: 0x%04x", p_ccb->local_cid); in l2c_csm_w4_l2ca_connect_rsp()
684 (*p_ccb->p_rcb->api.pL2CA_ConnectInd_Cb) (p_ccb->p_lcb->remote_bd_addr, in l2c_csm_w4_l2ca_connect_rsp()
685 p_ccb->local_cid, in l2c_csm_w4_l2ca_connect_rsp()
686 p_ccb->p_rcb->psm, in l2c_csm_w4_l2ca_connect_rsp()
687 p_ccb->remote_id); in l2c_csm_w4_l2ca_connect_rsp()
703 static void l2c_csm_config (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_config() argument
706 tL2CA_DISCONNECT_IND_CB *disconnect_ind = p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb; in l2c_csm_config()
707 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_config()
711 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: CONFIG evt: %s", p_ccb->local_cid, l2c_csm_get_eve… in l2c_csm_config()
719 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_config()
720 l2cu_release_ccb (p_ccb); in l2c_csm_config()
726 if ((cfg_result = l2cu_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_OK) in l2c_csm_config()
729 p_ccb->local_cid, (p_cfg->flags & L2CAP_CFG_FLAGS_MASK_CONT)); in l2c_csm_config()
730 (*p_ccb->p_rcb->api.pL2CA_ConfigInd_Cb)(p_ccb->local_cid, p_cfg); in l2c_csm_config()
736 l2cu_disconnect_chnl (p_ccb); in l2c_csm_config()
741 l2cu_send_peer_config_rsp (p_ccb, p_cfg); in l2c_csm_config()
746 l2cu_process_peer_cfg_rsp (p_ccb, p_cfg); in l2c_csm_config()
755 p_ccb->config_done |= OB_CFG_DONE; in l2c_csm_config()
757 if (p_ccb->config_done & IB_CFG_DONE) in l2c_csm_config()
760 if (p_ccb->our_cfg.fcr.mode != p_ccb->peer_cfg.fcr.mode) in l2c_csm_config()
762 l2cu_send_peer_disc_req (p_ccb); in l2c_csm_config()
763 …CAP - Calling Disconnect_Ind_Cb(Incompatible CFG), CID: 0x%04x No Conf Needed", p_ccb->local_cid); in l2c_csm_config()
764 l2cu_release_ccb (p_ccb); in l2c_csm_config()
769 p_ccb->config_done |= RECONFIG_FLAG; in l2c_csm_config()
770 p_ccb->chnl_state = CST_OPEN; in l2c_csm_config()
772 btu_stop_timer (&p_ccb->timer_entry); in l2c_csm_config()
775 if (p_ccb->fcrb.wait_ack) in l2c_csm_config()
776 l2c_fcr_start_timer(p_ccb); in l2c_csm_config()
782 if ((p_ccb->our_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) in l2c_csm_config()
783 &&((p_ccb->our_cfg.fcr.mon_tout == 0)||(p_ccb->our_cfg.fcr.rtrans_tout))) in l2c_csm_config()
785 l2c_fcr_adj_monitor_retran_timeout (p_ccb); in l2c_csm_config()
789 p_ccb->fcrb.connect_tick_count = GKI_get_os_tick_count(); in l2c_csm_config()
792 if (p_ccb->xmit_hold_q.count) in l2c_csm_config()
794 l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); in l2c_csm_config()
799 L2CAP_TRACE_API1 ("L2CAP - Calling Config_Rsp_Cb(), CID: 0x%04x", p_ccb->local_cid); in l2c_csm_config()
800 (*p_ccb->p_rcb->api.pL2CA_ConfigCfm_Cb)(p_ccb->local_cid, p_cfg); in l2c_csm_config()
805 btu_stop_timer (&p_ccb->timer_entry); in l2c_csm_config()
808 if (l2c_fcr_renegotiate_chan(p_ccb, p_cfg) == FALSE) in l2c_csm_config()
810 …L2CAP_TRACE_API2 ("L2CAP - Calling Config_Rsp_Cb(), CID: 0x%04x, Failure: %d", p_ccb->local_cid, p… in l2c_csm_config()
811 (*p_ccb->p_rcb->api.pL2CA_ConfigCfm_Cb)(p_ccb->local_cid, p_cfg); in l2c_csm_config()
816 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); in l2c_csm_config()
817 p_ccb->chnl_state = CST_W4_L2CA_DISCONNECT_RSP; in l2c_csm_config()
818 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x Conf Needed", p_ccb->local_ci… in l2c_csm_config()
819 (*p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb)(p_ccb->local_cid, TRUE); in l2c_csm_config()
823 l2cu_process_our_cfg_req (p_ccb, p_cfg); in l2c_csm_config()
824 l2cu_send_peer_config_req (p_ccb, p_cfg); in l2c_csm_config()
825 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); in l2c_csm_config()
829 l2cu_process_our_cfg_rsp (p_ccb, p_cfg); in l2c_csm_config()
835 l2cu_send_peer_config_rsp (p_ccb, p_cfg); in l2c_csm_config()
840 p_ccb->peer_cfg.mtu_present = FALSE; in l2c_csm_config()
841 p_ccb->peer_cfg.flush_to_present = FALSE; in l2c_csm_config()
842 p_ccb->peer_cfg.qos_present = FALSE; in l2c_csm_config()
844 p_ccb->config_done |= IB_CFG_DONE; in l2c_csm_config()
846 if (p_ccb->config_done & OB_CFG_DONE) in l2c_csm_config()
849 if (p_ccb->our_cfg.fcr.mode != p_ccb->peer_cfg.fcr.mode) in l2c_csm_config()
851 l2cu_send_peer_disc_req (p_ccb); in l2c_csm_config()
852 …CAP - Calling Disconnect_Ind_Cb(Incompatible CFG), CID: 0x%04x No Conf Needed", p_ccb->local_cid); in l2c_csm_config()
853 l2cu_release_ccb (p_ccb); in l2c_csm_config()
858 p_ccb->config_done |= RECONFIG_FLAG; in l2c_csm_config()
859 p_ccb->chnl_state = CST_OPEN; in l2c_csm_config()
861 btu_stop_timer (&p_ccb->timer_entry); in l2c_csm_config()
864 l2cu_send_peer_config_rsp (p_ccb, p_cfg); in l2c_csm_config()
867 if (p_ccb->fcrb.wait_ack) in l2c_csm_config()
868 l2c_fcr_start_timer(p_ccb); in l2c_csm_config()
871 p_ccb->fcrb.connect_tick_count = GKI_get_os_tick_count(); in l2c_csm_config()
875 if ( (p_ccb->chnl_state == CST_OPEN) && (p_ccb->xmit_hold_q.count) ) in l2c_csm_config()
877 l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); in l2c_csm_config()
882 l2cu_send_peer_config_rsp (p_ccb, p_cfg); in l2c_csm_config()
883 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); in l2c_csm_config()
887 l2cu_send_peer_disc_req (p_ccb); in l2c_csm_config()
888 p_ccb->chnl_state = CST_W4_L2CAP_DISCONNECT_RSP; in l2c_csm_config()
889 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); in l2c_csm_config()
893 L2CAP_TRACE_API1 ("L2CAP - Calling DataInd_Cb(), CID: 0x%04x", p_ccb->local_cid); in l2c_csm_config()
895 if (p_ccb->local_cid < L2CAP_BASE_APPL_CID) in l2c_csm_config()
897 if (l2cb.fixed_reg[p_ccb->local_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb) in l2c_csm_config()
898 …(*l2cb.fixed_reg[p_ccb->local_cid - L2CAP_FIRST_FIXED_CHNL].pL2CA_FixedData_Cb)(p_ccb->p_lcb->remo… in l2c_csm_config()
905 (*p_ccb->p_rcb->api.pL2CA_DataInd_Cb)(p_ccb->local_cid, (BT_HDR *)p_data); in l2c_csm_config()
909 if (p_ccb->config_done & OB_CFG_DONE) in l2c_csm_config()
910 l2c_enqueue_peer_data (p_ccb, (BT_HDR *)p_data); in l2c_csm_config()
916 l2cu_send_peer_disc_req (p_ccb); in l2c_csm_config()
917 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_config()
918 l2cu_release_ccb (p_ccb); in l2c_csm_config()
935 static void l2c_csm_open (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_open() argument
937 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_open()
944 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: OPEN evt: %s", p_ccb->local_cid, l2c_csm_get_event… in l2c_csm_open()
953 if ( l2c_ucd_process_event (p_ccb, event, p_data) ) in l2c_csm_open()
964 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_open()
965 l2cu_release_ccb (p_ccb); in l2c_csm_open()
966 if (p_ccb->p_rcb) in l2c_csm_open()
967 (*p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb)(local_cid, FALSE); in l2c_csm_open()
972 if (p_ccb->p_rcb->api.pL2CA_QoSViolationInd_Cb) in l2c_csm_open()
973 (*p_ccb->p_rcb->api.pL2CA_QoSViolationInd_Cb)(p_ccb->p_lcb->remote_bd_addr); in l2c_csm_open()
979 tempstate = p_ccb->chnl_state; in l2c_csm_open()
980 tempcfgdone = p_ccb->config_done; in l2c_csm_open()
981 p_ccb->chnl_state = CST_CONFIG; in l2c_csm_open()
982 p_ccb->config_done &= ~CFG_DONE_MASK; in l2c_csm_open()
984 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); in l2c_csm_open()
986 if ((cfg_result = l2cu_process_peer_cfg_req (p_ccb, p_cfg)) == L2CAP_PEER_CFG_OK) in l2c_csm_open()
988 (*p_ccb->p_rcb->api.pL2CA_ConfigInd_Cb)(p_ccb->local_cid, p_cfg); in l2c_csm_open()
994 btu_stop_timer(&p_ccb->timer_entry); in l2c_csm_open()
995 p_ccb->chnl_state = tempstate; in l2c_csm_open()
996 p_ccb->config_done = tempcfgdone; in l2c_csm_open()
997 l2cu_send_peer_config_rsp (p_ccb, p_cfg); in l2c_csm_open()
1005 l2cu_disconnect_chnl (p_ccb); in l2c_csm_open()
1016 BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); in l2c_csm_open()
1019 BTM_CancelSniffMode (p_ccb->p_lcb->remote_bd_addr); in l2c_csm_open()
1023 p_ccb->chnl_state = CST_W4_L2CA_DISCONNECT_RSP; in l2c_csm_open()
1024 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); in l2c_csm_open()
1025 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x Conf Needed", p_ccb->local_ci… in l2c_csm_open()
1026 (*p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb)(p_ccb->local_cid, TRUE); in l2c_csm_open()
1030 (*p_ccb->p_rcb->api.pL2CA_DataInd_Cb)(p_ccb->local_cid, (BT_HDR *)p_data); in l2c_csm_open()
1039 BTM_SetPowerMode (BTM_PM_SET_ONLY_ID, p_ccb->p_lcb->remote_bd_addr, &settings); in l2c_csm_open()
1042 BTM_CancelSniffMode (p_ccb->p_lcb->remote_bd_addr); in l2c_csm_open()
1045 l2cu_send_peer_disc_req (p_ccb); in l2c_csm_open()
1046 p_ccb->chnl_state = CST_W4_L2CAP_DISCONNECT_RSP; in l2c_csm_open()
1047 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_DISCONNECT_TOUT); in l2c_csm_open()
1051 l2c_enqueue_peer_data (p_ccb, (BT_HDR *)p_data); in l2c_csm_open()
1052 l2c_link_check_send_pkts (p_ccb->p_lcb, NULL, NULL); in l2c_csm_open()
1056 p_ccb->chnl_state = CST_CONFIG; in l2c_csm_open()
1057 p_ccb->config_done &= ~CFG_DONE_MASK; in l2c_csm_open()
1058 l2cu_process_our_cfg_req (p_ccb, (tL2CAP_CFG_INFO *)p_data); in l2c_csm_open()
1059 l2cu_send_peer_config_req (p_ccb, (tL2CAP_CFG_INFO *)p_data); in l2c_csm_open()
1060 btu_start_timer (&p_ccb->timer_entry, BTU_TTYPE_L2CAP_CHNL, L2CAP_CHNL_CFG_TIMEOUT); in l2c_csm_open()
1065 if (p_ccb->peer_cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) in l2c_csm_open()
1066 l2c_fcr_proc_tout (p_ccb); in l2c_csm_open()
1070 l2c_fcr_proc_ack_tout (p_ccb); in l2c_csm_open()
1086 static void l2c_csm_w4_l2cap_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_w4_l2cap_disconnect_rsp() argument
1088 tL2CA_DISCONNECT_CFM_CB *disconnect_cfm = p_ccb->p_rcb->api.pL2CA_DisconnectCfm_Cb; in l2c_csm_w4_l2cap_disconnect_rsp()
1089 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_w4_l2cap_disconnect_rsp()
1092 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: W4_L2CAP_DISC_RSP evt: %s", p_ccb->local_cid, l2c_… in l2c_csm_w4_l2cap_disconnect_rsp()
1100 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_disconnect_rsp()
1109 … l2cu_send_peer_disc_rsp (p_ccb->p_lcb, p_ccb->remote_id, p_ccb->local_cid, p_ccb->remote_cid); in l2c_csm_w4_l2cap_disconnect_rsp()
1110 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_disconnect_rsp()
1120 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2cap_disconnect_rsp()
1146 static void l2c_csm_w4_l2ca_disconnect_rsp (tL2C_CCB *p_ccb, UINT16 event, void *p_data) in l2c_csm_w4_l2ca_disconnect_rsp() argument
1148 tL2CA_DISCONNECT_IND_CB *disconnect_ind = p_ccb->p_rcb->api.pL2CA_DisconnectInd_Cb; in l2c_csm_w4_l2ca_disconnect_rsp()
1149 UINT16 local_cid = p_ccb->local_cid; in l2c_csm_w4_l2ca_disconnect_rsp()
1152 …L2CAP_TRACE_EVENT2 ("L2CAP - LCID: 0x%04x st: W4_L2CA_DISC_RSP evt: %s", p_ccb->local_cid, l2c_c… in l2c_csm_w4_l2ca_disconnect_rsp()
1160 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_w4_l2ca_disconnect_rsp()
1161 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2ca_disconnect_rsp()
1166 … l2cu_send_peer_disc_rsp (p_ccb->p_lcb, p_ccb->remote_id, p_ccb->local_cid, p_ccb->remote_cid); in l2c_csm_w4_l2ca_disconnect_rsp()
1167 …L2CAP_TRACE_API1 ("L2CAP - Calling Disconnect_Ind_Cb(), CID: 0x%04x No Conf Needed", p_ccb->local… in l2c_csm_w4_l2ca_disconnect_rsp()
1168 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2ca_disconnect_rsp()
1174 … l2cu_send_peer_disc_rsp (p_ccb->p_lcb, p_ccb->remote_id, p_ccb->local_cid, p_ccb->remote_cid); in l2c_csm_w4_l2ca_disconnect_rsp()
1175 l2cu_release_ccb (p_ccb); in l2c_csm_w4_l2ca_disconnect_rsp()
1289 void l2c_enqueue_peer_data (tL2C_CCB *p_ccb, BT_HDR *p_buf) in l2c_enqueue_peer_data() argument
1293 if (p_ccb->peer_cfg.fcr.mode != L2CAP_FCR_BASIC_MODE) in l2c_enqueue_peer_data()
1300 p_buf->event = p_ccb->local_cid; in l2c_enqueue_peer_data()
1311 UINT16_TO_STREAM (p, p_ccb->remote_cid); in l2c_enqueue_peer_data()
1314 GKI_enqueue (&p_ccb->xmit_hold_q, p_buf); in l2c_enqueue_peer_data()
1316 l2cu_check_channel_congestion (p_ccb); in l2c_enqueue_peer_data()
1320 if (( p_ccb->p_lcb->rr_pri > p_ccb->ccb_priority ) in l2c_enqueue_peer_data()
1321 &&( p_ccb->p_lcb->rr_serv[p_ccb->ccb_priority].quota > 0)) in l2c_enqueue_peer_data()
1324 p_ccb->p_lcb->rr_pri = p_ccb->ccb_priority; in l2c_enqueue_peer_data()
1329 if (p_ccb->p_lcb->link_xmit_quota == 0) in l2c_enqueue_peer_data()