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