1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu * Copyright (C) 2003-2014 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * This is the private interface file for NFA_RW 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_RW_INT_H 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_INT_H 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_sys.h" 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_rw_api.h" 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_api.h" 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "rw_api.h" 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Constants and data types 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Interval for performing presence check (in ms) */ 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_RW_PRESENCE_CHECK_INTERVAL 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_PRESENCE_CHECK_INTERVAL 750 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* TLV detection status */ 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_TLV_DETECT_ST_OP_NOT_STARTED 0x00 /* No Tlv detected */ 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_TLV_DETECT_ST_LOCK_TLV_OP_COMPLETE 0x01 /* Lock control tlv detected */ 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_TLV_DETECT_ST_MEM_TLV_OP_COMPLETE 0x02 /* Memory control tlv detected */ 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_TLV_DETECT_ST_COMPLETE 0x03 /* Both Lock and Memory control Tlvs are detected */ 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_RW_TLV_ST; 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* RW events */ 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_REQUEST_EVT = NFA_SYS_EVT_START (NFA_ID_RW), 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_ACTIVATE_NTF_EVT, 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_DEACTIVATE_NTF_EVT, 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_PRESENCE_CHECK_TICK_EVT, 59a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu NFA_RW_PRESENCE_CHECK_TIMEOUT_EVT, 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_MAX_EVT 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* BTA_RW operations */ 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_DETECT_NDEF, 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_READ_NDEF, 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_WRITE_NDEF, 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_PRESENCE_CHECK, 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_FORMAT_TAG, 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_SEND_RAW_FRAME, 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Exclusive Type-1,Type-2 tag operations */ 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_DETECT_LOCK_TLV, 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_DETECT_MEM_TLV, 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_SET_TAG_RO, 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Exclusive Type-1 tag operations */ 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_RID, 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_RALL, 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_READ, 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_WRITE, 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_RSEG, 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_READ8, 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_WRITE8, 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Exclusive Type-2 tag operations */ 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T2T_READ, 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T2T_WRITE, 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T2T_SECTOR_SELECT, 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Exclusive Type-3 tag operations */ 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T3T_READ, 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T3T_WRITE, 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T3T_GET_SYSTEM_CODES, 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Exclusive ISO 15693 tag operations */ 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_INVENTORY, 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_STAY_QUIET, 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_READ_SINGLE_BLOCK, 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_WRITE_SINGLE_BLOCK, 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_LOCK_BLOCK, 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_READ_MULTI_BLOCK, 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_WRITE_MULTI_BLOCK, 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_SELECT, 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_RESET_TO_READY, 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_WRITE_AFI, 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_LOCK_AFI, 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_WRITE_DSFID, 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_LOCK_DSFID, 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_GET_SYS_INFO, 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_I93_GET_MULTI_BLOCK_STATUS, 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_MAX 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_RW_OP; 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Enumeration of parameter structios for nfa_rw operations */ 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_WRITE_NDEF params */ 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 len; 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_data; 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_WRITE_NDEF; 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_SEND_RAW_FRAME params */ 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR *p_data; 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_SEND_RAW_FRAME; 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_SET_TAG_RO params */ 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN b_hard_lock; 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_CONFIG_READ_ONLY; 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_T1T_READ params */ 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 segment_number; 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 block_number; 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 index; 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_T1T_READ; 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_T1T_WRITE_E8,NFA_RW_OP_T1T_WRITE_NE8 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_OP_T1T_WRITE_E, NFA_RW_OP_T1T_WRITE_NE params */ 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN b_erase; 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 block_number; 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 index; 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 p_block_data[8]; 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_T1T_WRITE; 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_T2T_READ params */ 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 block_number; 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_T2T_READ; 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_T2T_WRITE params */ 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 block_number; 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 p_block_data[4]; 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_T2T_WRITE; 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_T2T_SECTOR_SELECT params */ 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sector_number; 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_T2T_SECTOR_SELECT; 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_T3T_READ params */ 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 num_blocks; 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_T3T_BLOCK_DESC *p_block_desc; 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_T3T_READ; 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA_RW_OP_T3T_WRITE params */ 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 num_blocks; 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_T3T_BLOCK_DESC *p_block_desc; 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_block_data; 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_T3T_WRITE; 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 19385b7e84f6cc61506c94e98844cac9ce50bbbe9dcEvan Chu/* NFA_RW_OP_I93_XXX params */ 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN uid_present; 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 uid[I93_UID_BYTE_LEN]; 1985c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen BOOLEAN afi_present; 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 afi; 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 dsfid; 20185b7e84f6cc61506c94e98844cac9ce50bbbe9dcEvan Chu UINT16 first_block_number; 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 number_blocks; 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_data; 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS_I93_CMD; 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Union of params for all reader/writer operations */ 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef union 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* params for NFA_RW_OP_WRITE_NDEF */ 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_WRITE_NDEF write_ndef; 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* params for NFA_RW_OP_SEND_RAW_FRAME */ 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_SEND_RAW_FRAME send_raw_frame; 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* params for NFA_RW_OP_SET_TAG_RO */ 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_CONFIG_READ_ONLY set_readonly; 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* params for NFA_RW_OP_T2T_READ and NFA_RW_OP_T1T_WRITE */ 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_T1T_READ t1t_read; 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_T1T_WRITE t1t_write; 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* params for NFA_RW_OP_T2T_READ,NFA_RW_OP_T2T_WRITE and NFA_RW_OP_T2T_SECTOR_SELECT */ 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_T2T_READ t2t_read; 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_T2T_WRITE t2t_write; 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_T2T_SECTOR_SELECT t2t_sector_select; 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* params for NFA_RW_OP_T3T_READ and NFA_RW_OP_T3T_WRITE */ 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_T3T_READ t3t_read; 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_T3T_WRITE t3t_write; 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 231a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu /* params for NFA_RW_OP_PRESENCE_CHECK */ 232a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu tNFA_RW_PRES_CHK_OPTION option; 233a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* params for ISO 15693 */ 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS_I93_CMD i93_cmd; 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OP_PARAMS; 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_RW_op_req_EVT */ 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP op; /* NFA RW operation */ 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP_PARAMS params; 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_OPERATION; 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* data type for NFA_RW_ACTIVATE_NTF */ 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFC_ACTIVATE_DEVT *p_activate_params; /* Data from NFC_ACTIVATE_DEVT */ 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN excl_rf_not_active; /* TRUE if not in exclusive RF mode */ 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_ACTIVATE_NTF; 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* union of all data types */ 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef union 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* GKI event buffer header */ 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BT_HDR hdr; 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OPERATION op_req; 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_ACTIVATE_NTF activate_ntf; 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_MSG; 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NDEF detection status */ 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_NDEF_ST_UNKNOWN =0, /* NDEF detection not performed yet */ 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_NDEF_ST_TRUE, /* Tag is NDEF */ 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project NFA_RW_NDEF_ST_FALSE /* Tag is not NDEF */ 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_RW_NDEF_ST; 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* flags for RW control block */ 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_FL_NOT_EXCL_RF_MODE 0x01 /* Activation while not in exclusive RF mode */ 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_FL_AUTO_PRESENCE_CHECK_BUSY 0x02 /* Waiting for response from tag for auto-presence check */ 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_FL_TAG_IS_READONLY 0x04 /* Read only tag */ 277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_FL_ACTIVATION_NTF_PENDING 0x08 /* Busy retrieving additional tag information */ 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_FL_API_BUSY 0x10 /* Tag operation is in progress */ 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_RW_FL_ACTIVATED 0x20 /* Tag is been activated */ 280a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu#define NFA_RW_FL_NDEF_OK 0x40 /* NDEF DETECTed OK */ 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA RW control block */ 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_OP cur_op; /* Current operation */ 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TIMER_LIST_ENT tle; /* list entry for nfa_rw timer */ 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_MSG *p_pending_msg; /* Pending API (if busy performing presence check) */ 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Tag info */ 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFC_PROTOCOL protocol; 292a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu tNFC_INTF_TYPE intf_type; 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pa_sel_res; 294c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chu tNFC_RF_TECH_N_MODE activated_tech_mode; /* activated technology and mode */ 295c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chu 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN b_hard_lock; 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_MSG *p_buffer_rw_msg; /* Buffer to hold incoming cmd while reading tag id */ 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* TLV info */ 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_TLV_ST tlv_st; /* TLV detection status */ 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NDEF info */ 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_RW_NDEF_ST ndef_st; /* NDEF detection status */ 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ndef_max_size; /* max number of bytes available for NDEF data */ 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ndef_cur_size; /* current size of stored NDEF data (in bytes) */ 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_ndef_buf; 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ndef_rd_offset; /* current read-offset of incoming NDEF data */ 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Current NDEF Write info */ 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_ndef_wr_buf; /* Pointer to NDEF data being written */ 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ndef_wr_len; /* Length of NDEF data being written */ 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 314c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chu /* Reactivating type 2 tag after NACK rsp */ 315c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chu tRW_EVENT halt_event; /* Event ID from stack after NACK response */ 316c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chu tRW_DATA rw_data; /* Event Data from stack after NACK response */ 317c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chu BOOLEAN skip_dyn_locks; /* To skip reading dynamic locks during NDEF Detect */ 318c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chu 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* Flags (see defintions for NFA_RW_FL_* ) */ 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 flags; 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* ISO 15693 tag memory information */ 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 i93_afi_location; 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 i93_dsfid; 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 i93_block_size; 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 i93_num_block; 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 i93_uid[I93_UID_BYTE_LEN]; 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_RW_CB; 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern tNFA_RW_CB nfa_rw_cb; 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* type definition for action functions */ 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef BOOLEAN (*tNFA_RW_ACTION) (tNFA_RW_MSG *p_data); 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Internal nfa_rw function prototypes */ 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_rw_stop_presence_check_timer (void); 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Action function prototypes */ 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern BOOLEAN nfa_rw_handle_op_req (tNFA_RW_MSG *p_data); 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern BOOLEAN nfa_rw_activate_ntf (tNFA_RW_MSG *p_data); 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern BOOLEAN nfa_rw_deactivate_ntf (tNFA_RW_MSG *p_data); 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern BOOLEAN nfa_rw_presence_check_tick (tNFA_RW_MSG *p_data); 344a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chuextern BOOLEAN nfa_rw_presence_check_timeout (tNFA_RW_MSG *p_data); 345c95c79ccb65d82a65b960919077d5c359cf28cedEvan Chuextern void nfa_rw_handle_sleep_wakeup_rsp (tNFC_STATUS status); 3467c69b2723b60a59df4aaa58b13985b3483b291bfEvan Chuextern void nfa_rw_handle_presence_check_rsp (tNFC_STATUS status); 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_rw_command_complete (void); 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern BOOLEAN nfa_rw_handle_event (BT_HDR *p_msg); 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_rw_free_ndef_rx_buf (void); 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_rw_sys_disable (void); 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFA_DM_INT_H */ 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 355