1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 35c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen * Copyright (C) 2011-2013 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NFA interface for card emulation 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <string.h> 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h" 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys.h" 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_ce_int.h" 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys_int.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function nfa_ce_api_deregister_listen 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Internal function called by listening for Felica system 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** code, ISO-DEP AID, or UICC technology 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns: 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_OK, if command accepted 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_BAD_HANDLE invalid handle 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED: otherwise 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS nfa_ce_api_deregister_listen (tNFA_HANDLE handle, UINT32 listen_info) 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CE_MSG *p_ce_msg; 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Validate handle */ 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ( (listen_info != NFA_CE_LISTEN_INFO_UICC) 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project &&((handle & NFA_HANDLE_GROUP_MASK) != NFA_HANDLE_GROUP_CE) ) 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("nfa_ce_api_reregister_listen: Invalid handle"); 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_BAD_HANDLE); 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_ce_msg = (tNFA_CE_MSG *) GKI_getbuf ((UINT16) (sizeof (tNFA_CE_MSG)))) != NULL) 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_ce_msg->hdr.event = NFA_CE_API_DEREG_LISTEN_EVT; 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_ce_msg->dereg_listen.handle = handle; 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_ce_msg->dereg_listen.listen_info = listen_info; 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_ce_msg); 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project else 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("nfa_ce_api_reregister_listen: Out of buffers"); 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** APIs 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_CeConfigureLocalTag 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Configure local NDEF tag. 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Tag events will be notifed using the tNFA_CONN_CBACK 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** (registered during NFA_Enable) 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NFA_CE_LOCAL_TAG_CONFIGURED_EVT reports the status of the 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** operation. 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Activation and deactivation are reported using the 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT events 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If a write-request is received to update the tag memory, 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** an NFA_CE_NDEF_WRITE_CPLT_EVT will notify the application, along 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** with a buffer containing the updated contents. 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** To disable the local NDEF tag, set protocol_mask=0 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NDEF data provided by p_ndef_data must be persistent 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** as long as the local NDEF tag is enabled. 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 1045c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** should happen before calling this function. Also, Input parameters p_uid and 1055c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** uid_len are reserved for future use. 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns: 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_OK, if command accepted 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_INVALID_PARAM, 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** if protocol_maks is not 0 and p_ndef_data is NULL 1115c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** (or)uid_len is not 0 1125c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** (or)if protocol mask is set for Type 1 or Type 2 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED: otherwise 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_CeConfigureLocalTag (tNFA_PROTOCOL_MASK protocol_mask, 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_ndef_data, 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 ndef_cur_size, 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 ndef_max_size, 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN read_only, 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 uid_len, 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_uid) 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CE_MSG *p_msg; 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_CeConfigureLocalTag ()"); 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (protocol_mask) 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* If any protocols are specified, then NDEF buffer pointer must be non-NULL */ 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_ndef_data == NULL) 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_CeConfigureLocalTag: NULL ndef data pointer"); 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1395c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen if ((protocol_mask & NFA_PROTOCOL_MASK_T1T) || (protocol_mask & NFA_PROTOCOL_MASK_T2T)) 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 1415c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen NFA_TRACE_ERROR0 ("NFA_CeConfigureLocalTag: Cannot emulate Type 1 / Type 2 tag"); 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 1455c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen if (uid_len) 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR1 ("NFA_CeConfigureLocalTag: Cannot Set UID for Protocol_mask: 0x%x", protocol_mask); 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_CE_MSG *) GKI_getbuf ((UINT16) sizeof(tNFA_CE_MSG))) != NULL) 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->local_tag.hdr.event = NFA_CE_API_CFG_LOCAL_TAG_EVT; 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Copy ndef info */ 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->local_tag.protocol_mask = protocol_mask; 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->local_tag.p_ndef_data = p_ndef_data; 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->local_tag.ndef_cur_size = ndef_cur_size; 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->local_tag.ndef_max_size = ndef_max_size; 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->local_tag.read_only = read_only; 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->local_tag.uid_len = uid_len; 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (uid_len) 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->local_tag.uid, p_uid, uid_len); 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_CeConfigureUiccListenTech 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Configure listening for the UICC, using the specified 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** technologies. 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Events will be notifed using the tNFA_CONN_CBACK 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** (registered during NFA_Enable) 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NFA_CE_UICC_LISTEN_CONFIGURED_EVT reports the status of the 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** operation. 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Activation and deactivation are reported using the 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT events 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns: 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_OK, if command accepted 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED: otherwise 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_CeConfigureUiccListenTech (tNFA_HANDLE ee_handle, 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TECHNOLOGY_MASK tech_mask) 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (NFC_NFCEE_INCLUDED == TRUE) 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CE_MSG *p_msg; 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_CeConfigureUiccListenTech () ee_handle = 0x%x", ee_handle); 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* If tech_mask is zero, then app is disabling listening for specified uicc */ 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (tech_mask == 0) 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (nfa_ce_api_deregister_listen (ee_handle, NFA_CE_LISTEN_INFO_UICC)); 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Otherwise then app is configuring uicc listen for the specificed technologies */ 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_CE_MSG *) GKI_getbuf ((UINT16) sizeof(tNFA_CE_MSG))) != NULL) 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.hdr.event = NFA_CE_API_REG_LISTEN_EVT; 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.listen_type = NFA_CE_REG_TYPE_UICC; 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.ee_handle = ee_handle; 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.tech_mask = tech_mask; 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_CeConfigureUiccListenTech () NFCEE related functions are not enabled!"); 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_CeRegisterFelicaSystemCodeOnDH 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Register listening callback for Felica system code 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NFA_CE_REGISTERED_EVT reports the status of the 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** operation. 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns: 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_OK, if command accepted 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED: otherwise 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_CeRegisterFelicaSystemCodeOnDH (UINT16 system_code, 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 nfcid2[NCI_RF_F_UID_LEN], 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_conn_cback) 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CE_MSG *p_msg; 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_CeRegisterFelicaSystemCodeOnDH ()"); 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Validate parameters */ 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_conn_cback==NULL) 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_CE_MSG *) GKI_getbuf ((UINT16) sizeof(tNFA_CE_MSG))) != NULL) 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.hdr.event = NFA_CE_API_REG_LISTEN_EVT; 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.p_conn_cback = p_conn_cback; 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.listen_type = NFA_CE_REG_TYPE_FELICA; 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Listen info */ 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->reg_listen.nfcid2, nfcid2, NCI_RF_F_UID_LEN); 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.system_code = system_code; 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_CeDeregisterFelicaSystemCodeOnDH 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Deregister listening callback for Felica 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** (previously registered using NFA_CeRegisterFelicaSystemCodeOnDH) 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NFA_CE_DEREGISTERED_EVT reports the status of the 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** operation. 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_BAD_HANDLE if invalid handle 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_CeDeregisterFelicaSystemCodeOnDH (tNFA_HANDLE handle) 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_CeDeregisterFelicaSystemCodeOnDH (): handle:0x%X", handle); 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (nfa_ce_api_deregister_listen (handle, NFA_CE_LISTEN_INFO_FELICA)); 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_CeRegisterAidOnDH 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Register listening callback for the specified ISODEP AID 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NFA_CE_REGISTERED_EVT reports the status of the 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** operation. 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If no AID is specified (aid_len=0), then p_conn_cback will 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** will get notifications for any AIDs routed to the DH. This 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** over-rides callbacks registered for specific AIDs. 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns: 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_OK, if command accepted 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED: otherwise 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_CeRegisterAidOnDH (UINT8 aid[NFC_MAX_AID_LEN], 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 aid_len, 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_conn_cback) 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CE_MSG *p_msg; 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API0 ("NFA_CeRegisterAidOnDH ()"); 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Validate parameters */ 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (p_conn_cback==NULL) 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_CE_MSG *) GKI_getbuf ((UINT16) sizeof(tNFA_CE_MSG))) != NULL) 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.hdr.event = NFA_CE_API_REG_LISTEN_EVT; 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.p_conn_cback = p_conn_cback; 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.listen_type = NFA_CE_REG_TYPE_ISO_DEP; 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Listen info */ 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project memcpy (p_msg->reg_listen.aid, aid, aid_len); 344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->reg_listen.aid_len = aid_len; 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_CeDeregisterAidOnDH 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Deregister listening callback for ISODEP AID 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** (previously registered using NFA_CeRegisterAidOnDH) 360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The NFA_CE_DEREGISTERED_EVT reports the status of the 362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** operation. 363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_BAD_HANDLE if invalid handle 369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_CeDeregisterAidOnDH (tNFA_HANDLE handle) 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_CeDeregisterAidOnDH (): handle:0x%X", handle); 375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (nfa_ce_api_deregister_listen (handle, NFA_CE_LISTEN_INFO_T4T_AID)); 376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_CeSetIsoDepListenTech 381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description Set the technologies (NFC-A and/or NFC-B) to listen for when 383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_CeConfigureLocalTag or NFA_CeDeregisterAidOnDH are called. 384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** By default (if this API is not called), NFA will listen 386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** for both NFC-A and NFC-B for ISODEP. 387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If listening for ISODEP on UICC, the DH listen callbacks 389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** may still get activate notifications for ISODEP if the reader/ 390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** writer selects an AID that is not routed to the UICC (regardless 391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** of whether A or B was disabled using NFA_CeSetIsoDepListenTech) 392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns: 397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_OK, if command accepted 398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED: otherwise 399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS NFA_CeSetIsoDepListenTech (tNFA_TECHNOLOGY_MASK tech_mask) 402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CE_MSG *p_msg; 404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TECHNOLOGY_MASK use_mask = (NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B); 405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_API1 ("NFA_CeSetIsoDepListenTech (): 0x%x", tech_mask); 407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (((tech_mask & use_mask) == 0) || 408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ((tech_mask & ~use_mask) != 0) ) 409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_TRACE_ERROR0 ("NFA_CeSetIsoDepListenTech: Invalid technology mask"); 411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_INVALID_PARAM); 412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if ((p_msg = (tNFA_CE_MSG *) GKI_getbuf ((UINT16) sizeof(tNFA_CE_MSG))) != NULL) 415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.event = NFA_CE_API_CFG_ISODEP_TECH_EVT; 417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project p_msg->hdr.layer_specific = tech_mask; 418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project nfa_sys_sendmsg (p_msg); 420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_OK); 422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project return (NFA_STATUS_FAILED); 425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 427