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