nfa_dm_api.c revision e9629bad30a9f478b336ab46b8e6e02f7f87af46
1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)/******************************************************************************
21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *
31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *  Copyright (C) 2010-2014 Broadcom Corporation
41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *
5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) *  Licensed under the Apache License, Version 2.0 (the "License");
61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *  you may not use this file except in compliance with the License.
71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *  You may obtain a copy of the License at:
81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) *  http://www.apache.org/licenses/LICENSE-2.0
101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch *  Unless required by applicable law or agreed to in writing, software
121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *  distributed under the License is distributed on an "AS IS" BASIS,
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *  See the License for the specific language governing permissions and
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) *  limitations under the License.
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ******************************************************************************/
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)/******************************************************************************
211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *  NFA interface for device management
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) *
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ******************************************************************************/
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include <string.h>
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "nfa_api.h"
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "nfa_sys.h"
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "nfa_dm_int.h"
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "nfa_ce_int.h"
301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "nfa_sys_int.h"
311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ndef_utils.h"
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)/*****************************************************************************
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**  Constants
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)*****************************************************************************/
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*****************************************************************************
38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**  APIs
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*****************************************************************************/
40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Function         NFA_Init
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This function initializes control blocks for NFA
45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  p_hal_entry_tbl points to a table of HAL entry points
47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NOTE: the buffer that p_hal_entry_tbl points must be
491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  persistent until NFA is disabled.
501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Returns          none
521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)*******************************************************************************/
541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void NFA_Init(tHAL_NFC_ENTRY *p_hal_entry_tbl)
551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_Init ()");
571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    nfa_sys_init();
581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    nfa_dm_init();
591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    nfa_p2p_init();
60010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    nfa_cho_init();
611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    nfa_snep_init(FALSE);
621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    nfa_rw_init();
631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    nfa_ce_init();
641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    nfa_ee_init();
651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    if (nfa_ee_max_ee_cfg != 0)
661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    {
671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        nfa_dm_cb.get_max_ee    = p_hal_entry_tbl->get_max_ee;
681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        nfa_hci_init();
691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    }
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    /* Initialize NFC module */
731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    NFC_Init (p_hal_entry_tbl);
741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)/*******************************************************************************
771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
781e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Function         NFA_Enable
79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This function enables NFC. Prior to calling NFA_Enable,
81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  the NFCC must be powered up, and ready to receive commands.
82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  This function enables the tasks needed by NFC, opens the NCI
83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  transport, resets the NFC controller, downloads patches to
84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  the NFCC (if necessary), and initializes the NFC subsystems.
85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  This function should only be called once - typically when NFC
87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  is enabled during boot-up, or when NFC is enabled from a
88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  settings UI. Subsequent calls to NFA_Enable while NFA is
89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  enabling or enabled will be ignored. When the NFC startup
90cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  procedure is completed, an NFA_DM_ENABLE_EVT is returned to the
91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  application using the tNFA_DM_CBACK.
92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)*******************************************************************************/
97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_Enable (tNFA_DM_CBACK        *p_dm_cback,
981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                        tNFA_CONN_CBACK      *p_conn_cback)
991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    tNFA_DM_API_ENABLE *p_msg;
101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_Enable ()");
1031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    /* Validate parameters */
1051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    if ((!p_dm_cback) || (!p_conn_cback))
1061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    {
1071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        NFA_TRACE_ERROR0 ("NFA_Enable (): error null callback");
1081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        return (NFA_STATUS_FAILED);
1091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    }
110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_ENABLE *) GKI_getbuf (sizeof (tNFA_DM_API_ENABLE))) != NULL)
1121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    {
1131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->hdr.event    = NFA_DM_API_ENABLE_EVT;
1141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->p_dm_cback   = p_dm_cback;
115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        p_msg->p_conn_cback = p_conn_cback;
116a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
1181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        return (NFA_STATUS_OK);
1201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    }
1211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return (NFA_STATUS_FAILED);
123a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
124a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)/*******************************************************************************
1261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Function         NFA_Disable
1281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Description      This function is called to shutdown NFC. The tasks for NFC
1301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  are terminated, and clean up routines are performed. This
1311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  function is typically called during platform shut-down, or
132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  when NFC is disabled from a settings UI. When the NFC
133cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  shutdown procedure is completed, an NFA_DM_DISABLE_EVT is
134010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)**                  returned to the application using the tNFA_DM_CBACK.
1351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  The platform should wait until the NFC_DISABLE_REVT is
1371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  received before powering down the NFC chip and NCI transport.
1381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  This is required to so that NFA can gracefully shut down any
1391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  open connections.
1401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
1421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
1431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)*******************************************************************************/
1451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)tNFA_STATUS NFA_Disable (BOOLEAN graceful)
1461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
1471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    tNFA_DM_API_DISABLE *p_msg;
1481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_Disable (graceful=%i)", graceful);
1501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_DISABLE *) GKI_getbuf (sizeof (tNFA_DM_API_DISABLE))) != NULL)
1521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    {
1531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_DISABLE_EVT;
1541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->graceful  = graceful;
1551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
1571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        return (NFA_STATUS_OK);
1591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    }
1601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return (NFA_STATUS_FAILED);
1621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
1631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)/*******************************************************************************
1651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Function         NFA_SetConfig
1671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Description      Set the configuration parameters to NFCC. The result is
1691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  reported with an NFA_DM_SET_CONFIG_EVT in the tNFA_DM_CBACK
170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  callback.
171a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
172cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
173010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)**                  should happen before calling this function. Most Configuration
1741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  parameters are related to RF discovery.
1751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
1771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  NFA_STATUS_BUSY if previous setting is on-going
1781e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
1791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
1801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)*******************************************************************************/
1811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)tNFA_STATUS NFA_SetConfig (tNFA_PMID param_id,
1821e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                           UINT8     length,
1831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                           UINT8    *p_data)
1841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
1851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    tNFA_DM_API_SET_CONFIG *p_msg;
1861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_SetConfig (): param_id:0x%X", param_id);
1881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_SET_CONFIG *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_SET_CONFIG) + length))) != NULL)
1901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    {
1911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_SET_CONFIG_EVT;
1921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->param_id = param_id;
1941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->length   = length;
1951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->p_data   = (UINT8 *) (p_msg + 1);
1961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        /* Copy parameter data */
1981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        memcpy (p_msg->p_data, p_data, length);
1991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
2011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        return (NFA_STATUS_OK);
2031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    }
2041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return (NFA_STATUS_FAILED);
206a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
207cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
208010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)/*******************************************************************************
2091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
2101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Function         NFA_GetConfig
2111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
2121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Description      Get the configuration parameters from NFCC. The result is
2131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  reported with an NFA_DM_GET_CONFIG_EVT in the tNFA_DM_CBACK
2141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  callback.
215a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
2161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
2171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
2181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
2191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)*******************************************************************************/
2201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)tNFA_STATUS NFA_GetConfig (UINT8 num_ids,
2211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                           tNFA_PMID *p_param_ids)
2221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
2231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    tNFA_DM_API_GET_CONFIG *p_msg;
2241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_GetConfig (): num_ids: %i", num_ids);
2261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_GET_CONFIG *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_GET_CONFIG) + num_ids))) != NULL)
2291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    {
2301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_GET_CONFIG_EVT;
2311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->num_ids = num_ids;
2331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        p_msg->p_pmids = (tNFA_PMID *) (p_msg+1);
2341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        /* Copy the param IDs */
2361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        memcpy (p_msg->p_pmids, p_param_ids, num_ids);
2371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
238a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
239cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
240010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        return (NFA_STATUS_OK);
2411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    }
2421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return (NFA_STATUS_FAILED);
2441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
2451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)/*******************************************************************************
2471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
2481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Function         NFA_RequestExclusiveRfControl
2491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**
2501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Description      Request exclusive control of NFC.
2511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  - Previous behavior (polling/tag reading, DH card emulation)
2521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                    will be suspended .
2531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                  - Polling and listening will be done based on the specified
2541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)**                    params
255a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
256cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  The NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT event of
257010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)**                  tNFA_CONN_CBACK indicates the status of the operation.
258010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)**
259a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT indicates link
260a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  activation/deactivation.
261a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
262a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  NFA_SendRawFrame is used to send data to the peer. NFA_DATA_EVT
263a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  indicates data from the peer.
264a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
265a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  If a tag is activated, then the NFA_RW APIs may be used to
266a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  send commands to the tag. Incoming NDEF messages are sent to
267c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch**                  the NDEF callback.
268c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch**
269c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch**                  Once exclusive RF control has started, NFA will not activate
270c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch**                  LLCP internally. The application has exclusive control of
271c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch**                  the link.
272c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch**
273a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
274a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  should happen before calling this function
275a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
276a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
277a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
278a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
279a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)*******************************************************************************/
280a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)tNFA_STATUS NFA_RequestExclusiveRfControl  (tNFA_TECHNOLOGY_MASK poll_mask,
281a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                            tNFA_LISTEN_CFG      *p_listen_cfg,
282a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                            tNFA_CONN_CBACK      *p_conn_cback,
283a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                            tNFA_NDEF_CBACK      *p_ndef_cback)
284a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles){
285a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    tNFA_DM_API_REQ_EXCL_RF_CTRL *p_msg;
286a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
287a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_RequestExclusiveRfControl () poll_mask=0x%x", poll_mask);
288a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
289a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    if (!p_conn_cback)
290a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    {
291a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        NFA_TRACE_ERROR0 ("NFA_RequestExclusiveRfControl (): error null callback");
292a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        return (NFA_STATUS_FAILED);
293a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
294a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
295a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_REQ_EXCL_RF_CTRL *) GKI_getbuf (sizeof (tNFA_DM_API_REQ_EXCL_RF_CTRL))) != NULL)
296a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    {
297a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_REQUEST_EXCL_RF_CTRL_EVT;
298a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        p_msg->poll_mask    = poll_mask;
299a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        p_msg->p_conn_cback = p_conn_cback;
300a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        p_msg->p_ndef_cback = p_ndef_cback;
301a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
302a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        if (p_listen_cfg)
303a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            memcpy (&p_msg->listen_cfg, p_listen_cfg, sizeof (tNFA_LISTEN_CFG));
304a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        else
305a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            memset (&p_msg->listen_cfg, 0x00, sizeof (tNFA_LISTEN_CFG));
306a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
307a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
308a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
309a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        return (NFA_STATUS_OK);
310a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
311a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
312a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    return (NFA_STATUS_FAILED);
313a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
314a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
315a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)/*******************************************************************************
316a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
317a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)** Function         NFA_ReleaseExclusiveRfControl
318a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
319a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)** Description      Release exclusive control of NFC. Once released, behavior
320a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  prior to obtaining exclusive RF control will resume.
321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
322010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
323010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
324a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
325a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch*******************************************************************************/
326a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochtNFA_STATUS NFA_ReleaseExclusiveRfControl (void)
327a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch{
328a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    BT_HDR *p_msg;
329a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
330a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    NFA_TRACE_API0 ("NFA_ReleaseExclusiveRfControl ()");
331a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
332a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    if (!nfa_dm_cb.p_excl_conn_cback)
333a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    {
334a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        NFA_TRACE_ERROR0 ("NFA_ReleaseExclusiveRfControl (): Exclusive rf control is not in progress");
335a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        return (NFA_STATUS_FAILED);
336a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
337a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
338a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
339a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    {
340a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        p_msg->event = NFA_DM_API_RELEASE_EXCL_RF_CTRL_EVT;
341a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        nfa_sys_sendmsg (p_msg);
342a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        return (NFA_STATUS_OK);
343a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
344a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
345a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    return (NFA_STATUS_FAILED);
346a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
347a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
348a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
349a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch/*******************************************************************************
350a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
351a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch** Function         NFA_EnablePolling
352a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
353a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch** Description      Enable polling for technologies specified by poll_mask.
354a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
355a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  The following events (notified using the connection
356a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  callback registered with NFA_Enable) are generated during
357a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  polling:
358a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
359a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  - NFA_POLL_ENABLED_EVT indicates whether or not polling
360a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                    successfully enabled.
361a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  - NFA_DISC_RESULT_EVT indicates there are more than one devices,
362a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                    so application must select one of tags by calling NFA_Select().
363a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  - NFA_SELECT_RESULT_EVT indicates whether previous selection was
364a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                    successful or not. If it was failed then application must select
365a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                    again or deactivate by calling NFA_Deactivate().
366a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  - NFA_ACTIVATED_EVT is generated when an NFC link is activated.
367a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  - NFA_NDEF_DETECT_EVT is generated if tag is activated
368a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  - NFA_LLCP_ACTIVATED_EVT/NFA_LLCP_DEACTIVATED_EVT is generated
369a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                    if NFC-DEP is activated
370a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  - NFA_DEACTIVATED_EVT will be returned after deactivating NFC link.
371a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
372a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
373a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  should happen before calling this function
374a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
375a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch** Returns          NFA_STATUS_OK if successfully initiated
376a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**                  NFA_STATUS_FAILED otherwise
377a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
378a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch*******************************************************************************/
379a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochtNFA_STATUS NFA_EnablePolling (tNFA_TECHNOLOGY_MASK poll_mask)
380a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch{
381a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    tNFA_DM_API_ENABLE_POLL *p_msg;
382a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
383a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    NFA_TRACE_API1 ("NFA_EnablePolling () 0x%X", poll_mask);
384a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
385a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    if ((p_msg = (tNFA_DM_API_ENABLE_POLL *) GKI_getbuf (sizeof (tNFA_DM_API_ENABLE_POLL))) != NULL)
386a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    {
387a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        p_msg->hdr.event = NFA_DM_API_ENABLE_POLLING_EVT;
388a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        p_msg->poll_mask = poll_mask;
389a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
390a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        nfa_sys_sendmsg (p_msg);
391a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
392a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        return (NFA_STATUS_OK);
393a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
394a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
395a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    return (NFA_STATUS_FAILED);
396a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
397a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
398a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch/*******************************************************************************
399a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch**
400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Function         NFA_DisablePolling
401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Description      Disable polling
403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  NFA_POLL_DISABLED_EVT will be returned after stopping polling.
404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  should happen before calling this function
407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Returns          NFA_STATUS_OK if successfully initiated
409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  NFA_STATUS_FAILED otherwise
410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch*******************************************************************************/
412116680a4aac90f2aa7413d9095a592090648e557Ben MurdochtNFA_STATUS NFA_DisablePolling (void)
413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch{
414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    BT_HDR *p_msg;
415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    NFA_TRACE_API0 ("NFA_DisablePolling ()");
417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->event = NFA_DM_API_DISABLE_POLLING_EVT;
421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        nfa_sys_sendmsg (p_msg);
423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        return (NFA_STATUS_OK);
425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return (NFA_STATUS_FAILED);
428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch/*******************************************************************************
431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Function         NFA_EnableListening
433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Description      Enable listening.
435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  NFA_LISTEN_ENABLED_EVT will be returned after listening is allowed.
436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  The actual listening technologies are specified by other NFA
438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  API functions. Such functions include (but not limited to)
439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  NFA_CeConfigureUiccListenTech.
440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  If NFA_DisableListening () is called to ignore the listening technologies,
441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  NFA_EnableListening () is called to restore the listening technologies
442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  set by these functions.
443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  should happen before calling this function
446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Returns          NFA_STATUS_OK if successfully initiated
448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  NFA_STATUS_FAILED otherwise
449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch*******************************************************************************/
451116680a4aac90f2aa7413d9095a592090648e557Ben MurdochtNFA_STATUS NFA_EnableListening (void)
452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch{
453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    BT_HDR *p_msg;
454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    NFA_TRACE_API0 ("NFA_EnableListening ()");
456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->event = NFA_DM_API_ENABLE_LISTENING_EVT;
460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        nfa_sys_sendmsg (p_msg);
462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
463a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
464a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
465a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
466a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
467a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
468a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
469a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
470a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
471a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_DisableListening
472a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
473a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Disable listening
474a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_LISTEN_DISABLED_EVT will be returned after stopping listening.
475a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  This function is called to exclude listen at RF discovery.
476a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
477a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
478a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  should happen before calling this function
479a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
480a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
481a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
482a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
483a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
484cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)tNFA_STATUS NFA_DisableListening (void)
485cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles){
486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    BT_HDR *p_msg;
487a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
488a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_DisableListening ()");
489a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
490a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
491a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
492a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->event = NFA_DM_API_DISABLE_LISTENING_EVT;
493a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
494a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
495010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
496010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        return (NFA_STATUS_OK);
497a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
498a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
499a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    return (NFA_STATUS_FAILED);
500010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
501010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
502010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)/*******************************************************************************
503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Function         NFA_PauseP2p
505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Description      Pause P2P services.
507a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_P2P_PAUSED_EVT will be returned after P2P services are
508a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  disabled.
509a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
510a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  The P2P services enabled by NFA_P2p* API functions are not
511a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  available. NFA_ResumeP2p() is called to resume the P2P
512a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  services.
513cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
514cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
515cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  should happen before calling this function
516cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
517cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
518cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
519cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
520cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)*******************************************************************************/
521116680a4aac90f2aa7413d9095a592090648e557Ben MurdochtNFA_STATUS NFA_PauseP2p (void)
522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch{
523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    BT_HDR *p_msg;
524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
525a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_PauseP2p ()");
526a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
527a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
528a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
529a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->event = NFA_DM_API_PAUSE_P2P_EVT;
530a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
531a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
532a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
533a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return (NFA_STATUS_FAILED);
537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
538a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
539a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
540a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
541a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_ResumeP2p
542a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
543a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Resume P2P services.
544a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_P2P_RESUMED_EVT will be returned after P2P services are.
545a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  enables again.
546a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
547a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
5485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)**                  should happen before calling this function
549a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
550a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
551a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
552a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
553a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
554a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_ResumeP2p (void)
555a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
556a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    BT_HDR *p_msg;
557cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
558010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    NFA_TRACE_API0 ("NFA_ResumeP2p ()");
559010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
561010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    {
562a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->event = NFA_DM_API_RESUME_P2P_EVT;
563a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
564a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
565a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
566a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
567a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
568a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
569a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
570a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
571a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
572a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
573a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
574a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_SetP2pListenTech
575a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
576a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This function is called to set listen technology for NFC-DEP.
577a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  This funtion may be called before or after starting any server
578a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  on NFA P2P/CHO/SNEP.
579a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  If there is no technology for NFC-DEP, P2P listening will be
580a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  stopped.
581a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
582a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_SET_P2P_LISTEN_TECH_EVT without data will be returned.
583a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
584a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
585a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  should happen before calling this function
586a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
587a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
588cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
589cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
590a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
591cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)tNFA_STATUS NFA_SetP2pListenTech (tNFA_TECHNOLOGY_MASK tech_mask)
592a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
593cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    tNFA_DM_API_SET_P2P_LISTEN_TECH *p_msg;
594a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
595a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_P2pSetListenTech (): tech_mask:0x%X", tech_mask);
596a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
597a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_SET_P2P_LISTEN_TECH *) GKI_getbuf (sizeof (tNFA_DM_API_SET_P2P_LISTEN_TECH))) != NULL)
598a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
599a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_SET_P2P_LISTEN_TECH_EVT;
600a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->tech_mask = tech_mask;
601a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
602a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
603a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
604a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
605a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
606a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
607a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
608a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
609a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
610a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
611a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
612a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_StartRfDiscovery
613a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**
614a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Start RF discovery
615a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  RF discovery parameters shall be set by other APIs.
616a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
617a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  An NFA_RF_DISCOVERY_STARTED_EVT indicates whether starting was successful or not.
618a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
619a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
620a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
621a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
622a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
623a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_StartRfDiscovery (void)
624a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
625a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    BT_HDR *p_msg;
626a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
627a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_StartRfDiscovery ()");
628a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
629a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
630a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
631a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->event = NFA_DM_API_START_RF_DISCOVERY_EVT;
632a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
633a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
634a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
635a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
636a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
637a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
638a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
639a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
640a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
641a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
642a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
643a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_StopRfDiscovery
644a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
645a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Stop RF discovery
646a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
647a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  An NFA_RF_DISCOVERY_STOPPED_EVT indicates whether stopping was successful or not.
648a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
649a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
650a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
651a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
652a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
653a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_StopRfDiscovery (void)
654a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
655a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    BT_HDR *p_msg;
656a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
657a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_StopRfDiscovery ()");
658a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
659a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
660a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
661a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->event = NFA_DM_API_STOP_RF_DISCOVERY_EVT;
662a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
663a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
664a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
665a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
666a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
667a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
668a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
669a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
670a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
671a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)/*******************************************************************************
672a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
673a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_SetRfDiscoveryDuration
674a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
675a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Set the duration of the single discovery period in [ms].
676a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  Allowable range: 0 ms to 0xFFFF ms.
677a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
678a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  If discovery is already started, the application should
679a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  call NFA_StopRfDiscovery prior to calling
680a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_SetRfDiscoveryDuration, and then call
681a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_StartRfDiscovery afterwards to restart discovery using
682a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  the new duration.
683a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
684a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
685cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  should happen before calling this function
686cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
687cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)** Returns:
688a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_OK, if command accepted
689cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  NFA_STATUS_FAILED: otherwise
690a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
691a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
692a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_SetRfDiscoveryDuration (UINT16 discovery_period_ms)
693a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
694a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    tNFA_DM_API_SET_RF_DISC_DUR *p_msg;
695a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
696a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_SetRfDiscoveryDuration ()");
697a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
698a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /* Post the API message */
699a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_SET_RF_DISC_DUR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
700a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
701a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_SET_RF_DISC_DURATION_EVT;
702a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
703a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        /* Set discovery duration */
704a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->rf_disc_dur_ms = discovery_period_ms;
705a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
706a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
707a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
708a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
709a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
710a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
711a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
712a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
713a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
714a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
715a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
716a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_Select
717a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
718a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Select one from detected devices during discovery
719a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  (from NFA_DISC_RESULT_EVTs). The application should wait for
720a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  the final NFA_DISC_RESULT_EVT before selecting.
721a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
722a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  An NFA_SELECT_RESULT_EVT indicates whether selection was successful or not.
723a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  If failed then application must select again or deactivate by NFA_Deactivate().
724a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
725cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
726cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  NFA_STATUS_INVALID_PARAM if RF interface is not matched protocol
727cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
728cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**
729cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)*******************************************************************************/
730a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_Select (UINT8             rf_disc_id,
731a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                        tNFA_NFC_PROTOCOL protocol,
732a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                        tNFA_INTF_TYPE    rf_interface)
733a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
734a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    tNFA_DM_API_SELECT *p_msg;
735a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
736a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API3 ("NFA_Select (): rf_disc_id:0x%X, protocol:0x%X, rf_interface:0x%X",
737a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                    rf_disc_id, protocol, rf_interface);
738a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
739a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if (  ((rf_interface == NFA_INTERFACE_ISO_DEP) && (protocol != NFA_PROTOCOL_ISO_DEP))
740a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        ||((rf_interface == NFA_INTERFACE_NFC_DEP) && (protocol != NFA_PROTOCOL_NFC_DEP))  )
741a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
742a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        NFA_TRACE_ERROR0 ("NFA_Select (): RF interface is not matched protocol");
743a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_INVALID_PARAM);
744a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
745a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
746a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_SELECT *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_SELECT)))) != NULL)
747a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
748a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event     = NFA_DM_API_SELECT_EVT;
749a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->rf_disc_id    = rf_disc_id;
750a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->protocol      = protocol;
751a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->rf_interface  = rf_interface;
752a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
753a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
754a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
755a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
756a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
757a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
758a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
759a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
760a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
761a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
762a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
763a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_UpdateRFCommParams
764a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
765a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This function is called to update RF Communication parameters
766a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  once the Frame RF Interface has been activated.
767a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
768a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  An NFA_UPDATE_RF_PARAM_RESULT_EVT indicates whether updating
769a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  was successful or not.
770a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
771a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
772a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
773a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
774cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)*******************************************************************************/
775cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)tNFA_STATUS NFA_UpdateRFCommParams (tNFA_RF_COMM_PARAMS *p_params)
776a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
777a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    tNFA_DM_API_UPDATE_RF_PARAMS *p_msg;
778a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
779a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API0 ("NFA_UpdateRFCommParams ()");
780a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
781a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_UPDATE_RF_PARAMS *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_UPDATE_RF_PARAMS)))) != NULL)
782a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
783a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event     = NFA_DM_API_UPDATE_RF_PARAMS_EVT;
784a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        memcpy (&p_msg->params, p_params, sizeof (tNFA_RF_COMM_PARAMS));
785a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
786a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
787a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
788a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        return (NFA_STATUS_OK);
789a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
790a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
791a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
792a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
793a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
794a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
795a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
796a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_Deactivate
797a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
798a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description
799a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  If sleep_mode=TRUE:
800a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      Deselect the activated device by deactivating into sleep mode.
801a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
802a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      An NFA_DEACTIVATE_FAIL_EVT indicates that selection was not successful.
803a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      Application can select another discovered device or deactivate by NFA_Deactivate ()
804a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      after receiving NFA_DEACTIVATED_EVT.
805a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
806a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      Deactivating to sleep mode is not allowed when NFCC is in wait-for-host-select
807a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      mode, or in listen-sleep states; NFA will deactivate to idle or discovery state
808a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      for these cases respectively.
809a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
810a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
811a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  If sleep_mode=FALSE:
812a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                      Deactivate the connection (e.g. as a result of presence check failure)
813cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                      NFA_DEACTIVATED_EVT will indicate that link is deactivated.
814cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)**                      Polling/listening will resume (unless the nfcc is in wait_for-all-discoveries state)
815a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
816a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
817a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
818a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
819a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
820a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
821a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)NFC_API extern tNFA_STATUS NFA_Deactivate (BOOLEAN sleep_mode)
822a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
823a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    tNFA_DM_API_DEACTIVATE *p_msg;
824a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
825a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_Deactivate (): sleep_mode:%i", sleep_mode);
826a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
827a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_DEACTIVATE *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_DEACTIVATE)))) != NULL)
828a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
829a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event    = NFA_DM_API_DEACTIVATE_EVT;
830a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->sleep_mode   = sleep_mode;
831a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
832a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
833a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
834a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
835a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
836a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
837a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
838a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
839a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
840a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
841a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
842a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_SendRawFrame
843a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
844a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Send a raw frame over the activated interface with the NFCC.
845a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  This function can only be called after NFC link is activated.
846a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
847a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  If the activated interface is a tag and auto-presence check is
848a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  enabled then presence_check_start_delay can be used to indicate
849a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  the delay in msec after which the next auto presence check
850a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  command can be sent. NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY
851a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  can be used as the default value for the delay.
852a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
853a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
854a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
855a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
856a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
857a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_SendRawFrame (UINT8  *p_raw_data,
858cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                              UINT16  data_len,
859cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                              UINT16  presence_check_start_delay)
860a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
861a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    BT_HDR *p_msg;
862a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    UINT16  size;
863a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    UINT8  *p;
864a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
865a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_SendRawFrame () data_len:%d", data_len);
866a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
867a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /* Validate parameters */
868a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((data_len == 0) || (p_raw_data == NULL))
869a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_INVALID_PARAM);
870a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
871a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    size = BT_HDR_SIZE + NCI_MSG_OFFSET_SIZE + NCI_DATA_HDR_SIZE + data_len;
872a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    if ((p_msg = (BT_HDR *) GKI_getbuf (size)) != NULL)
873a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
874a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->event  = NFA_DM_API_RAW_FRAME_EVT;
875a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->layer_specific = presence_check_start_delay;
876a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->offset = NCI_MSG_OFFSET_SIZE + NCI_DATA_HDR_SIZE;
877a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->len    = data_len;
878a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
879a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p = (UINT8 *) (p_msg + 1) + p_msg->offset;
880a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        memcpy (p, p_raw_data, data_len);
881a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
882a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
883cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
884cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        return (NFA_STATUS_OK);
885a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
886cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
887a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
888a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
889a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
890a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
891a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** NDEF Handler APIs
892a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
893a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
894a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
895a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
896a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_RegisterNDefTypeHandler
897a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
898a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This function allows the applications to register for
899a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  specific types of NDEF records. When NDEF records are
900a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  received, NFA will parse the record-type field, and pass
901a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  the record to the registered tNFA_NDEF_CBACK.
902a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
903a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  For records types which were not registered, the record will
904a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)**                  be sent to the default handler. A default type-handler may
905a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  be registered by calling this NFA_RegisterNDefTypeHandler
906a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  with tnf=NFA_TNF_DEFAULT. In this case, all un-registered
907a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  record types will be sent to the callback. Only one default
908a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  handler may be registered at a time.
909a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
910a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK
911a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  to indicate that registration was successful, and provide a
912a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  handle for this record type.
913a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
914a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
915a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
916a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
917a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
918a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_RegisterNDefTypeHandler (BOOLEAN         handle_whole_message,
919a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                         tNFA_TNF        tnf,
920a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                         UINT8           *p_type_name,
921a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                         UINT8           type_name_len,
922a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                         tNFA_NDEF_CBACK *p_ndef_cback)
923cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles){
924cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    tNFA_DM_API_REG_NDEF_HDLR *p_msg;
925a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
926cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    NFA_TRACE_API2 ("NFA_RegisterNDefTypeHandler (): handle whole ndef message: %i, tnf=0x%02x", handle_whole_message, tnf);
927a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
928a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /* Check for NULL callback */
929a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if (!p_ndef_cback)
930a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
931a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        NFA_TRACE_ERROR0 ("NFA_RegisterNDefTypeHandler (): error - null callback");
932a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_INVALID_PARAM);
933a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
934a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
935a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
936a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_REG_NDEF_HDLR *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_REG_NDEF_HDLR) + type_name_len))) != NULL)
937a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
938a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_REG_NDEF_HDLR_EVT;
939a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
940a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->flags = (handle_whole_message ? NFA_NDEF_FLAGS_HANDLE_WHOLE_MESSAGE : 0);
941a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->tnf = tnf;
942a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->name_len = type_name_len;
943a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->p_ndef_cback = p_ndef_cback;
944a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        memcpy (p_msg->name, p_type_name, type_name_len);
945a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
946a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
947a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
948a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
949a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
950a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
951a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
952a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
953a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
954a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
955a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
956a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_RegisterNDefUriHandler
957a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
958a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This API is a special-case of NFA_RegisterNDefTypeHandler
959a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  with TNF=NFA_TNF_WKT, and type_name='U' (URI record); and allows
960a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  registering for specific URI types (e.g. 'tel:' or 'mailto:').
961a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
962a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK
963a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  to indicate that registration was successful, and provide a
964a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  handle for this registration.
965a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
966a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  If uri_id=NFA_NDEF_URI_ID_ABSOLUTE, then p_abs_uri contains the
967a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  unabridged URI. For all other uri_id values, the p_abs_uri
968a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  parameter is ignored (i.e the URI prefix is implied by uri_id).
969a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  See [NFC RTD URI] for more information.
970a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
971a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
972a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
973a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
974a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
975a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)NFC_API extern tNFA_STATUS NFA_RegisterNDefUriHandler (BOOLEAN          handle_whole_message,
976a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                                       tNFA_NDEF_URI_ID uri_id,
977a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                                       UINT8            *p_abs_uri,
978cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                                       UINT8            uri_id_len,
979cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                                       tNFA_NDEF_CBACK  *p_ndef_cback)
980a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
981a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    tNFA_DM_API_REG_NDEF_HDLR *p_msg;
982a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
983a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API2 ("NFA_RegisterNDefUriHandler (): handle whole ndef message: %i, uri_id=0x%02x", handle_whole_message, uri_id);
984a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
985a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /* Check for NULL callback */
986a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if (!p_ndef_cback)
987a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
988a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        NFA_TRACE_ERROR0 ("NFA_RegisterNDefUriHandler (): error - null callback");
989a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_INVALID_PARAM);
990a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
991a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
992a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
993a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_REG_NDEF_HDLR *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_REG_NDEF_HDLR) + uri_id_len))) != NULL)
994a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
995a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_REG_NDEF_HDLR_EVT;
996a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
997a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->flags = NFA_NDEF_FLAGS_WKT_URI;
998a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
999a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        if (handle_whole_message)
1000a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        {
1001a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            p_msg->flags |= NFA_NDEF_FLAGS_HANDLE_WHOLE_MESSAGE;
1002a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        }
1003a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1004a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        /* abs_uri is only valid fir uri_id=NFA_NDEF_URI_ID_ABSOLUTE */
1005a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        if (uri_id != NFA_NDEF_URI_ID_ABSOLUTE)
1006a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        {
1007a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            uri_id_len = 0;
1008a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        }
1009a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1010a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->tnf = NFA_TNF_WKT;
1011a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->uri_id = uri_id;
1012a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->name_len = uri_id_len;
1013a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->p_ndef_cback = p_ndef_cback;
1014a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        memcpy (p_msg->name, p_abs_uri, uri_id_len);
1015a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1016a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
1017cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
1018cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        return (NFA_STATUS_OK);
1019cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
1020cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
1021cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return (NFA_STATUS_FAILED);
1022cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
1023cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
1024cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/*******************************************************************************
1025a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1026cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)** Function         NFA_DeregisterNDefTypeHandler
1027a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1028a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      Deregister NDEF record type handler.
1029a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1030a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
1031a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
1032a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1033a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
1034a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)NFC_API extern tNFA_STATUS NFA_DeregisterNDefTypeHandler (tNFA_HANDLE ndef_type_handle)
1035a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
1036a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    tNFA_DM_API_DEREG_NDEF_HDLR *p_msg;
1037a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1038a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_DeregisterNDefHandler (): handle 0x%08x", ndef_type_handle);
1039a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1040a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1041a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (tNFA_DM_API_DEREG_NDEF_HDLR *) GKI_getbuf ((UINT16) (sizeof (tNFA_DM_API_DEREG_NDEF_HDLR)))) != NULL)
1042a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
1043a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->hdr.event = NFA_DM_API_DEREG_NDEF_HDLR_EVT;
1044a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        p_msg->ndef_type_handle = ndef_type_handle;
1045a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1046a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
1047a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1048a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_OK);
1049a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
1050a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1051a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
1052a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
1053a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1054a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
1055a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1056a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_PowerOffSleepMode
1057a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1058a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This function is called to enter or leave NFCC Power Off Sleep mode
1059a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_DM_PWR_MODE_CHANGE_EVT will be sent to indicate status.
1060a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1061a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  start_stop : TRUE if entering Power Off Sleep mode
1062a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                               FALSE if leaving Power Off Sleep mode
1063a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1064a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Returns          NFA_STATUS_OK if successfully initiated
1065a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  NFA_STATUS_FAILED otherwise
1066a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1067a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)*******************************************************************************/
1068a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)tNFA_STATUS NFA_PowerOffSleepMode (BOOLEAN start_stop)
1069a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
1070a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    BT_HDR *p_msg;
1071a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1072a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    NFA_TRACE_API1 ("NFA_PowerOffSleepState () start_stop=%d", start_stop);
1073a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1074a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if (nfa_dm_cb.flags & NFA_DM_FLAGS_SETTING_PWR_MODE)
1075a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
1076a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        NFA_TRACE_ERROR0 ("NFA_PowerOffSleepState (): NFA DM is busy to update power mode");
1077a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        return (NFA_STATUS_FAILED);
1078a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
1079a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    else
1080a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
1081a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_dm_cb.flags |= NFA_DM_FLAGS_SETTING_PWR_MODE;
1082a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
1083a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1084a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if ((p_msg = (BT_HDR *) GKI_getbuf (sizeof (BT_HDR))) != NULL)
1085a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
1086a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        p_msg->event          = NFA_DM_API_POWER_OFF_SLEEP_EVT;
1087cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        p_msg->layer_specific = start_stop;
1088cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
1089a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        nfa_sys_sendmsg (p_msg);
1090a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1091cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        return (NFA_STATUS_OK);
1092a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
1093a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1094a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return (NFA_STATUS_FAILED);
1095a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
1096a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1097a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/*******************************************************************************
1098a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1099a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Function         NFA_RegVSCback
1100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**
1101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)** Description      This function is called to register or de-register a callback
1102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  function to receive Proprietary NCI response and notification
1103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  events.
1104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)**                  The maximum number of callback functions allowed is NFC_NUM_VS_CBACKS
1105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Returns          tNFC_STATUS
1107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch*******************************************************************************/
1109116680a4aac90f2aa7413d9095a592090648e557Ben MurdochtNFC_STATUS NFA_RegVSCback (BOOLEAN          is_register,
1110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                            tNFA_VSC_CBACK   *p_cback)
1111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch{
1112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    tNFA_DM_API_REG_VSC *p_msg;
1113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    NFA_TRACE_API1 ("NFA_RegVSCback() is_register=%d", is_register);
1115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if (p_cback == NULL)
1117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
1118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        NFA_TRACE_ERROR0 ("NFA_RegVSCback() requires a valid callback function");
1119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        return (NFA_STATUS_FAILED);
1120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
1121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if ((p_msg = (tNFA_DM_API_REG_VSC *) GKI_getbuf (sizeof(tNFA_DM_API_REG_VSC))) != NULL)
1123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
1124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->hdr.event        = NFA_DM_API_REG_VSC_EVT;
1125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->is_register      = is_register;
1126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->p_cback          = p_cback;
1127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        nfa_sys_sendmsg (p_msg);
1129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        return (NFA_STATUS_OK);
1131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
1132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return (NFA_STATUS_FAILED);
1134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
1135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch/*******************************************************************************
1137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Function         NFA_SendVsCommand
1139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Description      This function is called to send an NCI Vendor Specific
1141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  command to NFCC.
1142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  oid             - The opcode of the VS command.
1144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  cmd_params_len  - The command parameter len
1145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  p_cmd_params    - The command parameter
1146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  p_cback         - The callback function to receive the command
1147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                                    status
1148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Returns          NFA_STATUS_OK if successfully initiated
1150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**                  NFA_STATUS_FAILED otherwise
1151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch*******************************************************************************/
1153116680a4aac90f2aa7413d9095a592090648e557Ben MurdochtNFA_STATUS NFA_SendVsCommand (UINT8            oid,
1154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                               UINT8            cmd_params_len,
1155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                               UINT8            *p_cmd_params,
1156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                               tNFA_VSC_CBACK    *p_cback)
1157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch{
1158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    tNFA_DM_API_SEND_VSC *p_msg;
1159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    UINT16  size = sizeof(tNFA_DM_API_SEND_VSC) + cmd_params_len;
1160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    NFA_TRACE_API1 ("NFA_SendVsCommand() oid=0x%x", oid);
1162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if ((p_msg = (tNFA_DM_API_SEND_VSC *) GKI_getbuf (size)) != NULL)
1164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
1165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->hdr.event        = NFA_DM_API_SEND_VSC_EVT;
1166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->oid              = oid;
1167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        p_msg->p_cback          = p_cback;
1168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        if (cmd_params_len && p_cmd_params)
1169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        {
1170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            p_msg->cmd_params_len   = cmd_params_len;
1171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            p_msg->p_cmd_params     = (UINT8 *)(p_msg + 1);
1172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            memcpy (p_msg->p_cmd_params, p_cmd_params, cmd_params_len);
1173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        }
1174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        else
1175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        {
1176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            p_msg->cmd_params_len   = 0;
1177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            p_msg->p_cmd_params     = NULL;
1178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        }
1179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        nfa_sys_sendmsg (p_msg);
1181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        return (NFA_STATUS_OK);
1183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
1184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return (NFA_STATUS_FAILED);
1186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
1187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch/*******************************************************************************
1189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
1190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch** Function         NFA_SetTraceLevel
1191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch**
11921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)** Description      This function sets the trace level for NFA.  If called with
1193**                  a value of 0xFF, it simply returns the current trace level.
1194**
1195** Returns          The new or current trace level
1196**
1197*******************************************************************************/
1198UINT8 NFA_SetTraceLevel (UINT8 new_level)
1199{
1200    if (new_level != 0xFF)
1201        nfa_sys_set_trace_level (new_level);
1202
1203    return (nfa_sys_cb.trace_level);
1204}
1205
1206