nfa_p2p_act.c revision e9df6ba5a8fcccf306a80b1670b423be8fe7746
1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Copyright (C) 2010-2012 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * This is the implementation file for the NFA P2P. 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "string.h" 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_api.h" 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys.h" 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys_int.h" 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_dm_int.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "llcp_defs.h" 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "llcp_api.h" 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_p2p_api.h" 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_p2p_int.h" 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Global Variables 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Static Functions 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Constants 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_allocate_conn_cb 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Allocate data link connection control block 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns UINT8 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectstatic UINT8 nfa_p2p_allocate_conn_cb (UINT8 local_sap) 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (xx = 0; xx < LLCP_MAX_DATA_LINK; xx++) 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.conn_cb[xx].flags == 0) 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].flags |= NFA_P2P_CONN_FLAG_IN_USE; 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].local_sap = local_sap; 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (xx); 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR0 ("nfa_p2p_allocate_conn_cb (): No resource"); 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return LLCP_MAX_DATA_LINK; 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_deallocate_conn_cb 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Deallocate data link connection control block 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns void 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectstatic void nfa_p2p_deallocate_conn_cb (UINT8 xx) 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx < LLCP_MAX_DATA_LINK) 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].flags = 0; 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR1 ("nfa_p2p_deallocate_conn_cb (): Invalid index (%d)", xx); 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_find_conn_cb 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Find data link connection control block by local/remote SAP 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns UINT8 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectstatic UINT8 nfa_p2p_find_conn_cb (UINT8 local_sap, UINT8 remote_sap) 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (xx = 0; xx < LLCP_MAX_DATA_LINK; xx++) 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_IN_USE) 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.conn_cb[xx].local_sap == local_sap) 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.conn_cb[xx].remote_sap == remote_sap) ) 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (xx); 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (LLCP_MAX_DATA_LINK); 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_llcp_cback 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing SAP callback events from LLCP 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectstatic void nfa_p2p_llcp_cback (tLLCP_SAP_CBACK_DATA *p_data) 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG2 ("nfa_p2p_llcp_cback (): event:0x%02X, local_sap:0x%02X", p_data->hdr.event, p_data->hdr.local_sap); 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project switch (p_data->hdr.event) 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project case LLCP_SAP_EVT_DATA_IND: 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_proc_llcp_data_ind (p_data); 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project case LLCP_SAP_EVT_CONNECT_IND: 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_proc_llcp_connect_ind (p_data); 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project case LLCP_SAP_EVT_CONNECT_RESP: 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_proc_llcp_connect_resp (p_data); 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project case LLCP_SAP_EVT_DISCONNECT_IND: 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_proc_llcp_disconnect_ind (p_data); 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project case LLCP_SAP_EVT_DISCONNECT_RESP: 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_proc_llcp_disconnect_resp (p_data); 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project case LLCP_SAP_EVT_CONGEST: 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_proc_llcp_congestion (p_data); 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project case LLCP_SAP_EVT_LINK_STATUS: 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_proc_llcp_link_status (p_data); 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project default: 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR1 ("nfa_p2p_llcp_cback (): Unknown event:0x%02X", p_data->hdr.event); 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return; 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_sdp_cback 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Process SDP callback event from LLCP 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_sdp_cback (UINT8 tid, UINT8 remote_sap) 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap; 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG2 ("nfa_p2p_sdp_cback (): tid:0x%02X, remote_sap:0x%02X", tid, remote_sap); 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* search for callback function to process */ 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (xx = 0; xx < LLCP_MAX_SDP_TRANSAC; xx++) 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (nfa_p2p_cb.sdp_cb[xx].local_sap != LLCP_INVALID_SAP) 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.sdp_cb[xx].tid == tid) ) 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = nfa_p2p_cb.sdp_cb[xx].local_sap; 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.sdp.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.sdp.remote_sap = remote_sap; 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_SDP_EVT, &evt_data); 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sdp_cb[xx].local_sap = LLCP_INVALID_SAP; 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_start_sdp 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Initiate SDP 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE if success 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_start_sdp (char *p_service_name, UINT8 local_sap) 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int xx; 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG1 ("nfa_p2p_start_sdp (): SN:<%s>", p_service_name); 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* search for empty slot */ 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (xx = 0; xx < LLCP_MAX_SDP_TRANSAC; xx++) 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sdp_cb[xx].local_sap == LLCP_INVALID_SAP) 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (LLCP_DiscoverService (p_service_name, 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_sdp_cback, 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &(nfa_p2p_cb.sdp_cb[xx].tid)) == LLCP_STATUS_SUCCESS) 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sdp_cb[xx].local_sap = local_sap; 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* failure of SDP */ 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return FALSE; 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return FALSE; 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_proc_llcp_data_ind 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing incoming data event from LLCP 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_proc_llcp_data_ind (tLLCP_SAP_CBACK_DATA *p_data) 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, xx; 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_proc_llcp_data_ind ()"); 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = p_data->data_ind.local_sap; 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.data.handle = 0; 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* if connectionless */ 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_data->data_ind.link_type == NFA_P2P_LLINK_TYPE) 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.data.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = nfa_p2p_find_conn_cb (p_data->data_ind.local_sap, 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_data->data_ind.remote_sap); 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx != LLCP_MAX_DATA_LINK) 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.data.handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.data.remote_sap = p_data->data_ind.remote_sap; 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.data.link_type = p_data->data_ind.link_type; 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* notify upper layer that there are data at LLCP */ 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DATA_EVT, &evt_data); 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_proc_llcp_connect_ind 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing connection request from peer 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_proc_llcp_connect_ind (tLLCP_SAP_CBACK_DATA *p_data) 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 server_sap, local_sap; 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG1 ("nfa_p2p_proc_llcp_connect_ind () server_sap:0x%x", 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_data->connect_ind.server_sap); 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project server_sap = p_data->connect_ind.server_sap; 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = p_data->connect_ind.local_sap; 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[server_sap].p_cback) 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = nfa_p2p_allocate_conn_cb (server_sap); 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx != LLCP_MAX_DATA_LINK) 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].remote_sap = p_data->connect_ind.remote_sap; 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].remote_miu = p_data->connect_ind.miu; 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* peer will not receive any data */ 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_data->connect_ind.rw == 0) 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].flags |= NFA_P2P_CONN_FLAG_REMOTE_RW_ZERO; 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.conn_req.server_handle = (NFA_HANDLE_GROUP_P2P | server_sap); 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.conn_req.conn_handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.conn_req.remote_sap = p_data->connect_ind.remote_sap; 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.conn_req.remote_miu = p_data->connect_ind.miu; 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.conn_req.remote_rw = p_data->connect_ind.rw; 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[server_sap].p_cback (NFA_P2P_CONN_REQ_EVT, &evt_data); 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR0 ("nfa_p2p_proc_llcp_connect_ind (): Not registered"); 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_proc_llcp_connect_resp 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing connection response from peer 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_proc_llcp_connect_resp (tLLCP_SAP_CBACK_DATA *p_data) 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, xx; 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_proc_llcp_connect_resp ()"); 362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = p_data->connect_resp.local_sap; 364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = nfa_p2p_allocate_conn_cb (local_sap); 368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx != LLCP_MAX_DATA_LINK) 370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].remote_sap = p_data->connect_resp.remote_sap; 372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].remote_miu = p_data->connect_resp.miu; 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* peer will not receive any data */ 375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_data->connect_resp.rw == 0) 376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].flags |= NFA_P2P_CONN_FLAG_REMOTE_RW_ZERO; 377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.connected.client_handle = (NFA_HANDLE_GROUP_P2P | local_sap); 379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.connected.conn_handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.connected.remote_sap = p_data->connect_resp.remote_sap; 381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.connected.remote_miu = p_data->connect_resp.miu; 382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.connected.remote_rw = p_data->connect_resp.rw; 383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_CONNECTED_EVT, &evt_data); 385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_proc_llcp_disconnect_ind 392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing disconnection request from peer 394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_proc_llcp_disconnect_ind (tLLCP_SAP_CBACK_DATA *p_data) 400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, xx; 402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_proc_llcp_disconnect_ind ()"); 405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = p_data->disconnect_ind.local_sap; 407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = nfa_p2p_find_conn_cb (p_data->disconnect_ind.local_sap, 411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_data->disconnect_ind.remote_sap); 412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx != LLCP_MAX_DATA_LINK) 414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_REMOTE_INITIATE; 417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_deallocate_conn_cb (xx); 419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DISC_EVT, &evt_data); 421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* 425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** LLCP link has been deactivated before receiving CC or DM. 426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Return NFA_P2P_DISC_EVT to indicate failure of creating connection 427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project */ 428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 429e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_LLCP_DEACTIVATED; 431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 432e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DISC_EVT, &evt_data); 433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 434e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR0 ("nfa_p2p_proc_llcp_disconnect_ind (): Link deactivated"); 435e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 437e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 438e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 439e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 440e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 441e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_proc_llcp_disconnect_resp 442e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing rejected connection from peer 444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_proc_llcp_disconnect_resp (tLLCP_SAP_CBACK_DATA *p_data) 450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, xx; 452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 453e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_proc_llcp_disconnect_resp ()"); 455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = p_data->disconnect_resp.local_sap; 457e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 459e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_RESP_DISC) 461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_LOCAL_INITITATE; 463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if ( (p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_APP_REJECTED) 465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ||(p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_PERM_REJECT_THIS) 466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ||(p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_PERM_REJECT_ANY) 467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ||(p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_TEMP_REJECT_THIS) 468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ||(p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_TEMP_REJECT_ANY) ) 469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_REMOTE_REJECT; 471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 472e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if (p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_NO_SERVICE) 473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 474e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_NO_SERVICE; 475e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 476e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if (p_data->disconnect_resp.reason == LLCP_SAP_DM_REASON_NO_ACTIVE_CONNECTION) 477e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_LLCP_DEACTIVATED; 479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_NO_INFORMATION; 483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (evt_data.disc.reason == NFA_P2P_DISC_REASON_LOCAL_INITITATE) 486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = nfa_p2p_find_conn_cb (p_data->disconnect_resp.local_sap, 488e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_data->disconnect_resp.remote_sap); 489e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 490e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx != LLCP_MAX_DATA_LINK) 491e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 492e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 493e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 494e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_deallocate_conn_cb (xx); 495e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 496e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DISC_EVT, &evt_data); 497e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 498e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 499e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 500e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR0 ("nfa_p2p_proc_llcp_disconnect_resp (): No connection found"); 501e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 502e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 503e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 504e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 505e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 506e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DISC_EVT, &evt_data); 507e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 508e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 509e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 510e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 511e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 512e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 513e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_proc_llcp_congest 514e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 515e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing LLCP congestion event 516e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 517e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 518e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns None 519e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 520e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 521e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_proc_llcp_congestion (tLLCP_SAP_CBACK_DATA *p_data) 522e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 523e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, remote_sap, xx; 524e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 525e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 526e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = p_data->congest.local_sap; 527e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project remote_sap = p_data->congest.remote_sap; 528e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 529e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.link_type = p_data->congest.link_type; 530e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.is_congested = p_data->congest.is_congested; 531e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 532e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_data->congest.is_congested) 533e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 534e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG2 ("nfa_p2p_proc_llcp_congestion () START SAP=(0x%x,0x%x)", 535e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap, remote_sap); 536e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 537e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 538e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 539e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 540e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG2 ("nfa_p2p_proc_llcp_congestion () END SAP=(0x%x,0x%x)", 541e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap, remote_sap); 542e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 543e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 544e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 545e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 546e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (evt_data.congest.link_type == NFA_P2P_LLINK_TYPE) 547e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 548e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 549e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 550e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (evt_data.congest.is_congested == FALSE) 551e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.sap_cb[local_sap].flags & NFA_P2P_SAP_FLAG_LLINK_CONGESTED) ) 552e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 553e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].flags &= ~NFA_P2P_SAP_FLAG_LLINK_CONGESTED; 554e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_CONGEST_EVT, &evt_data); 555e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 556e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if ( (evt_data.congest.is_congested == TRUE) 557e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(!(nfa_p2p_cb.sap_cb[local_sap].flags & NFA_P2P_SAP_FLAG_LLINK_CONGESTED)) ) 558e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 559e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* this is overall congestion due to high usage of buffer pool */ 560e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].flags |= NFA_P2P_SAP_FLAG_LLINK_CONGESTED; 561e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_CONGEST_EVT, &evt_data); 562e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 563e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 564e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 565e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 566e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = nfa_p2p_find_conn_cb (local_sap, remote_sap); 567e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 568e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx != LLCP_MAX_DATA_LINK) 569e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 570e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 571e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 572e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (evt_data.congest.is_congested == FALSE) 573e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_CONGESTED) ) 574e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 575e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].flags &= ~NFA_P2P_CONN_FLAG_CONGESTED; 576e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_CONGEST_EVT, &evt_data); 577e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 578e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if ( (evt_data.congest.is_congested == TRUE) 579e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(!(nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_CONGESTED)) ) 580e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 581e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* this is overall congestion due to high usage of buffer pool */ 582e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].flags |= NFA_P2P_CONN_FLAG_CONGESTED; 583e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_CONGEST_EVT, &evt_data); 584e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 585e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 586e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 587e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 588e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR0 ("nfa_p2p_proc_llcp_congestion (): No connection found"); 589e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 590e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 591e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 592e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 593e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 594e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 595e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 596e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_proc_llcp_link_status 597e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 598e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Processing LLCP link status 599e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 600e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 601e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns next state after processing this event 602e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 603e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 604e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_proc_llcp_link_status (tLLCP_SAP_CBACK_DATA *p_data) 605e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 606e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, xx; 607e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 608e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 609e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG1 ("nfa_p2p_proc_llcp_link_status () is_activated:%d", 610e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_data->link_status.is_activated); 611e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 612e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = p_data->link_status.local_sap; 613e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 614e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 615e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 616e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_data->link_status.is_activated) 617e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 618e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* only for server */ 619e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 620e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.local_link_miu = nfa_p2p_cb.local_link_miu; 621e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.remote_link_miu = nfa_p2p_cb.remote_link_miu; 622e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 623e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_ACTIVATED_EVT, &evt_data); 624e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 625e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else /* if LLCP link is deactivated */ 626e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 627e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (xx = 0; xx < LLCP_MAX_DATA_LINK; xx++) 628e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 629e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_IN_USE) 630e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.conn_cb[xx].local_sap == local_sap)) 631e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 632e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 633e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_LLCP_DEACTIVATED; 634e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 635e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_deallocate_conn_cb (xx); 636e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DISC_EVT, &evt_data); 637e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 638e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 639e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 640e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* notify deactivation and clear flags */ 641e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].flags & NFA_P2P_SAP_FLAG_SERVER) 642e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 643e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.deactivated.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 644e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DEACTIVATED_EVT, &evt_data); 645e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 646e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].flags = NFA_P2P_SAP_FLAG_SERVER; 647e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 648e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if (nfa_p2p_cb.sap_cb[local_sap].flags & NFA_P2P_SAP_FLAG_CLIENT) 649e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 650e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.deactivated.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 651e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DEACTIVATED_EVT, &evt_data); 652e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 653e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].flags = NFA_P2P_SAP_FLAG_CLIENT; 654e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 655e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else /* if this is not registered service */ 656e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 657e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback = NULL; 658e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 659e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 660e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 661e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 662e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 663e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 664e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 665e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_reg_server 666e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 667e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Allocate a service as server and register to LLCP 668e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 669e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 670e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns FALSE if need to keep buffer 671e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 672e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 673e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_reg_server (tNFA_P2P_MSG *p_msg) 674e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 675e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 676e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 server_sap; 677e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 678e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_reg_server ()"); 679e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 680e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project server_sap = LLCP_RegisterServer (p_msg->api_reg_server.server_sap, 681e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_reg_server.link_type, 682e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_reg_server.service_name, 683e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_llcp_cback); 684e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 685e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (server_sap == LLCP_INVALID_SAP) 686e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 687e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_server.server_handle = NFA_HANDLE_INVALID; 688e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_server.server_sap = NFA_P2P_INVALID_SAP; 689e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BCM_STRNCPY_S (evt_data.reg_server.service_name, sizeof (evt_data.reg_server.service_name), 690e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_reg_server.service_name, LLCP_MAX_SN_LEN); 691e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_server.service_name[LLCP_MAX_SN_LEN] = 0; 692e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 693e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_reg_server.p_cback (NFA_P2P_REG_SERVER_EVT, &evt_data); 694e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 695e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 696e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 697e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 698e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* if need to update WKS in LLCP Gen bytes */ 699e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (server_sap <= LLCP_UPPER_BOUND_WK_SAP) 700e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 701e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_enable_listening (NFA_ID_P2P, TRUE); 702e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 703e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if (!nfa_p2p_cb.is_p2p_listening) 704e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 705e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_enable_listening (NFA_ID_P2P, FALSE); 706e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 707e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 708e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[server_sap].p_cback = p_msg->api_reg_server.p_cback; 709e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[server_sap].flags = NFA_P2P_SAP_FLAG_SERVER; 710e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 711e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_server.server_handle = (NFA_HANDLE_GROUP_P2P | server_sap); 712e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_server.server_sap = server_sap; 713e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BCM_STRNCPY_S (evt_data.reg_server.service_name, sizeof (evt_data.reg_server.service_name), 714e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_reg_server.service_name, LLCP_MAX_SN_LEN); 715e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_server.service_name[LLCP_MAX_SN_LEN] = 0; 716e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 717e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* notify NFA_P2P_REG_SERVER_EVT to server */ 718e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[server_sap].p_cback (NFA_P2P_REG_SERVER_EVT, &evt_data); 719e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 720e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* if LLCP is already activated */ 721e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.llcp_state == NFA_P2P_LLCP_STATE_ACTIVATED) 722e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 723e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.handle = (NFA_HANDLE_GROUP_P2P | server_sap); 724e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.local_link_miu = nfa_p2p_cb.local_link_miu; 725e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.remote_link_miu = nfa_p2p_cb.remote_link_miu; 726e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 727e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* notify NFA_P2P_ACTIVATED_EVT to server */ 728e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[server_sap].p_cback (NFA_P2P_ACTIVATED_EVT, &evt_data); 729e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 730e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 731e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 732e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 733e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 734e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 735e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 736e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_reg_client 737e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 738e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Allocate a service as client and register to LLCP 739e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 740e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 741e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 742e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 743e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 744e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_reg_client (tNFA_P2P_MSG *p_msg) 745e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 746e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 747e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap; 748e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 749e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_reg_client ()"); 750e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 751e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = LLCP_RegisterClient (p_msg->api_reg_client.link_type, 752e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_llcp_cback); 753e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 754e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (local_sap == LLCP_INVALID_SAP) 755e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 756e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_client.client_handle = NFA_HANDLE_INVALID; 757e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_reg_client.p_cback (NFA_P2P_REG_CLIENT_EVT, &evt_data); 758e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 759e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 760e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 761e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback = p_msg->api_reg_client.p_cback; 762e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].flags = NFA_P2P_SAP_FLAG_CLIENT; 763e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 764e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.reg_client.client_handle = (NFA_HANDLE_GROUP_P2P | local_sap); 765e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_REG_CLIENT_EVT, &evt_data); 766e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 767e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* if LLCP is already activated */ 768e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.llcp_state == NFA_P2P_LLCP_STATE_ACTIVATED) 769e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 770e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 771e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.local_link_miu = nfa_p2p_cb.local_link_miu; 772e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.activated.remote_link_miu = nfa_p2p_cb.remote_link_miu; 773e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 774e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* notify NFA_P2P_ACTIVATED_EVT to client */ 775e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_ACTIVATED_EVT, &evt_data); 776e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 777e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 778e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 779e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 780e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 781e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 782e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 783e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_dereg 784e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 785e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Deallocate a service as server or client and deregister to LLCP 786e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** LLCP will deallocate data link connection created by this server 787e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 788e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 789e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 790e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 791e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_dereg (tNFA_P2P_MSG *p_msg) 792e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 793e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, xx; 794e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 795e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_dereg ()"); 796e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 797e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = (UINT8) (p_msg->api_dereg.handle & NFA_HANDLE_MASK); 798e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 799e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 800e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 801e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (xx = 0; xx < LLCP_MAX_DATA_LINK; xx++) 802e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 803e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_IN_USE) 804e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.conn_cb[xx].local_sap == local_sap) ) 805e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 806e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_deallocate_conn_cb (xx); 807e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 808e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 809e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 810e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 811e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project LLCP_Deregister (local_sap); 812e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback = NULL; 813e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 814e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.is_p2p_listening) 815e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 816e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* check if this is the last server on NFA P2P */ 817e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (xx = 0; xx < NFA_P2P_NUM_SAP; xx++) 818e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 819e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (nfa_p2p_cb.sap_cb[xx].p_cback) 820e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&(nfa_p2p_cb.sap_cb[xx].flags & NFA_P2P_SAP_FLAG_SERVER) ) 821e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 822e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project break; 823e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 824e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 825e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 826e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx >= NFA_P2P_NUM_SAP) 827e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 828e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* if need to update WKS in LLCP Gen bytes */ 829e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (local_sap <= LLCP_UPPER_BOUND_WK_SAP) 830e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_disable_listening (NFA_ID_P2P, TRUE); 831e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 832e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_disable_listening (NFA_ID_P2P, FALSE); 833e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 834e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* if need to update WKS in LLCP Gen bytes */ 835e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else if (local_sap <= LLCP_UPPER_BOUND_WK_SAP) 836e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 837e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_enable_listening (NFA_ID_P2P, TRUE); 838e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 839e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 840e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 841e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 842e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 843e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 844e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 845e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 846e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_accept_connection 847e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 848e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Connection Confirm from local application 849e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 850e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 851e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 852e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 853e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 854e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_accept_connection (tNFA_P2P_MSG *p_msg) 855e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 856e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 857e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tLLCP_CONNECTION_PARAMS params; 858e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 859e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_accept_connection ()"); 860e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 861e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = (UINT8) (p_msg->api_accept.conn_handle & NFA_HANDLE_MASK); 862e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx &= ~NFA_P2P_HANDLE_FLAG_CONN; 863e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 864e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project params.miu = p_msg->api_accept.miu; 865e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project params.rw = p_msg->api_accept.rw; 866e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project params.sn[0] = 0; 867e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 868e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project LLCP_ConnectCfm (nfa_p2p_cb.conn_cb[xx].local_sap, nfa_p2p_cb.conn_cb[xx].remote_sap, ¶ms); 869e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 870e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 871e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 872e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 873e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 874e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 875e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_reject_connection 876e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 877e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Reject connection by local application 878e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 879e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 880e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 881e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 882e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 883e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_reject_connection (tNFA_P2P_MSG *p_msg) 884e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 885e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 886e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 887e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_reject_connection ()"); 888e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 889e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = (UINT8) (p_msg->api_reject.conn_handle & NFA_HANDLE_MASK); 890e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx &= ~NFA_P2P_HANDLE_FLAG_CONN; 891e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 892e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project LLCP_ConnectReject (nfa_p2p_cb.conn_cb[xx].local_sap, nfa_p2p_cb.conn_cb[xx].remote_sap, 893e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project LLCP_SAP_DM_REASON_APP_REJECTED); 894e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 895e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* no need to deregister service on LLCP */ 896e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_deallocate_conn_cb (xx); 897e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 898e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 899e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 900e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 901e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 902e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 903e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_disconnect 904e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 905e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Disconnect data link connection by local application 906e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 907e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 908e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 909e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 910e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 911e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_disconnect (tNFA_P2P_MSG *p_msg) 912e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 913e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap, xx; 914e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tLLCP_STATUS status; 915e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 916e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 917e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_disconnect ()"); 918e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 919e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = (UINT8) (p_msg->api_disconnect.conn_handle & NFA_HANDLE_MASK); 920e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 921e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* if this is for data link connection */ 922e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (xx & NFA_P2P_HANDLE_FLAG_CONN) 923e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 924e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx &= ~NFA_P2P_HANDLE_FLAG_CONN; 925e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 926e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project status = LLCP_DisconnectReq (nfa_p2p_cb.conn_cb[xx].local_sap, nfa_p2p_cb.conn_cb[xx].remote_sap, 927e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_disconnect.flush); 928e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 929e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (status == LLCP_STATUS_SUCCESS) 930e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 931e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* wait for disconnect response if successful */ 932e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 933e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 934e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 935e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 936e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* 937e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** while we are waiting for connect confirm, 938e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** we cannot sent DISC because we don't know DSAP yet 939e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project */ 940e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = nfa_p2p_cb.conn_cb[xx].local_sap; 941e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 942e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].p_cback) 943e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 944e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 945e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_LOCAL_INITITATE; 946e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 947e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_deallocate_conn_cb (xx); 948e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DISC_EVT, &evt_data); 949e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 950e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 951e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 952e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 953e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 954e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_ERROR0 ("Handle is not for Data link connection"); 955e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 956e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 957e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 958e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 959e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 960e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 961e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 962e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_create_data_link_connection 963e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 964e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Create data link connection 965e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 966e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 967e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 968e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 969e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 970e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_create_data_link_connection (tNFA_P2P_MSG *p_msg) 971e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 972e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap; 973e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 974e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tLLCP_CONNECTION_PARAMS conn_params; 975e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tLLCP_STATUS status; 976e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 977e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_create_data_link_connection ()"); 978e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 979e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = (UINT8) (p_msg->api_connect.client_handle & NFA_HANDLE_MASK); 980e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 981e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project conn_params.miu = p_msg->api_connect.miu; 982e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project conn_params.rw = p_msg->api_connect.rw; 983e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 984e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_P2pConnectBySap () */ 985e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_msg->api_connect.dsap != LLCP_INVALID_SAP) 986e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 987e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project conn_params.sn[0] = 0; 988e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project status = LLCP_ConnectReq (local_sap, p_msg->api_connect.dsap, &conn_params); 989e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 990e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_P2pConnectByName () */ 991e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 992e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 993e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BCM_STRNCPY_S (conn_params.sn, sizeof (conn_params.sn), 994e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_connect.service_name, LLCP_MAX_SN_LEN); 995e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project conn_params.sn[LLCP_MAX_SN_LEN] = 0; 996e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 997e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project status = LLCP_ConnectReq (local_sap, LLCP_SAP_SDP, &conn_params); 998e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 999e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1000e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (status != LLCP_STATUS_SUCCESS) 1001e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1002e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 1003e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.disc.reason = NFA_P2P_DISC_REASON_NO_INFORMATION; 1004e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1005e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_DISC_EVT, &evt_data); 1006e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1007e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1008e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 1009e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1010e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1011e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1012e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1013e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_send_ui 1014e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1015e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Send UI PDU 1016e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1017e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1018e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 1019e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1020e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1021e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_send_ui (tNFA_P2P_MSG *p_msg) 1022e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1023e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap; 1024e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tLLCP_STATUS status; 1025e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 1026e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1027e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_send_ui ()"); 1028e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1029e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = (UINT8) (p_msg->api_send_ui.handle & NFA_HANDLE_MASK); 1030e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1031e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* decrease number of tx UI PDU which is not processed by NFA for congestion control */ 1032e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.sap_cb[local_sap].num_pending_ui_pdu) 1033e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].num_pending_ui_pdu--; 1034e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1035e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.total_pending_ui_pdu) 1036e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.total_pending_ui_pdu--; 1037e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1038e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project status = LLCP_SendUI (local_sap, 1039e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_send_ui.dsap, 1040e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_send_ui.p_msg); 1041e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1042e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (status == LLCP_STATUS_CONGESTED) 1043e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1044e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!(nfa_p2p_cb.sap_cb[local_sap].flags & NFA_P2P_SAP_FLAG_LLINK_CONGESTED)) 1045e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1046e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].flags |= NFA_P2P_SAP_FLAG_LLINK_CONGESTED; 1047e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1048e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* notify that this logical link is congested */ 1049e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.link_type = NFA_P2P_LLINK_TYPE; 1050e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.handle = (NFA_HANDLE_GROUP_P2P | local_sap); 1051e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.is_congested = TRUE; 1052e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1053e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_CONGEST_EVT, &evt_data); 1054e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1055e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1056e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1057e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 1058e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1059e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1060e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1061e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1062e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_send_data 1063e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1064e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Send I PDU 1065e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1066e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1067e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 1068e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1069e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1070e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_send_data (tNFA_P2P_MSG *p_msg) 1071e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1072e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 1073e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tLLCP_STATUS status; 1074e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 1075e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1076e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_send_data ()"); 1077e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1078e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = (UINT8) (p_msg->api_send_data.conn_handle & NFA_HANDLE_MASK); 1079e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx &= ~NFA_P2P_HANDLE_FLAG_CONN; 1080e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1081e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* decrease number of tx I PDU which is not processed by NFA for congestion control */ 1082e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.conn_cb[xx].num_pending_i_pdu) 1083e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].num_pending_i_pdu--; 1084e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1085e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_p2p_cb.total_pending_i_pdu) 1086e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.total_pending_i_pdu--; 1087e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1088e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project status = LLCP_SendData (nfa_p2p_cb.conn_cb[xx].local_sap, 1089e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].remote_sap, 1090e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_send_data.p_msg); 1091e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1092e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (status == LLCP_STATUS_CONGESTED) 1093e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1094e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!(nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_CONGESTED)) 1095e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1096e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].flags |= NFA_P2P_CONN_FLAG_CONGESTED; 1097e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1098e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* notify that this data link is congested */ 1099e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.link_type = NFA_P2P_DLINK_TYPE; 1100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.handle = (NFA_HANDLE_GROUP_P2P | NFA_P2P_HANDLE_FLAG_CONN | xx); 1101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.congest.is_congested = TRUE; 1102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[nfa_p2p_cb.conn_cb[xx].local_sap].p_cback (NFA_P2P_CONGEST_EVT, &evt_data); 1104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 1108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_set_local_busy 1113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Set or reset local busy 1115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 1118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_set_local_busy (tNFA_P2P_MSG *p_msg) 1121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 xx; 1123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_set_local_busy ()"); 1125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx = (UINT8) (p_msg->api_local_busy.conn_handle & NFA_HANDLE_MASK); 1127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project xx &= ~NFA_P2P_HANDLE_FLAG_CONN; 1128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project LLCP_SetLocalBusyStatus (nfa_p2p_cb.conn_cb[xx].local_sap, 1130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.conn_cb[xx].remote_sap, 1131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_local_busy.is_busy); 1132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 1134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_get_link_info 1139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Get WKS of remote and link MIU 1141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 1144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_get_link_info (tNFA_P2P_MSG *p_msg) 1147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 1149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap; 1150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_get_link_info ()"); 1152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.link_info.handle = p_msg->api_link_info.handle; 1154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.link_info.wks = LLCP_GetRemoteWKS (); 1155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.link_info.local_link_miu = nfa_p2p_cb.local_link_miu; 1156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.link_info.remote_link_miu = nfa_p2p_cb.remote_link_miu; 1157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = (UINT8) (p_msg->api_link_info.handle & NFA_HANDLE_MASK); 1159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_LINK_INFO_EVT, &evt_data); 1160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 1162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_get_remote_sap 1167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Get remote SAP 1169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 1172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_get_remote_sap (tNFA_P2P_MSG *p_msg) 1175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_P2P_EVT_DATA evt_data; 1177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 local_sap; 1178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project P2P_TRACE_DEBUG0 ("nfa_p2p_get_remote_sap ()"); 1180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap = (UINT8) (p_msg->api_remote_sap.handle & NFA_HANDLE_MASK); 1182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!nfa_p2p_start_sdp (p_msg->api_remote_sap.service_name, 1184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project local_sap)) 1185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.sdp.handle = p_msg->api_remote_sap.handle; 1187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project evt_data.sdp.remote_sap = 0x00; 1188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_cb.sap_cb[local_sap].p_cback (NFA_P2P_SDP_EVT, &evt_data); 1189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 1192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_p2p_set_llcp_cfg 1197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Set LLCP configuration 1199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns TRUE to deallocate buffer 1202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_p2p_set_llcp_cfg (tNFA_P2P_MSG *p_msg) 1205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project LLCP_SetConfig (p_msg->api_set_llcp_cfg.link_miu, 1207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.opt, 1208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.wt, 1209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.link_timeout, 1210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.inact_timeout_init, 1211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.inact_timeout_target, 1212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.symm_delay, 1213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.data_link_timeout, 1214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->api_set_llcp_cfg.delay_first_pdu_timeout); 1215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return TRUE; 1217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1218