/******************************************************************************* ** ** Function llcp_sdp_get_sap_by_name ** ** Description Search SAP by service name ** ** ** Returns SAP if success ** *******************************************************************************/ UINT8 llcp_sdp_get_sap_by_name (char *p_name, UINT8 length) { UINT8 sap; tLLCP_APP_CB *p_app_cb; for (sap = LLCP_SAP_SDP; sap <= LLCP_UPPER_BOUND_SDP_SAP; sap++) { p_app_cb = llcp_util_get_app_cb (sap); if ( (p_app_cb) &&(p_app_cb->p_app_cback) &&(strlen((char*)p_app_cb->p_service_name) == length) &&(!strncmp((char*)p_app_cb->p_service_name, p_name, length)) ) { #if(NFC_NXP_NOT_OPEN_INCLUDED == TRUE) /* if device is under LLCP DTA testing */ if ( (llcp_cb.p_dta_cback) &&(!strncmp((char*)p_app_cb->p_service_name, "urn:nfc:sn:cl-echo-in", length)) ) { llcp_cb.dta_snl_resp = TRUE; } #endif return (sap); } } return 0; }
/******************************************************************************* ** ** Function llcp_sdp_get_sap_by_name ** ** Description Search SAP by service name ** ** ** Returns SAP if success ** *******************************************************************************/ UINT8 llcp_sdp_get_sap_by_name (char *p_name, UINT8 length) { UINT8 sap; tLLCP_APP_CB *p_app_cb; for (sap = LLCP_SAP_SDP; sap <= LLCP_UPPER_BOUND_SDP_SAP; sap++) { p_app_cb = llcp_util_get_app_cb (sap); if ( (p_app_cb) &&(p_app_cb->p_app_cback) &&(strlen((char*)p_app_cb->p_service_name) == length) &&(!strncmp((char*)p_app_cb->p_service_name, p_name, length)) ) { return (sap); } } return 0; }
/******************************************************************************* ** ** Function llcp_cleanup ** ** Description This function is called once at closing to clean up ** ** Returns void ** *******************************************************************************/ void llcp_cleanup (void) { UINT8 sap; tLLCP_APP_CB *p_app_cb; LLCP_TRACE_DEBUG0 ("LLCP - llcp_cleanup ()"); for (sap = LLCP_SAP_SDP; sap < LLCP_NUM_SAPS; sap++) { p_app_cb = llcp_util_get_app_cb (sap); if ( (p_app_cb) &&(p_app_cb->p_app_cback) ) { LLCP_Deregister (sap); } } nfc_stop_quick_timer (&llcp_cb.lcb.inact_timer); nfc_stop_quick_timer (&llcp_cb.lcb.timer); }
/******************************************************************************* ** ** Function llcp_util_allocate_data_link ** ** Description Allocate tLLCP_DLCB for data link connection ** ** Returns tLLCP_DLCB * ** ******************************************************************************/ tLLCP_DLCB *llcp_util_allocate_data_link (UINT8 reg_sap, UINT8 remote_sap) { tLLCP_DLCB *p_dlcb = NULL; int idx; LLCP_TRACE_DEBUG2 ("llcp_util_allocate_data_link (): reg_sap = 0x%x, remote_sap = 0x%x", reg_sap, remote_sap); for (idx = 0; idx < LLCP_MAX_DATA_LINK; idx++) { if (llcp_cb.dlcb[idx].state == LLCP_DLC_STATE_IDLE) { p_dlcb = &(llcp_cb.dlcb[idx]); memset (p_dlcb, 0, sizeof (tLLCP_DLCB)); break; } } if (!p_dlcb) { LLCP_TRACE_ERROR0 ("llcp_util_allocate_data_link (): Out of DLCB"); } else { p_dlcb->p_app_cb = llcp_util_get_app_cb (reg_sap); p_dlcb->local_sap = reg_sap; p_dlcb->remote_sap = remote_sap; p_dlcb->timer.param = (TIMER_PARAM_TYPE) p_dlcb; /* this is for inactivity timer and congestion control. */ llcp_cb.num_data_link_connection++; LLCP_TRACE_DEBUG3 ("llcp_util_allocate_data_link (): local_sap = 0x%x, remote_sap = 0x%x, num_data_link_connection = %d", p_dlcb->local_sap, p_dlcb->remote_sap, llcp_cb.num_data_link_connection); } return p_dlcb; }