Home | History | Annotate | Download | only in gatt

Lines Matching full:p_tcb

52 static void gatt_send_conn_cback (tGATT_TCB *p_tcb);
140 BOOLEAN gatt_connect (BD_ADDR rem_bda, tGATT_TCB *p_tcb)
148 if (gatt_get_ch_state(p_tcb) != GATT_CH_OPEN)
149 gatt_set_ch_state(p_tcb, GATT_CH_CONN);
153 p_tcb->att_lcid = L2CAP_ATT_CID;
158 if ((p_tcb->att_lcid = L2CA_ConnectReq(BT_PSM_ATT, rem_bda)) == 0)
179 tGATT_TCB *p_tcb = gatt_find_tcb_by_addr(rem_bda);
184 if (p_tcb != NULL)
187 if ( (ch_state = gatt_get_ch_state(p_tcb)) != GATT_CH_CLOSING )
189 if (p_tcb->att_lcid == L2CAP_ATT_CID)
198 gatt_set_ch_state(p_tcb, GATT_CH_CLOSING);
204 ret = L2CA_DisconnectReq(p_tcb->att_lcid);
225 void gatt_update_app_hold_link_status (tGATT_IF gatt_if, tGATT_TCB *p_tcb, BOOLEAN is_add)
230 if (p_tcb == NULL)
232 GATT_TRACE_ERROR0("gatt_update_app_hold_link_status p_tcb=NULL");
239 if (p_tcb->app_hold_link[i] == gatt_if)
244 p_tcb->app_hold_link[i] = 0;
254 if (p_tcb->app_hold_link[i] == 0)
256 p_tcb->app_hold_link[i] = gatt_if;
277 void gatt_update_app_use_link_flag (tGATT_IF gatt_if, tGATT_TCB *p_tcb, BOOLEAN is_add, BOOLEAN check_acl_link)
282 gatt_update_app_hold_link_status(gatt_if, p_tcb, is_add);
285 p_tcb &&
286 (BTM_GetHCIConnHandle(p_tcb->peer_bda) != GATT_INVALID_ACL_HANDLE))
292 GATT_SetIdleTimeout(p_tcb->peer_bda, GATT_LINK_NO_IDLE_TIMEOUT);
296 if (!gatt_num_apps_hold_link(p_tcb))
301 GATT_SetIdleTimeout(p_tcb->peer_bda, GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP);
320 tGATT_TCB *p_tcb;
325 if ((p_tcb = gatt_find_tcb_by_addr(bd_addr)) != NULL)
328 st = gatt_get_ch_state(p_tcb);
331 if(st == GATT_CH_OPEN && gatt_num_apps_hold_link(p_tcb) == 0 )
333 if (!gatt_connect(bd_addr, p_tcb))
344 if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr)) != NULL)
346 if (!gatt_connect(bd_addr, p_tcb))
349 memset(p_tcb, 0, sizeof(tGATT_TCB));
363 gatt_update_app_use_link_flag(p_reg->gatt_if, p_tcb, TRUE, FALSE);
381 tGATT_TCB *p_tcb = gatt_find_tcb_by_addr(bd_addr);
409 if (p_tcb)
414 if ( gatt_get_ch_state(p_tcb) == GATT_CH_CONN)
417 gatt_set_ch_state(p_tcb, GATT_CH_OPEN);
418 p_tcb->payload_size = GATT_DEF_BLE_MTU_SIZE;
420 gatt_send_conn_cback(p_tcb);
431 if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr)) != NULL)
433 p_tcb->att_lcid = L2CAP_ATT_CID;
435 gatt_set_ch_state(p_tcb, GATT_CH_OPEN);
437 p_tcb->payload_size = GATT_DEF_BLE_MTU_SIZE;
439 gatt_send_conn_cback (p_tcb);
475 tGATT_TCB *p_tcb;
478 if ((p_tcb = gatt_find_tcb_by_addr (bd_addr)) != NULL &&
479 gatt_get_ch_state(p_tcb) >= GATT_CH_OPEN)
481 gatt_data_process(p_tcb, p_buf);
487 if (p_tcb != NULL)
490 gatt_get_ch_state(p_tcb));
511 tGATT_TCB *p_tcb = gatt_find_tcb_by_addr(bd_addr);
515 if (p_tcb == NULL)
518 if ((p_tcb = gatt_allocate_tcb_by_bdaddr(bd_addr)) == NULL)
524 p_tcb->att_lcid = lcid;
539 gatt_set_ch_state(p_tcb, GATT_CH_CFG);
562 tGATT_TCB *p_tcb;
566 if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL)
568 GATT_TRACE_DEBUG3("gatt_l2c_connect_cfm_cback result: %d ch_state: %d, lcid:0x%x", result, gatt_get_ch_state(p_tcb), p_tcb->att_lcid);
571 if (gatt_get_ch_state(p_tcb) == GATT_CH_CONN)
577 gatt_set_ch_state(p_tcb, GATT_CH_CFG);
588 gatt_cleanup_upon_disc(p_tcb->peer_bda, result);
614 tGATT_TCB *p_tcb;
618 if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL)
621 if ( gatt_get_ch_state(p_tcb) == GATT_CH_CFG)
627 p_tcb->ch_flags |= GATT_L2C_CFG_CFM_DONE;
630 if (p_tcb->ch_flags & GATT_L2C_CFG_IND_DONE)
632 gatt_set_ch_state(p_tcb, GATT_CH_OPEN);
634 if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL)
640 if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda) &&
641 btm_sec_is_le_capable_dev(p_tcb->peer_bda))
643 gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda);
648 gatt_send_conn_cback(p_tcb);
673 tGATT_TCB *p_tcb;
676 if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL)
680 p_tcb->payload_size = p_cfg->mtu;
682 p_tcb->payload_size = L2CAP_DEFAULT_MTU;
690 if ((p_tcb->ch_flags & GATT_L2C_CFG_IND_DONE) == 0)
693 p_tcb->ch_flags |= GATT_L2C_CFG_IND_DONE;
696 if (p_tcb->ch_flags & GATT_L2C_CFG_CFM_DONE)
698 gatt_set_ch_state(p_tcb, GATT_CH_OPEN);
699 if ((p_srv_chg_clt = gatt_is_bda_in_the_srv_chg_clt_list(p_tcb->peer_bda)) != NULL)
705 if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda) &&
706 btm_sec_is_le_capable_dev(p_tcb->peer_bda))
708 gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda);
713 gatt_send_conn_cback(p_tcb);
731 tGATT_TCB *p_tcb;
735 if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL)
743 if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda) &&
744 btm_sec_is_le_capable_dev(p_tcb->peer_bda))
746 gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda);
750 if ((reason = L2CA_GetDisconnectReason(p_tcb->peer_bda)) == 0)
754 gatt_cleanup_upon_disc(p_tcb->peer_bda, reason);
770 tGATT_TCB *p_tcb;
774 if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL)
776 if (btm_sec_is_a_bonded_dev(p_tcb->peer_bda) &&
777 btm_sec_is_le_capable_dev(p_tcb->peer_bda))
779 gatt_add_a_bonded_dev_for_srv_chg(p_tcb->peer_bda);
784 if ((reason = L2CA_GetDisconnectReason(p_tcb->peer_bda)) == 0)
787 gatt_cleanup_upon_disc(p_tcb->peer_bda, reason);
803 tGATT_TCB *p_tcb;
806 if ((p_tcb = gatt_find_tcb_by_cid(lcid)) != NULL &&
807 gatt_get_ch_state(p_tcb) == GATT_CH_OPEN)
810 gatt_data_process(p_tcb, p_buf);
826 static void gatt_send_conn_cback(tGATT_TCB *p_tcb)
833 p_bg_dev = gatt_find_bg_dev(p_tcb->peer_bda);
841 gatt_update_app_use_link_flag(p_reg->gatt_if, p_tcb, TRUE, TRUE);
845 conn_id = GATT_CREATE_CONN_ID(p_tcb->tcb_idx, p_reg->gatt_if);
846 (*p_reg->app_cb.p_conn_cb)(p_reg->gatt_if, p_tcb->peer_bda, conn_id, TRUE, 0);
852 if (gatt_num_apps_hold_link(p_tcb))
855 GATT_SetIdleTimeout(p_tcb->peer_bda, GATT_LINK_NO_IDLE_TIMEOUT);
874 void gatt_data_process (tGATT_TCB *p_tcb, BT_HDR *p_buf)
893 gatt_verify_signature(p_tcb, p_buf);
900 gatt_server_handle_client_req (p_tcb, op_code, msg_len, p);
902 gatt_client_handle_server_rsp (p_tcb, op_code, msg_len, p);
1072 tGATT_TCB *p_tcb;
1082 p_tcb = &gatt_cb.tcb[found_idx];;
1083 srv_chg_ind_pending = gatt_is_srv_chg_ind_pending(p_tcb);
1107 void gatt_set_ch_state(tGATT_TCB *p_tcb, tGATT_CH_STATE ch_state)
1109 if (p_tcb)
1111 GATT_TRACE_DEBUG2 ("gatt_set_ch_state: old=%d new=%d", p_tcb->ch_state, ch_state);
1112 p_tcb->ch_state = ch_state;
1125 tGATT_CH_STATE gatt_get_ch_state(tGATT_TCB *p_tcb)
1128 if (p_tcb)
1130 GATT_TRACE_DEBUG1 ("gatt_get_ch_state: ch_state=%d", p_tcb->ch_state);
1131 ch_state = p_tcb->ch_state;