1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 35c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen * Copyright (C) 2003-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 * This is the private interface file for the NFA device manager. 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_DM_INT_H 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_INT_H 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_api.h" 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Constants and data types 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM events */ 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* device manager local device API events */ 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_ENABLE_EVT = NFA_SYS_EVT_START (NFA_ID_DM), 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_DISABLE_EVT, 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_SET_CONFIG_EVT, 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_GET_CONFIG_EVT, 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_REQUEST_EXCL_RF_CTRL_EVT, 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_RELEASE_EXCL_RF_CTRL_EVT, 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_ENABLE_POLLING_EVT, 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_DISABLE_POLLING_EVT, 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_RAW_FRAME_EVT, 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_SET_P2P_LISTEN_TECH_EVT, 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_START_RF_DISCOVERY_EVT, 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_STOP_RF_DISCOVERY_EVT, 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_SET_RF_DISC_DURATION_EVT, 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_SELECT_EVT, 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_UPDATE_RF_PARAMS_EVT, 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_DEACTIVATE_EVT, 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_POWER_OFF_SLEEP_EVT, 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_REG_NDEF_HDLR_EVT, 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_DEREG_NDEF_HDLR_EVT, 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_REG_VSC_EVT, 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_API_SEND_VSC_EVT, 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_TIMEOUT_DISABLE_EVT, 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_MAX_EVT 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_ENABLE_EVT */ 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_CBACK *p_dm_cback; 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_conn_cback; 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_ENABLE; 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_DISABLE_EVT */ 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN graceful; 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_DISABLE; 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SET_CONFIG_EVT */ 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_PMID param_id; 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 length; 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_data; 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SET_CONFIG; 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_GET_CONFIG_EVT */ 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 num_ids; 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_PMID *p_pmids; 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_GET_CONFIG; 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_REQ_EXCL_RF_CTRL_EVT */ 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TECHNOLOGY_MASK poll_mask; 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_LISTEN_CFG listen_cfg; 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_conn_cback; 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_CBACK *p_ndef_cback; 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_REQ_EXCL_RF_CTRL; 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_ENABLE_POLLING_EVT */ 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TECHNOLOGY_MASK poll_mask; 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_ENABLE_POLL; 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SET_P2P_LISTEN_TECH_EVT */ 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TECHNOLOGY_MASK tech_mask; 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SET_P2P_LISTEN_TECH; 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SELECT_EVT */ 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 rf_disc_id; 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NFC_PROTOCOL protocol; 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_INTF_TYPE rf_interface; 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SELECT; 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_UPDATE_RF_PARAMS_EVT */ 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RF_COMM_PARAMS params; 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_UPDATE_RF_PARAMS; 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_DEACTIVATE_EVT */ 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN sleep_mode; 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_DEACTIVATE; 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SET_RF_DISC_DURATION_EVT */ 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 rf_disc_dur_ms; 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SET_RF_DISC_DUR; 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RF_DISC_DURATION_MAX 0xFFFF 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_REG_NDEF_HDLR_EVT */ 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_FLAGS_HANDLE_WHOLE_MESSAGE 0x01 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_FLAGS_WKT_URI 0x02 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_FLAGS_WHOLE_MESSAGE_NOTIFIED 0x04 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_HANDLE ndef_type_handle; 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 flags; 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_CBACK *p_ndef_cback; 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TNF tnf; /* Type-name field of record-type that was registered. */ 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_URI_ID uri_id; /* URI prefix abrieviation (for NFA_RegisterNDefUriHandler) */ 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 name_len; /* Length of type name or absolute URI */ 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 name[1]; /* Type name or absolute URI of record-type that got was registered. */ 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_REG_NDEF_HDLR; 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_DEREG_NDEF_HDLR_EVT */ 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_HANDLE ndef_type_handle; 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_DEREG_NDEF_HDLR; 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_REG_VSC_EVT */ 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_VSC_CBACK *p_cback; 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN is_register; 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_REG_VSC; 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_DM_API_SEND_VSC_EVT */ 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_VSC_CBACK *p_cback; 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 oid; 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 cmd_params_len; 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 pad; /* add padding to ensure the size is big enough for offset=NCI_VSC_MSG_HDR_SIZE */ 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_cmd_params; 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_API_SEND_VSC; 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* union of all data types */ 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef union 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* GKI event buffer header */ 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; /* NFA_DM_API_RAW_FRAME_EVT */ 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_DM_API_MULTI_TECH_RSP_EVT */ 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_DM_API_RELEASE_EXCL_RF_CTRL */ 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_DM_API_DISABLE_POLLING_EVT */ 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_DM_API_START_RF_DISCOVERY_EVT */ 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_DM_API_STOP_RF_DISCOVERY_EVT */ 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_ENABLE enable; /* NFA_DM_API_ENABLE_EVT */ 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_DISABLE disable; /* NFA_DM_API_DISABLE_EVT */ 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SET_CONFIG setconfig; /* NFA_DM_API_SET_CONFIG_EVT */ 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_GET_CONFIG getconfig; /* NFA_DM_API_GET_CONFIG_EVT */ 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SET_RF_DISC_DUR disc_duration; /* NFA_DM_API_SET_RF_DISC_DURATION_EVT */ 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REG_NDEF_HDLR reg_ndef_hdlr; /* NFA_DM_API_REG_NDEF_HDLR_EVT */ 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_DEREG_NDEF_HDLR dereg_ndef_hdlr; /* NFA_DM_API_DEREG_NDEF_HDLR_EVT */ 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REQ_EXCL_RF_CTRL req_excl_rf_ctrl; /* NFA_DM_API_REQUEST_EXCL_RF_CTRL */ 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_ENABLE_POLL enable_poll; /* NFA_DM_API_ENABLE_POLLING_EVT */ 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SET_P2P_LISTEN_TECH set_p2p_listen_tech;/* NFA_DM_API_SET_P2P_LISTEN_TECH_EVT */ 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SELECT select; /* NFA_DM_API_SELECT_EVT */ 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_UPDATE_RF_PARAMS update_rf_params; /* NFA_DM_API_UPDATE_RF_PARAMS_EVT */ 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_DEACTIVATE deactivate; /* NFA_DM_API_DEACTIVATE_EVT */ 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_SEND_VSC send_vsc; /* NFA_DM_API_SEND_VSC_EVT */ 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REG_VSC reg_vsc; /* NFA_DM_API_REG_VSC_EVT */ 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_MSG; 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery state */ 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_IDLE, /* idle state */ 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_DISCOVERY, /* discovery state */ 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_W4_ALL_DISCOVERIES, /* wait for all discoveries state */ 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_W4_HOST_SELECT, /* wait for host selection state */ 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_POLL_ACTIVE, /* poll mode activated state */ 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_LISTEN_ACTIVE, /* listen mode activated state */ 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_LISTEN_SLEEP, /* listen mode sleep state */ 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_LP_LISTEN, /* Listening in Low Power mode */ 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RFST_LP_ACTIVE /* Activated in Low Power mode */ 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_RF_DISC_STATE; 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery state machine event */ 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DISCOVER_CMD, /* start RF discovery */ 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DISCOVER_RSP, /* discover response from NFCC */ 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DISCOVER_NTF, /* RF discovery NTF from NFCC */ 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DISCOVER_SELECT_CMD, /* select discovered target */ 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DISCOVER_SELECT_RSP, /* select response from NFCC */ 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_INTF_ACTIVATED_NTF, /* RF interface activation NTF from NFCC */ 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DEACTIVATE_CMD, /* deactivate RF interface */ 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DEACTIVATE_RSP, /* deactivate response from NFCC */ 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DEACTIVATE_NTF, /* deactivate RF interface NTF from NFCC */ 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_LP_LISTEN_CMD, /* NFCC is listening in low power mode */ 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_CORE_INTF_ERROR_NTF, /* RF interface error NTF from NFCC */ 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_DISC_SM_MAX_EVENT 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_RF_DISC_SM_EVENT; 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery state machine data */ 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 rf_disc_id; 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NFC_PROTOCOL protocol; 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_INTF_TYPE rf_interface; 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_DISC_SELECT_PARAMS; 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef union 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFC_DISCOVER nfc_discover; /* discovery data from NFCC */ 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFC_DEACT_TYPE deactivate_type; /* deactivation type */ 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_SELECT_PARAMS select; /* selected target information */ 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_RF_DISC_DATA; 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Callback event from NFA DM RF Discovery to other NFA sub-modules */ 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DISC_START_EVT, /* discovery started with protocol, technology and mode */ 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_RF_DISC_ACTIVATED_EVT, /* activated with configured protocol, technology and mode */ 2775c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen NFA_DM_RF_DISC_DEACTIVATED_EVT /* deactivated sleep or idle */ 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_RF_DISC_EVT; 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Combined NFC Technology and protocol bit mask */ 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_T1T 0x00000001 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_T2T 0x00000002 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_ISO_DEP 0x00000004 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PA_NFC_DEP 0x00000008 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PB_ISO_DEP 0x00000010 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PF_T3T 0x00000020 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PF_NFC_DEP 0x00000040 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_ISO15693 0x00000100 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_B_PRIME 0x00000200 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_KOVIO 0x00000400 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PAA_NFC_DEP 0x00000800 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_PFA_NFC_DEP 0x00001000 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_P_LEGACY 0x00002000 /* Legacy/proprietary/non-NFC Forum protocol (e.g Shanghai transit card) */ 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_POLL 0x0000FFFF 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_T1T 0x00010000 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_T2T 0x00020000 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_ISO_DEP 0x00040000 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LA_NFC_DEP 0x00080000 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LB_ISO_DEP 0x00100000 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LF_T3T 0x00200000 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LF_NFC_DEP 0x00400000 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_L_ISO15693 0x01000000 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_L_B_PRIME 0x02000000 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LAA_NFC_DEP 0x04000000 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LFA_NFC_DEP 0x08000000 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_L_LEGACY 0x10000000 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_MASK_LISTEN 0xFFFF0000 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT32 tNFA_DM_DISC_TECH_PROTO_MASK; 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery host ID */ 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_HOST_ID_DH NFC_DH_ID 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_DM_DISC_HOST_ID; 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM deactivation callback type */ 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_DISCOVER_CBACK) (tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER *p_data); 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM RF discovery action flags */ 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_ENABLED 0x0001 /* RF discovery process has been started */ 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_STOPPING 0x0002 /* Stop RF discovery is pending */ 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_DISABLING 0x0004 /* Disable NFA is pending */ 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_CHECKING 0x0008 /* Presence check/unknown protocol in progress */ 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_NOTIFY 0x0010 /* Notify sub-module that discovery is starting */ 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_W4_RSP 0x0020 /* command has been sent to NFCC in the state */ 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_FLAGS_W4_NTF 0x0040 /* wait for NTF before changing discovery state */ 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT16 tNFA_DM_DISC_FLAGS; 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM Discovery control block */ 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN in_use; /* TRUE if used */ 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DISCOVER_CBACK *p_disc_cback; /* discovery callback */ 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_FLAGS disc_flags; /* specific action flags */ 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_HOST_ID host_id; /* DH or UICC1/UICC2 */ 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_TECH_PROTO_MASK requested_disc_mask;/* technology and protocol requested */ 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_TECH_PROTO_MASK selected_disc_mask; /* technology and protocol waiting for activation */ 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_DISC_ENTRY; 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_DISC_NUM_ENTRIES 8 /* polling, raw listen, P2P listen, NDEF CE, 2xVSE, 2xUICC */ 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_MAX_DISC_PARAMS 16 /* max discovery technology parameters */ 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* index of listen mode routing table for technologies */ 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum { 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_DISC_LRT_NFC_A, 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_DISC_LRT_NFC_B, 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_DISC_LRT_NFC_F, 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_DM_DISC_LRT_NFC_BP 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* SLP_REQ (HLTA) command */ 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SLP_REQ_CMD 0x5000 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_MAX_TECH_ROUTE 4 /* NFA_EE_MAX_TECH_ROUTE. only A, B, F, Bprime are supported by UICC now */ 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 3605c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* timeout for waiting deactivation NTF, 3615c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** possible delay to send deactivate CMD if all credit wasn't returned 3625c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** transport delay (1sec) and max RWT (5sec) 3635c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen*/ 3645c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NFA_DM_DISC_TIMEOUT_W4_DEACT_NTF (NFC_DEACTIVATE_TIMEOUT*1000 + 6000) 3655c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 disc_duration; /* Disc duration */ 369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_FLAGS disc_flags; /* specific action flags */ 370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_RF_DISC_STATE disc_state; /* RF discovery state */ 371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFC_RF_TECH_N_MODE activated_tech_mode; /* activated technology and mode */ 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 activated_rf_disc_id; /* activated RF discovery ID */ 374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_INTF_TYPE activated_rf_interface; /* activated RF interface */ 375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NFC_PROTOCOL activated_protocol; /* activated protocol */ 376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_HANDLE activated_handle; /* handle of activated sub-module */ 377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 activated_sel_res; /* activated tag's SEL_RES response */ 378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_ENTRY entry[NFA_DM_DISC_NUM_ENTRIES]; 380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_ENTRY excl_disc_entry; /* exclusive RF discovery */ 382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_LISTEN_CFG excl_listen_config; /* listen cfg for exclusive-rf mode */ 383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 listen_RT[NFA_DM_MAX_TECH_ROUTE];/* Host ID for A, B, F, B' technology routing*/ 385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_TECH_PROTO_MASK dm_disc_mask; /* technology and protocol waiting for activation */ 386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 3875c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen TIMER_LIST_ENT tle; /* timer for waiting deactivation NTF */ 3885c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_DISC_CB; 390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NDEF Type Handler Definitions */ 392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_NDEF_DEFAULT_HANDLER_IDX 0 /* Default handler entry in ndef_handler table */ 393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_PARAM_ID_INVALID 0xFF 395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Maximum number of pending SetConfigs */ 397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_SETCONFIG_PENDING_MAX 32 398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_DM flags */ 400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_DM_IS_ACTIVE 0x00000001 /* DM is enabled */ 401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_EXCL_RF_ACTIVE 0x00000002 /* Exclusive RF mode is active */ 402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_POLLING_ENABLED 0x00000004 /* Polling is enabled (while not in exclusive RF mode */ 403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_SEND_POLL_STOP_EVT 0x00000008 /* send poll stop event */ 404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_AUTO_READING_NDEF 0x00000010 /* auto reading of NDEF in progress */ 405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_ENABLE_EVT_PEND 0x00000020 /* NFA_DM_ENABLE_EVT is not reported yet */ 406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_SEND_DEACTIVATED_EVT 0x00000040 /* Send NFA_DEACTIVATED_EVT when deactivated */ 407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_NFCC_IS_RESTORING 0x00000100 /* NFCC is restoring after back to full power mode */ 408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_SETTING_PWR_MODE 0x00000200 /* NFCC power mode is updating */ 409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_DM_FLAGS_DM_DISABLING_NFC 0x00000400 /* NFA DM is disabling NFC */ 410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* stored parameters */ 411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 total_duration[NCI_PARAM_LEN_TOTAL_DURATION]; 414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_bit_frame_sdd[NCI_PARAM_LEN_LA_BIT_FRAME_SDD]; 416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_bit_frame_sdd_len; 417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_platform_config[NCI_PARAM_LEN_LA_PLATFORM_CONFIG]; 418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_platform_config_len; 419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_sel_info[NCI_PARAM_LEN_LA_SEL_INFO]; 420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_sel_info_len; 421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_nfcid1[NCI_NFCID1_MAX_LEN]; 422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_nfcid1_len; 423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_hist_by[NCI_MAX_HIS_BYTES_LEN]; 424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 la_hist_by_len; 425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_sensb_info[NCI_PARAM_LEN_LB_SENSB_INFO]; 427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_sensb_info_len; 428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_nfcid0[NCI_PARAM_LEN_LB_NFCID0]; 429e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_nfcid0_len; 430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_appdata[NCI_PARAM_LEN_LB_APPDATA]; 431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_appdata_len; 432e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_adc_fo[NCI_PARAM_LEN_LB_ADC_FO]; 433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_adc_fo_len; 434e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_h_info[NCI_MAX_ATTRIB_LEN]; 435e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lb_h_info_len; 436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 437e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lf_protocol[NCI_PARAM_LEN_LF_PROTOCOL]; 438e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lf_protocol_len; 439e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lf_t3t_flags2[NCI_PARAM_LEN_LF_T3T_FLAGS2]; 440e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lf_t3t_flags2_len; 441e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lf_t3t_pmm[NCI_PARAM_LEN_LF_T3T_PMM]; 442e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 lf_t3t_id[NFA_CE_LISTEN_INFO_MAX][NCI_PARAM_LEN_LF_T3T_ID]; 443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 fwi[NCI_PARAM_LEN_FWI]; 445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 wt[NCI_PARAM_LEN_WT]; 446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_req_gen_bytes[NCI_MAX_GEN_BYTES_LEN]; 447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_req_gen_bytes_len; 448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_res_gen_bytes[NCI_MAX_GEN_BYTES_LEN]; 449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_res_gen_bytes_len; 450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_PARAMS; 451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* DM control block */ 453e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 flags; /* NFA_DM flags (see definitions for NFA_DM_FLAGS_*) */ 456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_CBACK *p_dm_cback; /* NFA DM callback */ 457e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TIMER_LIST_ENT tle; 458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 459e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN presence_check_deact_pending; /* TRUE if deactivate while checking presence */ 460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DEACTIVATE_TYPE presence_check_deact_type; /* deactivate type */ 461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFC link connection management */ 463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_conn_cback; /* callback for connection events */ 464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_TECHNOLOGY_MASK poll_mask; /* technologies being polled */ 465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CONN_CBACK *p_excl_conn_cback; /* exclusive RF mode callback */ 467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_NDEF_CBACK *p_excl_ndef_cback; /* ndef callback for exclusive RF mdoe */ 468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_HANDLE poll_disc_handle; /* discovery handle for polling */ 470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_activate_ntf; /* temp holding activation notfication */ 472e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 activated_nfcid[NCI_NFCID1_MAX_LEN]; 474e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFCID 0/1/2 or UID of ISO15694 */ 475e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 activated_nfcid_len;/* length of NFCID ot UID */ 476e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 477e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFC link discovery management */ 478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_DISC_CB disc_cb; 479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NDEF Type handler */ 481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_API_REG_NDEF_HDLR *p_ndef_handler[NFA_NDEF_MAX_HANDLERS]; /* ndef handler table */ 482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* stored parameters */ 484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DM_PARAMS params; 485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* SetConfig management */ 487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 setcfg_pending_mask; /* Mask of to indicate whether pending SET_CONFIGs require NFA_DM_SET_CONFIG_EVT. LSB=oldest pending */ 488e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 setcfg_pending_num; /* Number of setconfigs pending */ 489e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 490e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFCC power mode */ 491e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 nfcc_pwr_mode; /* NFA_DM_PWR_MODE_FULL or NFA_DM_PWR_MODE_OFF_SLEEP */ 492e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_DM_CB; 493e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 494e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Internal function prototypes */ 495e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_ndef_handle_message (tNFA_STATUS status, UINT8 *p_msg_buf, UINT32 len); 496e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_ndef_dereg_all (void); 497e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_act_conn_cback_notify (UINT8 event, tNFA_CONN_EVT_DATA *p_data); 498e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_notify_activation_status (tNFA_STATUS status, tNFA_TAG_PARAMS *p_params); 499e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_disable_complete (void); 500e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 501e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Internal functions from nfa_rw */ 502e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_rw_init (void); 503e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_rw_proc_disc_evt (tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER *p_data, BOOLEAN excl_rf_not_active); 504e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS nfa_rw_send_raw_frame (BT_HDR *p_data); 505e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 506e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Internal functions from nfa_ce */ 507e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_ce_init (void); 508e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 509e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Pointer to compile-time configuration structure */ 5105c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenenextern tNFA_HCI_CFG *p_nfa_hci_cfg; 511e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_DM_CFG *p_nfa_dm_cfg; 512e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 *p_nfa_dm_ce_cfg; 513e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 *p_nfa_dm_gen_cfg; 514e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 nfa_ee_max_ee_cfg; 515e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNCI_DISCOVER_MAPS *p_nfa_dm_interface_mapping; 516e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern UINT8 nfa_dm_num_dm_interface_mapping; 517e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 518e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA device manager control block */ 519e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if NFA_DYNAMIC_MEMORY == FALSE 520e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_DM_CB nfa_dm_cb; 521e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 522e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_DM_CB *nfa_dm_cb_ptr; 523e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_dm_cb (*nfa_dm_cb_ptr) 524e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 525e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 526e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_init (void); 527e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_p2p_init (void); 5285c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#if (defined (NFA_CHO_INCLUDED) && (NFA_CHO_INCLUDED==TRUE)) 529e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_cho_init (void); 5305c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#else 5315c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define nfa_cho_init() 5325c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif /* (defined (NFA_CHO_INCLUDED) && (NFA_CHO_INCLUDED==TRUE)) */ 5335c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#if (defined (NFA_SNEP_INCLUDED) && (NFA_SNEP_INCLUDED==TRUE)) 534e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_snep_init (BOOLEAN is_dta_mode); 5355c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#else 5365c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define nfa_snep_init(is_dta_mode) 5375c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif 5385c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 539e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dta_init (void); 540e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (NFC_NFCEE_INCLUDED == TRUE) 541e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_ee_init (void); 542e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_hci_init (void); 543e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 544e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_ee_init() 545e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_hci_init() 546e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 547e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 548e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Action function prototypes */ 549e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_enable (tNFA_DM_MSG *p_data); 550e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_disable (tNFA_DM_MSG *p_data); 551e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_set_config (tNFA_DM_MSG *p_data); 552e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_get_config (tNFA_DM_MSG *p_data); 553e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_request_excl_rf_ctrl (tNFA_DM_MSG *p_data); 554e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_release_excl_rf_ctrl (tNFA_DM_MSG *p_data); 555e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_enable_polling (tNFA_DM_MSG *p_data); 556e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_disable_polling (tNFA_DM_MSG *p_data); 557e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_send_raw_frame (tNFA_DM_MSG *p_data); 558e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_set_p2p_listen_tech (tNFA_DM_MSG *p_data); 559e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_start_rf_discovery (tNFA_DM_MSG *p_data); 560e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_stop_rf_discovery (tNFA_DM_MSG *p_data); 561e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_set_rf_disc_duration (tNFA_DM_MSG *p_data); 562e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_select (tNFA_DM_MSG *p_data); 563e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_update_rf_params (tNFA_DM_MSG *p_data); 564e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_deactivate (tNFA_DM_MSG *p_data); 565e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_power_off_sleep (tNFA_DM_MSG *p_data); 566e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_ndef_reg_hdlr (tNFA_DM_MSG *p_data); 567e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_ndef_dereg_hdlr (tNFA_DM_MSG *p_data); 568e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_tout (tNFA_DM_MSG *p_data); 569e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_reg_vsc (tNFA_DM_MSG *p_data); 570e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_send_vsc (tNFA_DM_MSG *p_data); 571e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_disable_timeout (tNFA_DM_MSG *p_data); 572e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_act_nfc_cback_data (tNFA_DM_MSG *p_data); 573e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 574e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_proc_nfcc_power_mode (UINT8 nfcc_power_mode); 575e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 576e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Main function prototypes */ 577e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_evt_hdlr (BT_HDR *p_msg); 578e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_sys_enable (void); 579e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_sys_disable (void); 580e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS nfa_dm_check_set_config (UINT8 tlv_list_len, UINT8 *p_tlv_list, BOOLEAN app_init); 581e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 582e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_conn_cback_event_notify (UINT8 event, tNFA_CONN_EVT_DATA *p_data); 583e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 584e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Discovery function prototypes */ 585e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_disc_sm_execute (tNFA_DM_RF_DISC_SM_EVENT event, tNFA_DM_RF_DISC_DATA *p_data); 586e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_HANDLE nfa_dm_add_rf_discover (tNFA_DM_DISC_TECH_PROTO_MASK disc_mask, tNFA_DM_DISC_HOST_ID host_id, tNFA_DISCOVER_CBACK *p_disc_cback); 587e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_delete_rf_discover (tNFA_HANDLE handle); 588e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_start_excl_discovery (tNFA_TECHNOLOGY_MASK poll_tech_mask, 589e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_LISTEN_CFG *p_listen_cfg, 590e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_DISCOVER_CBACK *p_disc_cback); 591e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_rel_excl_rf_control_and_notify (void); 592e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_stop_excl_discovery (void); 593e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_disc_new_state (tNFA_DM_RF_DISC_STATE new_state); 594e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 595e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_start_rf_discover (void); 596e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfa_dm_rf_discover_select (UINT8 rf_disc_id, tNFA_NFC_PROTOCOL protocol, tNFA_INTF_TYPE rf_interface); 597e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFA_STATUS nfa_dm_rf_deactivate (tNFA_DEACTIVATE_TYPE deactivate_type); 598e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_is_protocol_supported (tNFA_NFC_PROTOCOL protocol, UINT8 sel_res); 599e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBOOLEAN nfa_dm_is_active (void); 600e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjecttNFC_STATUS nfa_dm_disc_presence_check (void); 601e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 602e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 603e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (NFC_NFCEE_INCLUDED == FALSE) 604e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define nfa_ee_get_tech_route(ps, ha) memset(ha, NFC_DH_ID, NFA_DM_MAX_TECH_ROUTE); 605e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 606e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 607e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (BT_TRACE_VERBOSE == TRUE) 608e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectchar *nfa_dm_nfc_revt_2_str (tNFC_RESPONSE_EVT event); 609e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 610e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 611e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 612e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFA_DM_INT_H */ 613e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 614