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