1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu * Copyright (C) 2010-2014 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 * NFA interface for device management 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <string.h> 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h" 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys.h" 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_dm_int.h" 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_ce_int.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys_int.h" 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "ndef_utils.h" 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Constants 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** APIs 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_Init 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function initializes control blocks for NFA 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** p_hal_entry_tbl points to a table of HAL entry points 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NOTE: the buffer that p_hal_entry_tbl points must be 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** persistent until NFA is disabled. 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns none 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid NFA_Init(tHAL_NFC_ENTRY *p_hal_entry_tbl) 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_Init ()"); 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_init(); 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_dm_init(); 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_p2p_init(); 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_cho_init(); 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_snep_init(FALSE); 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_rw_init(); 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_ce_init(); 6481ad4777853d75c3259ce5f71847866b4e41f358Sherry Smith nfa_ee_init(); 657c69b2723b60a59df4aaa58b13985b3483b291bfEvan Chu if (nfa_ee_max_ee_cfg != 0) 667c69b2723b60a59df4aaa58b13985b3483b291bfEvan Chu { 67d23e0531b6835ab75b543dd51cfe5edec8edefe4Evan Chu nfa_dm_cb.get_max_ee = p_hal_entry_tbl->get_max_ee; 687c69b2723b60a59df4aaa58b13985b3483b291bfEvan Chu nfa_hci_init(); 697c69b2723b60a59df4aaa58b13985b3483b291bfEvan Chu } 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Initialize NFC module */ 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFC_Init (p_hal_entry_tbl); 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_Enable 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function enables NFC. Prior to calling NFA_Enable, 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the NFCC must be powered up, and ready to receive commands. 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This function enables the tasks needed by NFC, opens the NCI 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** transport, resets the NFC controller, downloads patches to 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the NFCC (if necessary), and initializes the NFC subsystems. 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This function should only be called once - typically when NFC 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** is enabled during boot-up, or when NFC is enabled from a 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** settings UI. Subsequent calls to NFA_Enable while NFA is 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** enabling or enabled will be ignored. When the NFC startup 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** procedure is completed, an NFA_DM_ENABLE_EVT is returned to the 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** application using the tNFA_DM_CBACK. 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_Enable (tNFA_DM_CBACK *p_dm_cback, 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_conn_cback) 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_ENABLE *p_msg; 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_Enable ()"); 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Validate parameters */ 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((!p_dm_cback) || (!p_conn_cback)) 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_Enable (): error null callback"); 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_ENABLE *) GKI_getbuf (sizeof (tNFA_DM_API_ENABLE))) != NULL) 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_ENABLE_EVT; 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_dm_cback = p_dm_cback; 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_conn_cback = p_conn_cback; 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_Disable 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to shutdown NFC. The tasks for NFC 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** are terminated, and clean up routines are performed. This 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** function is typically called during platform shut-down, or 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** when NFC is disabled from a settings UI. When the NFC 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** shutdown procedure is completed, an NFA_DM_DISABLE_EVT is 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** returned to the application using the tNFA_DM_CBACK. 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The platform should wait until the NFC_DISABLE_REVT is 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** received before powering down the NFC chip and NCI transport. 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This is required to so that NFA can gracefully shut down any 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** open connections. 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_Disable (BOOLEAN graceful) 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_DISABLE *p_msg; 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_Disable (graceful=%i)", graceful); 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_DISABLE *) GKI_getbuf (sizeof (tNFA_DM_API_DISABLE))) != NULL) 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_DISABLE_EVT; 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->graceful = graceful; 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_SetConfig 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Set the configuration parameters to NFCC. The result is 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** reported with an NFA_DM_SET_CONFIG_EVT in the tNFA_DM_CBACK 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** callback. 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function. Most Configuration 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** parameters are related to RF discovery. 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_BUSY if previous setting is on-going 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_SetConfig (tNFA_PMID param_id, 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 length, 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_data) 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SET_CONFIG *p_msg; 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_SetConfig (): param_id:0x%X", param_id); 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_SET_CONFIG *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_SET_CONFIG) + length))) != NULL) 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_SET_CONFIG_EVT; 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->param_id = param_id; 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->length = length; 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_data = (UINT8 *) (p_msg + 1); 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Copy parameter data */ 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->p_data, p_data, length); 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_GetConfig 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Get the configuration parameters from NFCC. The result is 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** reported with an NFA_DM_GET_CONFIG_EVT in the tNFA_DM_CBACK 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** callback. 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_GetConfig (UINT8 num_ids, 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_PMID *p_param_ids) 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_GET_CONFIG *p_msg; 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_GetConfig (): num_ids: %i", num_ids); 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_GET_CONFIG *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_GET_CONFIG) + num_ids))) != NULL) 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_GET_CONFIG_EVT; 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->num_ids = num_ids; 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_pmids = (tNFA_PMID *) (p_msg+1); 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Copy the param IDs */ 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->p_pmids, p_param_ids, num_ids); 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_RequestExclusiveRfControl 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Request exclusive control of NFC. 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - Previous behavior (polling/tag reading, DH card emulation) 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** will be suspended . 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - Polling and listening will be done based on the specified 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** params 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT event of 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** tNFA_CONN_CBACK indicates the status of the operation. 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT indicates link 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** activation/deactivation. 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_SendRawFrame is used to send data to the peer. NFA_DATA_EVT 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** indicates data from the peer. 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If a tag is activated, then the NFA_RW APIs may be used to 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** send commands to the tag. Incoming NDEF messages are sent to 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the NDEF callback. 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Once exclusive RF control has started, NFA will not activate 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** LLCP internally. The application has exclusive control of 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the link. 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_RequestExclusiveRfControl (tNFA_TECHNOLOGY_MASK poll_mask, 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_LISTEN_CFG *p_listen_cfg, 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_conn_cback, 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_CBACK *p_ndef_cback) 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REQ_EXCL_RF_CTRL *p_msg; 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_RequestExclusiveRfControl () poll_mask=0x%x", poll_mask); 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!p_conn_cback) 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_RequestExclusiveRfControl (): error null callback"); 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_REQ_EXCL_RF_CTRL *) GKI_getbuf (sizeof (tNFA_DM_API_REQ_EXCL_RF_CTRL))) != NULL) 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_REQUEST_EXCL_RF_CTRL_EVT; 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->poll_mask = poll_mask; 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_conn_cback = p_conn_cback; 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_ndef_cback = p_ndef_cback; 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_listen_cfg) 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (&p_msg->listen_cfg, p_listen_cfg, sizeof (tNFA_LISTEN_CFG)); 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memset (&p_msg->listen_cfg, 0x00, sizeof (tNFA_LISTEN_CFG)); 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ReleaseExclusiveRfControl 318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Release exclusive control of NFC. Once released, behavior 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** prior to obtaining exclusive RF control will resume. 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_ReleaseExclusiveRfControl (void) 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR *p_msg; 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_ReleaseExclusiveRfControl ()"); 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!nfa_dm_cb.p_excl_conn_cback) 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_ReleaseExclusiveRfControl (): Exclusive rf control is not in progress"); 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->event = NFA_DM_API_RELEASE_EXCL_RF_CTRL_EVT; 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_EnablePolling 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Enable polling for technologies specified by poll_mask. 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The following events (notified using the connection 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** callback registered with NFA_Enable) are generated during 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** polling: 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - NFA_POLL_ENABLED_EVT indicates whether or not polling 360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** successfully enabled. 361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - NFA_DISC_RESULT_EVT indicates there are more than one devices, 362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** so application must select one of tags by calling NFA_Select(). 363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - NFA_SELECT_RESULT_EVT indicates whether previous selection was 364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** successful or not. If it was failed then application must select 365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** again or deactivate by calling NFA_Deactivate(). 366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - NFA_ACTIVATED_EVT is generated when an NFC link is activated. 367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - NFA_NDEF_DETECT_EVT is generated if tag is activated 368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - NFA_LLCP_ACTIVATED_EVT/NFA_LLCP_DEACTIVATED_EVT is generated 369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** if NFC-DEP is activated 370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** - NFA_DEACTIVATED_EVT will be returned after deactivating NFC link. 371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_EnablePolling (tNFA_TECHNOLOGY_MASK poll_mask) 380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_ENABLE_POLL *p_msg; 382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_EnablePolling () 0x%X", poll_mask); 384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_ENABLE_POLL *) GKI_getbuf (sizeof (tNFA_DM_API_ENABLE_POLL))) != NULL) 386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_ENABLE_POLLING_EVT; 388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->poll_mask = poll_mask; 389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_DisablePolling 401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Disable polling 403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_POLL_DISABLED_EVT will be returned after stopping polling. 404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_DisablePolling (void) 413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR *p_msg; 415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_DisablePolling ()"); 417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->event = NFA_DM_API_DISABLE_POLLING_EVT; 421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 429e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 43267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Function NFA_EnableListening 433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 43467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Description Enable listening. 43567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_LISTEN_ENABLED_EVT will be returned after listening is allowed. 436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 43767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** The actual listening technologies are specified by other NFA 43867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** API functions. Such functions include (but not limited to) 43967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_CeConfigureUiccListenTech. 44067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** If NFA_DisableListening () is called to ignore the listening technologies, 44167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_EnableListening () is called to restore the listening technologies 44267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** set by these functions. 443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 45167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan ChutNFA_STATUS NFA_EnableListening (void) 452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 45367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu BT_HDR *p_msg; 454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 45567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu NFA_TRACE_API0 ("NFA_EnableListening ()"); 456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 45767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 45967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu p_msg->event = NFA_DM_API_ENABLE_LISTENING_EVT; 460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 46967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu/******************************************************************************* 47067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 47167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Function NFA_DisableListening 47267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 47367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Description Disable listening 47467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_LISTEN_DISABLED_EVT will be returned after stopping listening. 47567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** This function is called to exclude listen at RF discovery. 47667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 47767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 47867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** should happen before calling this function 47967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 48067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Returns NFA_STATUS_OK if successfully initiated 48167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_STATUS_FAILED otherwise 48267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 48367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu*******************************************************************************/ 48467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan ChutNFA_STATUS NFA_DisableListening (void) 48509de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen{ 48609de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen BT_HDR *p_msg; 48709de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 48867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu NFA_TRACE_API0 ("NFA_DisableListening ()"); 48909de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 49009de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 49109de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen { 49267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu p_msg->event = NFA_DM_API_DISABLE_LISTENING_EVT; 49309de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 49409de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen nfa_sys_sendmsg (p_msg); 49509de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 49609de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen return (NFA_STATUS_OK); 49709de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen } 49809de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 49909de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen return (NFA_STATUS_FAILED); 50009de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen} 50109de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 50267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu/******************************************************************************* 50367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 50467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Function NFA_PauseP2p 50567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 50667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Description Pause P2P services. 50767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_P2P_PAUSED_EVT will be returned after P2P services are 50867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** disabled. 50967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 51067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** The P2P services enabled by NFA_P2p* API functions are not 51167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** available. NFA_ResumeP2p() is called to resume the P2P 51267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** services. 51367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 51467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 51567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** should happen before calling this function 51667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 51767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Returns NFA_STATUS_OK if successfully initiated 51867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_STATUS_FAILED otherwise 51967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 52067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu*******************************************************************************/ 52167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan ChutNFA_STATUS NFA_PauseP2p (void) 52209de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen{ 52309de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen BT_HDR *p_msg; 52409de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 52567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu NFA_TRACE_API0 ("NFA_PauseP2p ()"); 52609de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 52709de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 52809de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen { 52967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu p_msg->event = NFA_DM_API_PAUSE_P2P_EVT; 53067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 53167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu nfa_sys_sendmsg (p_msg); 53267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 53367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu return (NFA_STATUS_OK); 53467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu } 53567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 53667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu return (NFA_STATUS_FAILED); 53767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu} 53867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 53967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu/******************************************************************************* 54067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 54167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Function NFA_ResumeP2p 54267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 54367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Description Resume P2P services. 54467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_P2P_RESUMED_EVT will be returned after P2P services are. 54567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** enables again. 54667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 54767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 54867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** should happen before calling this function 54967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 55067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Returns NFA_STATUS_OK if successfully initiated 55167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_STATUS_FAILED otherwise 55267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 55367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu*******************************************************************************/ 55467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan ChutNFA_STATUS NFA_ResumeP2p (void) 55567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu{ 55667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu BT_HDR *p_msg; 55767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 55867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu NFA_TRACE_API0 ("NFA_ResumeP2p ()"); 55967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 56067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 56167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu { 56267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu p_msg->event = NFA_DM_API_RESUME_P2P_EVT; 56367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 56467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu nfa_sys_sendmsg (p_msg); 56567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 56667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu return (NFA_STATUS_OK); 56767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu } 56867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 56967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu return (NFA_STATUS_FAILED); 57067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu} 57167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 57267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu/******************************************************************************* 57367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 57467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Function NFA_SetP2pListenTech 57567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 57667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Description This function is called to set listen technology for NFC-DEP. 57767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** This funtion may be called before or after starting any server 57867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** on NFA P2P/CHO/SNEP. 57967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** If there is no technology for NFC-DEP, P2P listening will be 58067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** stopped. 58167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 58267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_SET_P2P_LISTEN_TECH_EVT without data will be returned. 58367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 58467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 58567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** should happen before calling this function 58667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 58767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** Returns NFA_STATUS_OK if successfully initiated 58867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** NFA_STATUS_FAILED otherwise 58967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu** 59067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu*******************************************************************************/ 59167aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan ChutNFA_STATUS NFA_SetP2pListenTech (tNFA_TECHNOLOGY_MASK tech_mask) 59267aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu{ 59367aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu tNFA_DM_API_SET_P2P_LISTEN_TECH *p_msg; 59467aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 59567aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu NFA_TRACE_API1 ("NFA_P2pSetListenTech (): tech_mask:0x%X", tech_mask); 59667aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu 59767aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu if ((p_msg = (tNFA_DM_API_SET_P2P_LISTEN_TECH *) GKI_getbuf (sizeof (tNFA_DM_API_SET_P2P_LISTEN_TECH))) != NULL) 59867aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu { 59967aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu p_msg->hdr.event = NFA_DM_API_SET_P2P_LISTEN_TECH_EVT; 60067aef6c6c6f6bc7b8364b97949e874b9dc7175bcEvan Chu p_msg->tech_mask = tech_mask; 60109de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 60209de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen nfa_sys_sendmsg (p_msg); 60309de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 60409de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen return (NFA_STATUS_OK); 60509de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen } 60609de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 60709de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen return (NFA_STATUS_FAILED); 60809de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen} 60909de1b298ad4237ba50018d28086c0430da8c23eMartijn Coenen 610e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 611e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 612e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_StartRfDiscovery 613e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 614e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Start RF discovery 615e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** RF discovery parameters shall be set by other APIs. 616e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 617e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** An NFA_RF_DISCOVERY_STARTED_EVT indicates whether starting was successful or not. 618e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 619e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 620e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 621e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 622e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 623e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_StartRfDiscovery (void) 624e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 625e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR *p_msg; 626e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 627e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_StartRfDiscovery ()"); 628e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 629e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 630e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 631e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->event = NFA_DM_API_START_RF_DISCOVERY_EVT; 632e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 633e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 634e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 635e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 636e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 637e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 638e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 639e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 640e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 641e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 642e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 643e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_StopRfDiscovery 644e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 645e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Stop RF discovery 646e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 647e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** An NFA_RF_DISCOVERY_STOPPED_EVT indicates whether stopping was successful or not. 648e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 649e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 650e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 651e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 652e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 653e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_StopRfDiscovery (void) 654e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 655e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR *p_msg; 656e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 657e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_StopRfDiscovery ()"); 658e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 659e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 660e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 661e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->event = NFA_DM_API_STOP_RF_DISCOVERY_EVT; 662e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 663e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 664e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 665e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 666e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 667e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 668e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 669e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 670e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 671e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 672e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 673e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_SetRfDiscoveryDuration 674e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 675e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Set the duration of the single discovery period in [ms]. 676e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Allowable range: 0 ms to 0xFFFF ms. 677e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 678e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If discovery is already started, the application should 679e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** call NFA_StopRfDiscovery prior to calling 680e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_SetRfDiscoveryDuration, and then call 681e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_StartRfDiscovery afterwards to restart discovery using 682e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the new duration. 683e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 684e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 685e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 686e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 687e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns: 688e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_OK, if command accepted 689e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED: otherwise 690e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 691e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 692e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_SetRfDiscoveryDuration (UINT16 discovery_period_ms) 693e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 694e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SET_RF_DISC_DUR *p_msg; 695e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 696e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_SetRfDiscoveryDuration ()"); 697e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 698e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Post the API message */ 699e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_SET_RF_DISC_DUR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 700e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 701e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_SET_RF_DISC_DURATION_EVT; 702e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 703e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Set discovery duration */ 704e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->rf_disc_dur_ms = discovery_period_ms; 705e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 706e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 707e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 708e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 709e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 710e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 711e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 712e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 713e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 714e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 715e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 716e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_Select 717e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 718e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Select one from detected devices during discovery 719e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** (from NFA_DISC_RESULT_EVTs). The application should wait for 720e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the final NFA_DISC_RESULT_EVT before selecting. 721e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 722e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** An NFA_SELECT_RESULT_EVT indicates whether selection was successful or not. 723e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If failed then application must select again or deactivate by NFA_Deactivate(). 724e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 725e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 726e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_INVALID_PARAM if RF interface is not matched protocol 727e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 728e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 729e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 730e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_Select (UINT8 rf_disc_id, 731e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NFC_PROTOCOL protocol, 732e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_INTF_TYPE rf_interface) 733e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 734e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SELECT *p_msg; 735e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 736e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API3 ("NFA_Select (): rf_disc_id:0x%X, protocol:0x%X, rf_interface:0x%X", 737e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project rf_disc_id, protocol, rf_interface); 738e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 739e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( ((rf_interface == NFA_INTERFACE_ISO_DEP) && (protocol != NFA_PROTOCOL_ISO_DEP)) 740e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ||((rf_interface == NFA_INTERFACE_NFC_DEP) && (protocol != NFA_PROTOCOL_NFC_DEP)) ) 741e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 742e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_Select (): RF interface is not matched protocol"); 743e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 744e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 745e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 746e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_SELECT *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_SELECT)))) != NULL) 747e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 748e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_SELECT_EVT; 749e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->rf_disc_id = rf_disc_id; 750e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->protocol = protocol; 751e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->rf_interface = rf_interface; 752e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 753e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 754e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 755e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 756e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 757e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 758e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 759e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 760e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 761e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 762e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 763e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_UpdateRFCommParams 764e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 765e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to update RF Communication parameters 766e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** once the Frame RF Interface has been activated. 767e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 768e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** An NFA_UPDATE_RF_PARAM_RESULT_EVT indicates whether updating 769e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** was successful or not. 770e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 771e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 772e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 773e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 774e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 775e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_UpdateRFCommParams (tNFA_RF_COMM_PARAMS *p_params) 776e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 777e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_UPDATE_RF_PARAMS *p_msg; 778e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 779e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_UpdateRFCommParams ()"); 780e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 781e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_UPDATE_RF_PARAMS *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_UPDATE_RF_PARAMS)))) != NULL) 782e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 783e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_UPDATE_RF_PARAMS_EVT; 784e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (&p_msg->params, p_params, sizeof (tNFA_RF_COMM_PARAMS)); 785e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 786e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 787e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 788e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 789e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 790e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 791e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 792e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 793e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 794e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 795e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 796e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_Deactivate 797e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 798e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description 799e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If sleep_mode=TRUE: 800e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Deselect the activated device by deactivating into sleep mode. 801e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 802e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** An NFA_DEACTIVATE_FAIL_EVT indicates that selection was not successful. 803e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Application can select another discovered device or deactivate by NFA_Deactivate () 804e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** after receiving NFA_DEACTIVATED_EVT. 805e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 806e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Deactivating to sleep mode is not allowed when NFCC is in wait-for-host-select 807e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** mode, or in listen-sleep states; NFA will deactivate to idle or discovery state 808e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** for these cases respectively. 809e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 810e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 811e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If sleep_mode=FALSE: 812e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Deactivate the connection (e.g. as a result of presence check failure) 813e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_DEACTIVATED_EVT will indicate that link is deactivated. 814e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Polling/listening will resume (unless the nfcc is in wait_for-all-discoveries state) 815e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 816e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 817e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 818e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 819e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 820e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 821e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_Deactivate (BOOLEAN sleep_mode) 822e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 823e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_DEACTIVATE *p_msg; 824e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 825e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_Deactivate (): sleep_mode:%i", sleep_mode); 826e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 827e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_DEACTIVATE *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_DEACTIVATE)))) != NULL) 828e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 829e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_DEACTIVATE_EVT; 830e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->sleep_mode = sleep_mode; 831e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 832e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 833e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 834e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 835e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 836e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 837e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 838e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 839e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 840e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 841e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 842e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_SendRawFrame 843e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 844e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Send a raw frame over the activated interface with the NFCC. 845e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This function can only be called after NFC link is activated. 846e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 8475c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** If the activated interface is a tag and auto-presence check is 8485c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** enabled then presence_check_start_delay can be used to indicate 8495c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** the delay in msec after which the next auto presence check 8505c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** command can be sent. NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY 8515c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** can be used as the default value for the delay. 8525c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** 853e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 854e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 855e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 856e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 857e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_SendRawFrame (UINT8 *p_raw_data, 8585c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen UINT16 data_len, 8595c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen UINT16 presence_check_start_delay) 860e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 861e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR *p_msg; 862e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 size; 863e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p; 864e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 865e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_SendRawFrame () data_len:%d", data_len); 866e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 867e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Validate parameters */ 868e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((data_len == 0) || (p_raw_data == NULL)) 869e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 870e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 871e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project size = BT_HDR_SIZE + NCI_MSG_OFFSET_SIZE + NCI_DATA_HDR_SIZE + data_len; 872e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (BT_HDR *) GKI_getbuf (size)) != NULL) 873e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 874e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->event = NFA_DM_API_RAW_FRAME_EVT; 8755c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen p_msg->layer_specific = presence_check_start_delay; 876e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->offset = NCI_MSG_OFFSET_SIZE + NCI_DATA_HDR_SIZE; 877e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->len = data_len; 878e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 879e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p = (UINT8 *) (p_msg + 1) + p_msg->offset; 880e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p, p_raw_data, data_len); 881e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 882e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 883e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 884e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 885e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 886e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 887e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 888e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 889e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 890e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 891e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NDEF Handler APIs 892e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 893e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 894e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 895e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 896e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_RegisterNDefTypeHandler 897e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 898e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function allows the applications to register for 899e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** specific types of NDEF records. When NDEF records are 900e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** received, NFA will parse the record-type field, and pass 901e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the record to the registered tNFA_NDEF_CBACK. 902e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 903e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** For records types which were not registered, the record will 904e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** be sent to the default handler. A default type-handler may 905e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** be registered by calling this NFA_RegisterNDefTypeHandler 906e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** with tnf=NFA_TNF_DEFAULT. In this case, all un-registered 907e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** record types will be sent to the callback. Only one default 908e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** handler may be registered at a time. 909e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 910e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK 911e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** to indicate that registration was successful, and provide a 912e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** handle for this record type. 913e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 914e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 915e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 916e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 917e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 918e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_RegisterNDefTypeHandler (BOOLEAN handle_whole_message, 919e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TNF tnf, 920e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_type_name, 921e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 type_name_len, 922e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_CBACK *p_ndef_cback) 923e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 924e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REG_NDEF_HDLR *p_msg; 925e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 926e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API2 ("NFA_RegisterNDefTypeHandler (): handle whole ndef message: %i, tnf=0x%02x", handle_whole_message, tnf); 927e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 928e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Check for NULL callback */ 929e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!p_ndef_cback) 930e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 931e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_RegisterNDefTypeHandler (): error - null callback"); 932e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 933e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 934e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 935e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 936e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_REG_NDEF_HDLR *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_REG_NDEF_HDLR) + type_name_len))) != NULL) 937e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 938e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_REG_NDEF_HDLR_EVT; 939e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 940e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->flags = (handle_whole_message ? NFA_NDEF_FLAGS_HANDLE_WHOLE_MESSAGE : 0); 941e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->tnf = tnf; 942e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->name_len = type_name_len; 943e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_ndef_cback = p_ndef_cback; 944e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->name, p_type_name, type_name_len); 945e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 946e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 947e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 948e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 949e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 950e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 951e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 952e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 953e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 954e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 955e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 956e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_RegisterNDefUriHandler 957e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 958e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This API is a special-case of NFA_RegisterNDefTypeHandler 959e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** with TNF=NFA_TNF_WKT, and type_name='U' (URI record); and allows 960e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** registering for specific URI types (e.g. 'tel:' or 'mailto:'). 961e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 962e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK 963e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** to indicate that registration was successful, and provide a 964e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** handle for this registration. 965e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 966e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If uri_id=NFA_NDEF_URI_ID_ABSOLUTE, then p_abs_uri contains the 967e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** unabridged URI. For all other uri_id values, the p_abs_uri 968e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** parameter is ignored (i.e the URI prefix is implied by uri_id). 969e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** See [NFC RTD URI] for more information. 970e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 971e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 972e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 973e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 974e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 975e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_RegisterNDefUriHandler (BOOLEAN handle_whole_message, 976e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_URI_ID uri_id, 977e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_abs_uri, 978e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 uri_id_len, 979e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_CBACK *p_ndef_cback) 980e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 981e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REG_NDEF_HDLR *p_msg; 982e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 983e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API2 ("NFA_RegisterNDefUriHandler (): handle whole ndef message: %i, uri_id=0x%02x", handle_whole_message, uri_id); 984e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 985e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Check for NULL callback */ 986e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (!p_ndef_cback) 987e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 988e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_RegisterNDefUriHandler (): error - null callback"); 989e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 990e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 991e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 992e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 993e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_REG_NDEF_HDLR *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_REG_NDEF_HDLR) + uri_id_len))) != NULL) 994e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 995e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_REG_NDEF_HDLR_EVT; 996e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 997e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->flags = NFA_NDEF_FLAGS_WKT_URI; 998e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 999e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (handle_whole_message) 1000e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1001e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->flags |= NFA_NDEF_FLAGS_HANDLE_WHOLE_MESSAGE; 1002e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1003e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1004e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* abs_uri is only valid fir uri_id=NFA_NDEF_URI_ID_ABSOLUTE */ 1005e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (uri_id != NFA_NDEF_URI_ID_ABSOLUTE) 1006e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1007e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project uri_id_len = 0; 1008e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1009e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1010e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->tnf = NFA_TNF_WKT; 1011e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->uri_id = uri_id; 1012e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->name_len = uri_id_len; 1013e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_ndef_cback = p_ndef_cback; 1014e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->name, p_abs_uri, uri_id_len); 1015e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1016e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 1017e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1018e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 1019e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1020e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1021e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 1022e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1023e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1024e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1025e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1026e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_DeregisterNDefTypeHandler 1027e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1028e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Deregister NDEF record type handler. 1029e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1030e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 1031e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 1032e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1033e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1034e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_DeregisterNDefTypeHandler (tNFA_HANDLE ndef_type_handle) 1035e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1036e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_DEREG_NDEF_HDLR *p_msg; 1037e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1038e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_DeregisterNDefHandler (): handle 0x%08x", ndef_type_handle); 1039e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1040e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1041e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_DEREG_NDEF_HDLR *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_DEREG_NDEF_HDLR)))) != NULL) 1042e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1043e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_DEREG_NDEF_HDLR_EVT; 1044e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->ndef_type_handle = ndef_type_handle; 1045e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1046e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 1047e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1048e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 1049e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1050e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1051e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 1052e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1053e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1054e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1055e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1056e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_PowerOffSleepMode 1057e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1058e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to enter or leave NFCC Power Off Sleep mode 1059e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_DM_PWR_MODE_CHANGE_EVT will be sent to indicate status. 1060e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1061e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** start_stop : TRUE if entering Power Off Sleep mode 1062e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** FALSE if leaving Power Off Sleep mode 1063e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1064e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 1065e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 1066e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1067e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1068e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_PowerOffSleepMode (BOOLEAN start_stop) 1069e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1070e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR *p_msg; 1071e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1072e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_PowerOffSleepState () start_stop=%d", start_stop); 1073e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1074e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (nfa_dm_cb.flags & NFA_DM_FLAGS_SETTING_PWR_MODE) 1075e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1076e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_PowerOffSleepState (): NFA DM is busy to update power mode"); 1077e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 1078e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1079e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 1080e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1081e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_dm_cb.flags |= NFA_DM_FLAGS_SETTING_PWR_MODE; 1082e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1083e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1084e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL) 1085e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1086e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->event = NFA_DM_API_POWER_OFF_SLEEP_EVT; 1087e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->layer_specific = start_stop; 1088e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1089e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 1090e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1091e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 1092e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1093e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1094e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 1095e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1096e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1097e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1098e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1099e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_RegVSCback 1100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to register or de-register a callback 1102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** function to receive Proprietary NCI response and notification 1103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** events. 1104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The maximum number of callback functions allowed is NFC_NUM_VS_CBACKS 1105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns tNFC_STATUS 1107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFC_STATUS NFA_RegVSCback (BOOLEAN is_register, 1110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_VSC_CBACK *p_cback) 1111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REG_VSC *p_msg; 1113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_RegVSCback() is_register=%d", is_register); 1115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_cback == NULL) 1117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_RegVSCback() requires a valid callback function"); 1119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 1120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_REG_VSC *) GKI_getbuf (sizeof(tNFA_DM_API_REG_VSC))) != NULL) 1123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_REG_VSC_EVT; 1125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->is_register = is_register; 1126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_cback = p_cback; 1127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 1129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 1131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 1134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_SendVsCommand 1139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to send an NCI Vendor Specific 1141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** command to NFCC. 1142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** oid - The opcode of the VS command. 1144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** cmd_params_len - The command parameter len 1145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** p_cmd_params - The command parameter 1146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** p_cback - The callback function to receive the command 1147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** status 1148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 1150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 1151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_SendVsCommand (UINT8 oid, 1154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 cmd_params_len, 1155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_cmd_params, 1156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_VSC_CBACK *p_cback) 1157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SEND_VSC *p_msg; 1159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 size = sizeof(tNFA_DM_API_SEND_VSC) + cmd_params_len; 1160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_SendVsCommand() oid=0x%x", oid); 1162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_DM_API_SEND_VSC *) GKI_getbuf (size)) != NULL) 1164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_DM_API_SEND_VSC_EVT; 1166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->oid = oid; 1167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_cback = p_cback; 1168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (cmd_params_len && p_cmd_params) 1169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->cmd_params_len = cmd_params_len; 1171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_cmd_params = (UINT8 *)(p_msg + 1); 1172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->p_cmd_params, p_cmd_params, cmd_params_len); 1173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 1175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->cmd_params_len = 0; 1177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->p_cmd_params = NULL; 1178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 1181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 1183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 1186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 1189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_SetTraceLevel 1191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function sets the trace level for NFA. If called with 1193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** a value of 0xFF, it simply returns the current trace level. 1194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns The new or current trace level 1196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 1197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 1198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectUINT8 NFA_SetTraceLevel (UINT8 new_level) 1199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 1200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (new_level != 0xFF) 1201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_set_trace_level (new_level); 1202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (nfa_sys_cb.trace_level); 1204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 1205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1206