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