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