xref: /aosp_15_r20/system/nfc/src/nfa/include/nfa_api.h (revision 7eba2f3b06c51ae21384f6a4f14577b668a869b3)
1*7eba2f3bSAndroid Build Coastguard Worker /******************************************************************************
2*7eba2f3bSAndroid Build Coastguard Worker  *
3*7eba2f3bSAndroid Build Coastguard Worker  *  Copyright (C) 2010-2014 Broadcom Corporation
4*7eba2f3bSAndroid Build Coastguard Worker  *
5*7eba2f3bSAndroid Build Coastguard Worker  *  Licensed under the Apache License, Version 2.0 (the "License");
6*7eba2f3bSAndroid Build Coastguard Worker  *  you may not use this file except in compliance with the License.
7*7eba2f3bSAndroid Build Coastguard Worker  *  You may obtain a copy of the License at:
8*7eba2f3bSAndroid Build Coastguard Worker  *
9*7eba2f3bSAndroid Build Coastguard Worker  *  http://www.apache.org/licenses/LICENSE-2.0
10*7eba2f3bSAndroid Build Coastguard Worker  *
11*7eba2f3bSAndroid Build Coastguard Worker  *  Unless required by applicable law or agreed to in writing, software
12*7eba2f3bSAndroid Build Coastguard Worker  *  distributed under the License is distributed on an "AS IS" BASIS,
13*7eba2f3bSAndroid Build Coastguard Worker  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*7eba2f3bSAndroid Build Coastguard Worker  *  See the License for the specific language governing permissions and
15*7eba2f3bSAndroid Build Coastguard Worker  *  limitations under the License.
16*7eba2f3bSAndroid Build Coastguard Worker  *
17*7eba2f3bSAndroid Build Coastguard Worker  ******************************************************************************/
18*7eba2f3bSAndroid Build Coastguard Worker 
19*7eba2f3bSAndroid Build Coastguard Worker /******************************************************************************
20*7eba2f3bSAndroid Build Coastguard Worker  *
21*7eba2f3bSAndroid Build Coastguard Worker  *  This is the public interface file for NFA, Broadcom's NFC application
22*7eba2f3bSAndroid Build Coastguard Worker  *  layer for mobile phones.
23*7eba2f3bSAndroid Build Coastguard Worker  *
24*7eba2f3bSAndroid Build Coastguard Worker  ******************************************************************************/
25*7eba2f3bSAndroid Build Coastguard Worker #ifndef NFA_API_H
26*7eba2f3bSAndroid Build Coastguard Worker #define NFA_API_H
27*7eba2f3bSAndroid Build Coastguard Worker 
28*7eba2f3bSAndroid Build Coastguard Worker #include "gki.h"
29*7eba2f3bSAndroid Build Coastguard Worker #include "nci_defs.h"
30*7eba2f3bSAndroid Build Coastguard Worker #include "nfc_api.h"
31*7eba2f3bSAndroid Build Coastguard Worker #include "nfc_hal_api.h"
32*7eba2f3bSAndroid Build Coastguard Worker #include "nfc_target.h"
33*7eba2f3bSAndroid Build Coastguard Worker #include "rw_api.h"
34*7eba2f3bSAndroid Build Coastguard Worker #include "tags_defs.h"
35*7eba2f3bSAndroid Build Coastguard Worker 
36*7eba2f3bSAndroid Build Coastguard Worker /*****************************************************************************
37*7eba2f3bSAndroid Build Coastguard Worker **  Constants and data types
38*7eba2f3bSAndroid Build Coastguard Worker *****************************************************************************/
39*7eba2f3bSAndroid Build Coastguard Worker 
40*7eba2f3bSAndroid Build Coastguard Worker /* Max length of Appliction ID in 7816-4 */
41*7eba2f3bSAndroid Build Coastguard Worker #define NFA_MAX_AID_LEN NFC_MAX_AID_LEN
42*7eba2f3bSAndroid Build Coastguard Worker #define NFA_MIN_AID_LEN 5 /* per NCI specification */
43*7eba2f3bSAndroid Build Coastguard Worker 
44*7eba2f3bSAndroid Build Coastguard Worker /* Command succeeded    */
45*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_OK NCI_STATUS_OK
46*7eba2f3bSAndroid Build Coastguard Worker /* Command is rejected. */
47*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_REJECTED NCI_STATUS_REJECTED
48*7eba2f3bSAndroid Build Coastguard Worker /* buffer full          */
49*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_BUFFER_FULL NCI_STATUS_BUFFER_FULL
50*7eba2f3bSAndroid Build Coastguard Worker /* failed               */
51*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_FAILED NCI_STATUS_FAILED
52*7eba2f3bSAndroid Build Coastguard Worker /* Optional feature of NCI Spec not supported */
53*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_NOT_SUPPORTED NCI_STATUS_NOT_SUPPORTED
54*7eba2f3bSAndroid Build Coastguard Worker /* Semantic error       */
55*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_SEMANTIC_ERROR NCI_STATUS_SEMANTIC_ERROR
56*7eba2f3bSAndroid Build Coastguard Worker /* Unknown NCI Group ID */
57*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_UNKNOWN_GID NCI_STATUS_UNKNOWN_GID
58*7eba2f3bSAndroid Build Coastguard Worker /* Invalid Parameter    */
59*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_INVALID_PARAM NCI_STATUS_INVALID_PARAM
60*7eba2f3bSAndroid Build Coastguard Worker /* Already started      */
61*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_ALREADY_STARTED NCI_STATUS_ALREADY_STARTED
62*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_RF_UNEXPECTED_DATA NCI_STATUS_RF_UNEXPECTED_DATA
63*7eba2f3bSAndroid Build Coastguard Worker /* RF frame error       */
64*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_RF_FRAME_CORRUPTED NCI_STATUS_RF_FRAME_CORRUPTED
65*7eba2f3bSAndroid Build Coastguard Worker /* RF protocol error    */
66*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_RF_PROTOCOL_ERR NCI_STATUS_RF_PROTOCOL_ERR
67*7eba2f3bSAndroid Build Coastguard Worker /* RF Timeout           */
68*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_TIMEOUT NCI_STATUS_TIMEOUT
69*7eba2f3bSAndroid Build Coastguard Worker 
70*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_CONTINUE NFC_STATUS_CONTINUE
71*7eba2f3bSAndroid Build Coastguard Worker /* Out of GKI buffers */
72*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_NO_BUFFERS NFC_STATUS_NO_BUFFERS
73*7eba2f3bSAndroid Build Coastguard Worker /* Protocol mismatch between API and activated one */
74*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_WRONG_PROTOCOL NFC_STATUS_WRONG_PROTOCOL
75*7eba2f3bSAndroid Build Coastguard Worker /* Another Tag command is already in progress */
76*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_BUSY NFC_STATUS_BUSY
77*7eba2f3bSAndroid Build Coastguard Worker 
78*7eba2f3bSAndroid Build Coastguard Worker /* data len exceeds MIU                             */
79*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_BAD_LENGTH NFC_STATUS_BAD_LENGTH
80*7eba2f3bSAndroid Build Coastguard Worker /* invalid handle                                   */
81*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_BAD_HANDLE NFC_STATUS_BAD_HANDLE
82*7eba2f3bSAndroid Build Coastguard Worker /* congested                                        */
83*7eba2f3bSAndroid Build Coastguard Worker #define NFA_STATUS_CONGESTED NFC_STATUS_CONGESTED
84*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_STATUS;
85*7eba2f3bSAndroid Build Coastguard Worker 
86*7eba2f3bSAndroid Build Coastguard Worker /* Handle for NFA registrations and connections */
87*7eba2f3bSAndroid Build Coastguard Worker typedef uint16_t tNFA_HANDLE;
88*7eba2f3bSAndroid Build Coastguard Worker #define NFA_HANDLE_INVALID (0xFFFF)
89*7eba2f3bSAndroid Build Coastguard Worker /* NFA Handle definitions */
90*7eba2f3bSAndroid Build Coastguard Worker 
91*7eba2f3bSAndroid Build Coastguard Worker /* The upper byte of NFA_HANDLE signifies the handle group */
92*7eba2f3bSAndroid Build Coastguard Worker /* NDEF Type Handler handles    */
93*7eba2f3bSAndroid Build Coastguard Worker #define NFA_HANDLE_GROUP_NDEF_HANDLER 0x0200
94*7eba2f3bSAndroid Build Coastguard Worker /* DH Card Emulation handles    */
95*7eba2f3bSAndroid Build Coastguard Worker #define NFA_HANDLE_GROUP_CE 0x0300
96*7eba2f3bSAndroid Build Coastguard Worker /* Handles to identify NFCEE    */
97*7eba2f3bSAndroid Build Coastguard Worker #define NFA_HANDLE_GROUP_EE 0x0400
98*7eba2f3bSAndroid Build Coastguard Worker /* HCI handles                  */
99*7eba2f3bSAndroid Build Coastguard Worker #define NFA_HANDLE_GROUP_HCI 0x0800
100*7eba2f3bSAndroid Build Coastguard Worker /* Local NDEF message handle    */
101*7eba2f3bSAndroid Build Coastguard Worker #define NFA_HANDLE_GROUP_MASK 0xFF00
102*7eba2f3bSAndroid Build Coastguard Worker #define NFA_HANDLE_MASK 0x00FF
103*7eba2f3bSAndroid Build Coastguard Worker 
104*7eba2f3bSAndroid Build Coastguard Worker /* NCI Parameter IDs */
105*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_PMID;
106*7eba2f3bSAndroid Build Coastguard Worker 
107*7eba2f3bSAndroid Build Coastguard Worker /* Definitions for tNFA_TECHNOLOGY_MASK */
108*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_A 0x01        /* NFC Technology A             */
109*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_B 0x02        /* NFC Technology B             */
110*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_F 0x04        /* NFC Technology F             */
111*7eba2f3bSAndroid Build Coastguard Worker /* TECHNOLOGY_MASK_V in NCI2.0 and TECHNOLOGY_MASK_15693 proprietary in NCI1.0*/
112*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_V 0x08
113*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_B_PRIME 0x10  /* Proprietary Technology       */
114*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_KOVIO 0x20    /* Proprietary Technology       */
115*7eba2f3bSAndroid Build Coastguard Worker /* NFC technology NFC-DEP protocol active mode */
116*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_ACTIVE 0x40
117*7eba2f3bSAndroid Build Coastguard Worker /* NFC Technology A active mode */
118*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_A_ACTIVE 0x40
119*7eba2f3bSAndroid Build Coastguard Worker /* NFC Technology F active mode */
120*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TECHNOLOGY_MASK_F_ACTIVE 0x80
121*7eba2f3bSAndroid Build Coastguard Worker /* All supported technologies   */
122*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_TECHNOLOGY_MASK;
123*7eba2f3bSAndroid Build Coastguard Worker 
124*7eba2f3bSAndroid Build Coastguard Worker /* Definitions for NFC protocol for RW, CE and P2P APIs */
125*7eba2f3bSAndroid Build Coastguard Worker /* Type1Tag - NFC-A */
126*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_T1T NFC_PROTOCOL_T1T
127*7eba2f3bSAndroid Build Coastguard Worker /* MIFARE/Type2Tag - NFC-A */
128*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_T2T NFC_PROTOCOL_T2T
129*7eba2f3bSAndroid Build Coastguard Worker /* Felica/Type3Tag - NFC-F */
130*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_T3T NFC_PROTOCOL_T3T
131*7eba2f3bSAndroid Build Coastguard Worker /* Type 4A,4B - NFC-A or NFC-B */
132*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_ISO_DEP NFC_PROTOCOL_ISO_DEP
133*7eba2f3bSAndroid Build Coastguard Worker /* NFCDEP/LLCP - NFC-A or NFC-F */
134*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_NFC_DEP NFC_PROTOCOL_NFC_DEP
135*7eba2f3bSAndroid Build Coastguard Worker /* NFC_PROTOCOL_T5T in NCI2.0 and NFC_PROTOCOL_ISO15693 proprietary in NCI1.0*/
136*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_T5T NFC_PROTOCOL_T5T
137*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_CI NFC_PROTOCOL_CI
138*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_INVALID 0xFF
139*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_NFC_PROTOCOL;
140*7eba2f3bSAndroid Build Coastguard Worker 
141*7eba2f3bSAndroid Build Coastguard Worker /* Definitions for tNFA_PROTOCOL_MASK */
142*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_MASK_T1T 0x01     /* Type 1 tag          */
143*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_MASK_T2T 0x02     /* MIFARE / Type 2 tag */
144*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_MASK_T3T 0x04     /* FeliCa / Type 3 tag */
145*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PROTOCOL_MASK_ISO_DEP 0x08 /* ISODEP/4A,4B        */
146*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_PROTOCOL_MASK;
147*7eba2f3bSAndroid Build Coastguard Worker 
148*7eba2f3bSAndroid Build Coastguard Worker /* NFA_DM callback events */
149*7eba2f3bSAndroid Build Coastguard Worker /* Result of NFA_Enable             */
150*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_ENABLE_EVT 0
151*7eba2f3bSAndroid Build Coastguard Worker /* Result of NFA_Disable            */
152*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_DISABLE_EVT 1
153*7eba2f3bSAndroid Build Coastguard Worker /* Result of NFA_SetConfig          */
154*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_SET_CONFIG_EVT 2
155*7eba2f3bSAndroid Build Coastguard Worker /* Result of NFA_GetConfig          */
156*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_GET_CONFIG_EVT 3
157*7eba2f3bSAndroid Build Coastguard Worker /* Result of NFA_PowerOffSleepMode  */
158*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_PWR_MODE_CHANGE_EVT 4
159*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_RF_FIELD_EVT 5 /* Status of RF Field               */
160*7eba2f3bSAndroid Build Coastguard Worker /* NFCC is not responding           */
161*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_NFCC_TIMEOUT_EVT 6
162*7eba2f3bSAndroid Build Coastguard Worker /* NCI Tranport error               */
163*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_NFCC_TRANSPORT_ERR_EVT 7
164*7eba2f3bSAndroid Build Coastguard Worker /* Result of NFA_SetPowerSubStateForScreenState */
165*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_SET_POWER_SUB_STATE_EVT 11
166*7eba2f3bSAndroid Build Coastguard Worker /* T1T HR length            */
167*7eba2f3bSAndroid Build Coastguard Worker #define NFA_T1T_HR_LEN T1T_HR_LEN
168*7eba2f3bSAndroid Build Coastguard Worker /* Max UID length of T1/T2  */
169*7eba2f3bSAndroid Build Coastguard Worker #define NFA_MAX_UID_LEN TAG_MAX_UID_LEN
170*7eba2f3bSAndroid Build Coastguard Worker /* UID len for T1T cmds     */
171*7eba2f3bSAndroid Build Coastguard Worker #define NFA_T1T_CMD_UID_LEN T1T_CMD_UID_LEN
172*7eba2f3bSAndroid Build Coastguard Worker /* T2T UID length           */
173*7eba2f3bSAndroid Build Coastguard Worker 
174*7eba2f3bSAndroid Build Coastguard Worker /* Tag formated for NDEF */
175*7eba2f3bSAndroid Build Coastguard Worker #define NFA_RW_NDEF_FL_FORMATED RW_NDEF_FL_FORMATED
176*7eba2f3bSAndroid Build Coastguard Worker /* NDEF supported by the tag */
177*7eba2f3bSAndroid Build Coastguard Worker #define NFA_RW_NDEF_FL_SUPPORTED RW_NDEF_FL_SUPPORTED
178*7eba2f3bSAndroid Build Coastguard Worker /* Unable to find if tag is ndef capable/formated/read only */
179*7eba2f3bSAndroid Build Coastguard Worker #define NFA_RW_NDEF_FL_UNKNOWN RW_NDEF_FL_UNKNOWN
180*7eba2f3bSAndroid Build Coastguard Worker /* Tag supports format operation */
181*7eba2f3bSAndroid Build Coastguard Worker #define NFA_RW_NDEF_FL_FORMATABLE RW_NDEF_FL_FORMATABLE
182*7eba2f3bSAndroid Build Coastguard Worker 
183*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_RW_NDEF_FLAG;
184*7eba2f3bSAndroid Build Coastguard Worker 
185*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_DM_SET_CONFIG_EVT */
186*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
187*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;                   /* NFA_STATUS_OK if successful  */
188*7eba2f3bSAndroid Build Coastguard Worker   uint8_t num_param_id;                 /* Number of rejected Param ID  */
189*7eba2f3bSAndroid Build Coastguard Worker   tNFA_PMID param_ids[NFC_MAX_NUM_IDS]; /* Rejected Param ID            */
190*7eba2f3bSAndroid Build Coastguard Worker } tNFA_SET_CONFIG;
191*7eba2f3bSAndroid Build Coastguard Worker 
192*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_DM_GET_CONFIG_EVT */
193*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
194*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;    /* NFA_STATUS_OK if successful              */
195*7eba2f3bSAndroid Build Coastguard Worker   uint16_t tlv_size;     /* The length of TLV                        */
196*7eba2f3bSAndroid Build Coastguard Worker   uint8_t* param_tlvs;   /* TLV (Parameter ID-Len-Value byte stream) */
197*7eba2f3bSAndroid Build Coastguard Worker } tNFA_GET_CONFIG;
198*7eba2f3bSAndroid Build Coastguard Worker 
199*7eba2f3bSAndroid Build Coastguard Worker /* Structure to store screen state */
200*7eba2f3bSAndroid Build Coastguard Worker typedef enum screen_state {
201*7eba2f3bSAndroid Build Coastguard Worker   NFA_SCREEN_STATE_UNKNOWN = 0x00,
202*7eba2f3bSAndroid Build Coastguard Worker   NFA_SCREEN_STATE_OFF_UNLOCKED = 0x01,
203*7eba2f3bSAndroid Build Coastguard Worker   NFA_SCREEN_STATE_OFF_LOCKED = 0x02,
204*7eba2f3bSAndroid Build Coastguard Worker   NFA_SCREEN_STATE_ON_LOCKED = 0x04,
205*7eba2f3bSAndroid Build Coastguard Worker   NFA_SCREEN_STATE_ON_UNLOCKED = 0x08
206*7eba2f3bSAndroid Build Coastguard Worker } eScreenState_t;
207*7eba2f3bSAndroid Build Coastguard Worker 
208*7eba2f3bSAndroid Build Coastguard Worker typedef enum power_substate {
209*7eba2f3bSAndroid Build Coastguard Worker   SCREEN_STATE_ON_UNLOCKED = 0x00,
210*7eba2f3bSAndroid Build Coastguard Worker   SCREEN_STATE_OFF_UNLOCKED,
211*7eba2f3bSAndroid Build Coastguard Worker   SCREEN_STATE_ON_LOCKED,
212*7eba2f3bSAndroid Build Coastguard Worker   SCREEN_STATE_OFF_LOCKED,
213*7eba2f3bSAndroid Build Coastguard Worker   SCREEN_STATE_INVALID = 0xFF
214*7eba2f3bSAndroid Build Coastguard Worker } epower_substate_t;
215*7eba2f3bSAndroid Build Coastguard Worker 
216*7eba2f3bSAndroid Build Coastguard Worker #define NFA_SCREEN_STATE_MASK 0x0F
217*7eba2f3bSAndroid Build Coastguard Worker 
218*7eba2f3bSAndroid Build Coastguard Worker /* CONN_DISCOVER_PARAM */
219*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_PWR_MODE_FULL 0x04
220*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_PWR_MODE_OFF_SLEEP 0x00
221*7eba2f3bSAndroid Build Coastguard Worker 
222*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_DM_PWR_MODE;
223*7eba2f3bSAndroid Build Coastguard Worker 
224*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_DM_PWR_MODE_CHANGE_EVT */
225*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
226*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status; /* NFA_STATUS_OK if successful */
227*7eba2f3bSAndroid Build Coastguard Worker   /* NFA_DM_PWR_MODE_FULL or NFA_DM_PWR_MODE_OFF_SLEEP */
228*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DM_PWR_MODE power_mode;
229*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DM_PWR_MODE_CHANGE;
230*7eba2f3bSAndroid Build Coastguard Worker 
231*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_DM_RF_FIELD_EVT */
232*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_RF_FIELD_OFF 0x00
233*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_RF_FIELD_ON 0x01
234*7eba2f3bSAndroid Build Coastguard Worker 
235*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
236*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status; /* NFA_STATUS_OK if successful  */
237*7eba2f3bSAndroid Build Coastguard Worker   /* NFA_DM_RF_FIELD_ON if operating field generated by remote */
238*7eba2f3bSAndroid Build Coastguard Worker   uint8_t rf_field_status;
239*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DM_RF_FIELD;
240*7eba2f3bSAndroid Build Coastguard Worker 
241*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
242*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;  /* NFA_STATUS_OK if successful  */
243*7eba2f3bSAndroid Build Coastguard Worker   uint8_t power_state; /* current screen/power state */
244*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DM_POWER_STATE;
245*7eba2f3bSAndroid Build Coastguard Worker 
246*7eba2f3bSAndroid Build Coastguard Worker /* Union of all DM callback structures */
247*7eba2f3bSAndroid Build Coastguard Worker typedef union {
248*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;                 /* NFA_DM_ENABLE_EVT        */
249*7eba2f3bSAndroid Build Coastguard Worker   tNFA_SET_CONFIG set_config;         /* NFA_DM_SET_CONFIG_EVT    */
250*7eba2f3bSAndroid Build Coastguard Worker   tNFA_GET_CONFIG get_config;         /* NFA_DM_GET_CONFIG_EVT    */
251*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DM_PWR_MODE_CHANGE power_mode; /* NFA_DM_PWR_MODE_CHANGE_EVT   */
252*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DM_RF_FIELD rf_field;          /* NFA_DM_RF_FIELD_EVT      */
253*7eba2f3bSAndroid Build Coastguard Worker   void* p_vs_evt_data;                /* Vendor-specific evt data */
254*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DM_POWER_STATE power_sub_state; /* power sub state */
255*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DM_CBACK_DATA;
256*7eba2f3bSAndroid Build Coastguard Worker 
257*7eba2f3bSAndroid Build Coastguard Worker /* NFA_DM callback */
258*7eba2f3bSAndroid Build Coastguard Worker typedef void(tNFA_DM_CBACK)(uint8_t event, tNFA_DM_CBACK_DATA* p_data);
259*7eba2f3bSAndroid Build Coastguard Worker 
260*7eba2f3bSAndroid Build Coastguard Worker /* NFA Enable DTA Type Mode */
261*7eba2f3bSAndroid Build Coastguard Worker typedef enum {
262*7eba2f3bSAndroid Build Coastguard Worker   NFA_DTA_APPL_MODE = 0x00000000,
263*7eba2f3bSAndroid Build Coastguard Worker   NFA_DTA_DEFAULT_MODE = 0x00000001,
264*7eba2f3bSAndroid Build Coastguard Worker   NFA_DTA_LLCP_MODE = 0x00000002,
265*7eba2f3bSAndroid Build Coastguard Worker   NFA_DTA_HCEF_MODE = 0x00000004,
266*7eba2f3bSAndroid Build Coastguard Worker   NFA_DTA_CR8 = 0x00000080,
267*7eba2f3bSAndroid Build Coastguard Worker } tNFA_eDtaModes;
268*7eba2f3bSAndroid Build Coastguard Worker 
269*7eba2f3bSAndroid Build Coastguard Worker /* NFA Connection Callback Events */
270*7eba2f3bSAndroid Build Coastguard Worker #define NFA_POLL_ENABLED_EVT 0  /* Polling enabled event */
271*7eba2f3bSAndroid Build Coastguard Worker #define NFA_POLL_DISABLED_EVT 1 /* Polling disabled event */
272*7eba2f3bSAndroid Build Coastguard Worker /* NFC link/protocol discovery notificaiton */
273*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DISC_RESULT_EVT 2
274*7eba2f3bSAndroid Build Coastguard Worker /* NFC link/protocol discovery select response */
275*7eba2f3bSAndroid Build Coastguard Worker #define NFA_SELECT_RESULT_EVT 3
276*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DEACTIVATE_FAIL_EVT 4 /* NFA_Deactivate failure */
277*7eba2f3bSAndroid Build Coastguard Worker /* NFC link/protocol activated */
278*7eba2f3bSAndroid Build Coastguard Worker #define NFA_ACTIVATED_EVT 5
279*7eba2f3bSAndroid Build Coastguard Worker /* NFC link/protocol deactivated */
280*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DEACTIVATED_EVT 6
281*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TLV_DETECT_EVT 7 /* TLV Detection complete */
282*7eba2f3bSAndroid Build Coastguard Worker /* NDEF Detection complete */
283*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_DETECT_EVT 8
284*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DATA_EVT 9            /* Data message received */
285*7eba2f3bSAndroid Build Coastguard Worker #define NFA_SELECT_CPLT_EVT 10    /* Select completed */
286*7eba2f3bSAndroid Build Coastguard Worker #define NFA_READ_CPLT_EVT 11      /* Read completed */
287*7eba2f3bSAndroid Build Coastguard Worker #define NFA_WRITE_CPLT_EVT 12     /* Write completed */
288*7eba2f3bSAndroid Build Coastguard Worker /* Response to NFA_RwPresenceCheck */
289*7eba2f3bSAndroid Build Coastguard Worker #define NFA_PRESENCE_CHECK_EVT 15
290*7eba2f3bSAndroid Build Coastguard Worker /* Tag Formating completed */
291*7eba2f3bSAndroid Build Coastguard Worker #define NFA_FORMAT_CPLT_EVT 16
292*7eba2f3bSAndroid Build Coastguard Worker /* ISO 15693 command completed */
293*7eba2f3bSAndroid Build Coastguard Worker #define NFA_I93_CMD_CPLT_EVT 17
294*7eba2f3bSAndroid Build Coastguard Worker #define NFA_SET_TAG_RO_EVT 18 /* Tag set as Read only */
295*7eba2f3bSAndroid Build Coastguard Worker /* Result for NFA_RequestExclusiveRfControl */
296*7eba2f3bSAndroid Build Coastguard Worker #define NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT 19
297*7eba2f3bSAndroid Build Coastguard Worker /* Result for NFA_ReleaseExclusiveRfControl */
298*7eba2f3bSAndroid Build Coastguard Worker #define NFA_EXCLUSIVE_RF_CONTROL_STOPPED_EVT 20
299*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: AID or System code reg'd  */
300*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_REGISTERED_EVT 21
301*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: AID or System code dereg'd */
302*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_DEREGISTERED_EVT 22
303*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: data received event */
304*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_DATA_EVT 23
305*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: activation event */
306*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_ACTIVATED_EVT 24
307*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: deactivation event */
308*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_DEACTIVATED_EVT 25
309*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: local NDEF configured */
310*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_LOCAL_TAG_CONFIGURED_EVT 26
311*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: NDEF write started */
312*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_NDEF_WRITE_START_EVT 27
313*7eba2f3bSAndroid Build Coastguard Worker /* DH Card emulation: NDEF write completed */
314*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_NDEF_WRITE_CPLT_EVT 28
315*7eba2f3bSAndroid Build Coastguard Worker #define NFA_CE_UICC_LISTEN_CONFIGURED_EVT 29 /* UICC Listen configured */
316*7eba2f3bSAndroid Build Coastguard Worker /* RF Discovery started event */
317*7eba2f3bSAndroid Build Coastguard Worker #define NFA_RF_DISCOVERY_STARTED_EVT 30
318*7eba2f3bSAndroid Build Coastguard Worker /* RF Discovery stopped event */
319*7eba2f3bSAndroid Build Coastguard Worker #define NFA_RF_DISCOVERY_STOPPED_EVT 31
320*7eba2f3bSAndroid Build Coastguard Worker /* status of updating RF communication paramters */
321*7eba2f3bSAndroid Build Coastguard Worker #define NFA_UPDATE_RF_PARAM_RESULT_EVT 32
322*7eba2f3bSAndroid Build Coastguard Worker /* RF Interface error event */
323*7eba2f3bSAndroid Build Coastguard Worker #define NFA_RW_INTF_ERROR_EVT 34
324*7eba2f3bSAndroid Build Coastguard Worker /* Listening enabled event */
325*7eba2f3bSAndroid Build Coastguard Worker #define NFA_LISTEN_ENABLED_EVT 36
326*7eba2f3bSAndroid Build Coastguard Worker /* Listening disabled event */
327*7eba2f3bSAndroid Build Coastguard Worker #define NFA_LISTEN_DISABLED_EVT 37
328*7eba2f3bSAndroid Build Coastguard Worker /* T2T command completed */
329*7eba2f3bSAndroid Build Coastguard Worker #define NFA_T2T_CMD_CPLT_EVT 40
330*7eba2f3bSAndroid Build Coastguard Worker 
331*7eba2f3bSAndroid Build Coastguard Worker /* NFC deactivation type */
332*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DEACTIVATE_TYPE_IDLE NFC_DEACTIVATE_TYPE_IDLE
333*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DEACTIVATE_TYPE_SLEEP NFC_DEACTIVATE_TYPE_SLEEP
334*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DEACTIVATE_TYPE_DISCOVERY NFC_DEACTIVATE_TYPE_DISCOVERY
335*7eba2f3bSAndroid Build Coastguard Worker 
336*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_DEACTIVATE_TYPE;
337*7eba2f3bSAndroid Build Coastguard Worker 
338*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_DISC_RESULT_EVT */
339*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
340*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;             /* NFA_STATUS_OK if successful       */
341*7eba2f3bSAndroid Build Coastguard Worker   tNFC_RESULT_DEVT discovery_ntf; /* RF discovery notification details */
342*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DISC_RESULT;
343*7eba2f3bSAndroid Build Coastguard Worker 
344*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_ACTIVATED_EVT */
345*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
346*7eba2f3bSAndroid Build Coastguard Worker   uint8_t hr[NFA_T1T_HR_LEN];       /* HR of Type 1 tag         */
347*7eba2f3bSAndroid Build Coastguard Worker   uint8_t uid[NFA_T1T_CMD_UID_LEN]; /* UID used in T1T Commands */
348*7eba2f3bSAndroid Build Coastguard Worker } tNFA_T1T_PARAMS;
349*7eba2f3bSAndroid Build Coastguard Worker 
350*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
351*7eba2f3bSAndroid Build Coastguard Worker   uint8_t uid[NFA_MAX_UID_LEN]; /* UID of T2T tag           */
352*7eba2f3bSAndroid Build Coastguard Worker } tNFA_T2T_PARAMS;
353*7eba2f3bSAndroid Build Coastguard Worker 
354*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
355*7eba2f3bSAndroid Build Coastguard Worker   uint8_t num_system_codes; /* Number of system codes supporte by tag   */
356*7eba2f3bSAndroid Build Coastguard Worker   uint16_t* p_system_codes; /* Pointer to list of system codes          */
357*7eba2f3bSAndroid Build Coastguard Worker } tNFA_T3T_PARAMS;
358*7eba2f3bSAndroid Build Coastguard Worker 
359*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
360*7eba2f3bSAndroid Build Coastguard Worker   uint8_t uid[I93_UID_BYTE_LEN]; /* UID[0]:MSB, ... UID[7]:LSB */
361*7eba2f3bSAndroid Build Coastguard Worker   uint8_t info_flags;   /* information flags                            */
362*7eba2f3bSAndroid Build Coastguard Worker   uint8_t dsfid;        /* DSFID if I93_INFO_FLAG_DSFID                 */
363*7eba2f3bSAndroid Build Coastguard Worker   uint8_t afi;          /* AFI if I93_INFO_FLAG_AFI                     */
364*7eba2f3bSAndroid Build Coastguard Worker   uint16_t num_block;   /* number of blocks if I93_INFO_FLAG_MEM_SIZE   */
365*7eba2f3bSAndroid Build Coastguard Worker   uint8_t block_size;   /* block size in byte if I93_INFO_FLAG_MEM_SIZE */
366*7eba2f3bSAndroid Build Coastguard Worker   uint8_t IC_reference; /* IC Reference if I93_INFO_FLAG_IC_REF         */
367*7eba2f3bSAndroid Build Coastguard Worker } tNFA_I93_PARAMS;
368*7eba2f3bSAndroid Build Coastguard Worker 
369*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
370*7eba2f3bSAndroid Build Coastguard Worker   uint8_t mbi;
371*7eba2f3bSAndroid Build Coastguard Worker   uint8_t uid[8]; /* UID of Chinese Id Card           */
372*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CI_PARAMS;
373*7eba2f3bSAndroid Build Coastguard Worker typedef union {
374*7eba2f3bSAndroid Build Coastguard Worker   tNFA_T1T_PARAMS t1t; /* HR and UID of T1T                */
375*7eba2f3bSAndroid Build Coastguard Worker   tNFA_T2T_PARAMS t2t; /* UID of T2T                       */
376*7eba2f3bSAndroid Build Coastguard Worker   tNFA_T3T_PARAMS t3t; /* System codes                     */
377*7eba2f3bSAndroid Build Coastguard Worker   tNFA_I93_PARAMS i93; /* System Information of ISO 15693  */
378*7eba2f3bSAndroid Build Coastguard Worker   tNFA_CI_PARAMS ci;
379*7eba2f3bSAndroid Build Coastguard Worker } tNFA_TAG_PARAMS;
380*7eba2f3bSAndroid Build Coastguard Worker 
381*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
382*7eba2f3bSAndroid Build Coastguard Worker   tNFC_ACTIVATE_DEVT activate_ntf; /* RF discovery activation details */
383*7eba2f3bSAndroid Build Coastguard Worker   tNFA_TAG_PARAMS params;          /* additional informaiton of tag   */
384*7eba2f3bSAndroid Build Coastguard Worker } tNFA_ACTIVATED;
385*7eba2f3bSAndroid Build Coastguard Worker 
386*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_DEACTIVATED_EVT */
387*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
388*7eba2f3bSAndroid Build Coastguard Worker   /* NFA_DEACTIVATE_TYPE_IDLE or NFA_DEACTIVATE_TYPE_SLEEP */
389*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DEACTIVATE_TYPE type;
390*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DEACTIVATED;
391*7eba2f3bSAndroid Build Coastguard Worker 
392*7eba2f3bSAndroid Build Coastguard Worker /* Structure for NFA_NDEF_DETECT_EVT event data */
393*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
394*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;         /* Status of the ndef detecton */
395*7eba2f3bSAndroid Build Coastguard Worker   tNFA_NFC_PROTOCOL protocol; /* protocol used to detect NDEF */
396*7eba2f3bSAndroid Build Coastguard Worker   uint32_t max_size;          /* max number of bytes available for NDEF data */
397*7eba2f3bSAndroid Build Coastguard Worker   uint32_t cur_size;          /* current size of stored NDEF data (in bytes) */
398*7eba2f3bSAndroid Build Coastguard Worker   /* Flags to indicate NDEF capability, is formated, soft/hard lockable,
399*7eba2f3bSAndroid Build Coastguard Worker    * formatable, otp and read only */
400*7eba2f3bSAndroid Build Coastguard Worker   tNFA_RW_NDEF_FLAG flags;
401*7eba2f3bSAndroid Build Coastguard Worker } tNFA_NDEF_DETECT;
402*7eba2f3bSAndroid Build Coastguard Worker 
403*7eba2f3bSAndroid Build Coastguard Worker /* Structure for NFA_TLV_DETECT_EVT event data */
404*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
405*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;         /* Status of the tlv detecton        */
406*7eba2f3bSAndroid Build Coastguard Worker   tNFA_NFC_PROTOCOL protocol; /* protocol used to detect TLV       */
407*7eba2f3bSAndroid Build Coastguard Worker   uint8_t num_tlvs;           /* number of tlvs present in the tag */
408*7eba2f3bSAndroid Build Coastguard Worker   uint8_t num_bytes;          /* number of lock/reserved bytes     */
409*7eba2f3bSAndroid Build Coastguard Worker } tNFA_TLV_DETECT;
410*7eba2f3bSAndroid Build Coastguard Worker 
411*7eba2f3bSAndroid Build Coastguard Worker /* Structure for NFA_DATA_EVT data */
412*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
413*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status; /* Status of Data received          */
414*7eba2f3bSAndroid Build Coastguard Worker   uint8_t* p_data;    /* Data buffer                      */
415*7eba2f3bSAndroid Build Coastguard Worker   uint16_t len;       /* Length of data                   */
416*7eba2f3bSAndroid Build Coastguard Worker } tNFA_RX_DATA;
417*7eba2f3bSAndroid Build Coastguard Worker 
418*7eba2f3bSAndroid Build Coastguard Worker /* Structure for NFA_CE_NDEF_WRITE_CPLT_EVT data */
419*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
420*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status; /* Status of the ndef write op      */
421*7eba2f3bSAndroid Build Coastguard Worker   uint32_t len;       /* Update length of NDEF data       */
422*7eba2f3bSAndroid Build Coastguard Worker   uint8_t* p_data;    /* data buffer                      */
423*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CE_NDEF_WRITE_CPLT;
424*7eba2f3bSAndroid Build Coastguard Worker 
425*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_I93_CMD_CPLT_EVT */
426*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
427*7eba2f3bSAndroid Build Coastguard Worker   uint8_t dsfid;                 /* DSFID                       */
428*7eba2f3bSAndroid Build Coastguard Worker   uint8_t uid[I93_UID_BYTE_LEN]; /* UID[0]:MSB, ... UID[7]:LSB  */
429*7eba2f3bSAndroid Build Coastguard Worker } tNFA_I93_INVENTORY;
430*7eba2f3bSAndroid Build Coastguard Worker 
431*7eba2f3bSAndroid Build Coastguard Worker typedef struct /* RW_I93_SYS_INFO_EVT                          */
432*7eba2f3bSAndroid Build Coastguard Worker {
433*7eba2f3bSAndroid Build Coastguard Worker   uint8_t info_flags; /* information flags                            */
434*7eba2f3bSAndroid Build Coastguard Worker   uint8_t uid[I93_UID_BYTE_LEN]; /* UID */
435*7eba2f3bSAndroid Build Coastguard Worker   uint8_t dsfid;        /* DSFID if I93_INFO_FLAG_DSFID                 */
436*7eba2f3bSAndroid Build Coastguard Worker   uint8_t afi;          /* AFI if I93_INFO_FLAG_AFI                     */
437*7eba2f3bSAndroid Build Coastguard Worker   uint16_t num_block;   /* number of blocks if I93_INFO_FLAG_MEM_SIZE   */
438*7eba2f3bSAndroid Build Coastguard Worker   uint8_t block_size;   /* block size in byte if I93_INFO_FLAG_MEM_SIZE */
439*7eba2f3bSAndroid Build Coastguard Worker   uint8_t IC_reference; /* IC Reference if I93_INFO_FLAG_IC_REF         */
440*7eba2f3bSAndroid Build Coastguard Worker } tNFA_I93_SYS_INFO;
441*7eba2f3bSAndroid Build Coastguard Worker 
442*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
443*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;   /* Status of sending command       */
444*7eba2f3bSAndroid Build Coastguard Worker   uint8_t sent_command; /* sent command to tag             */
445*7eba2f3bSAndroid Build Coastguard Worker   union {
446*7eba2f3bSAndroid Build Coastguard Worker     uint8_t error_code;           /* error code defined in ISO 15693 */
447*7eba2f3bSAndroid Build Coastguard Worker     tNFA_I93_INVENTORY inventory; /* inventory response              */
448*7eba2f3bSAndroid Build Coastguard Worker     tNFA_I93_SYS_INFO sys_info;   /* system information              */
449*7eba2f3bSAndroid Build Coastguard Worker   } params;
450*7eba2f3bSAndroid Build Coastguard Worker } tNFA_I93_CMD_CPLT;
451*7eba2f3bSAndroid Build Coastguard Worker 
452*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_CE_REGISTERED_EVT */
453*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
454*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status; /* NFA_STATUS_OK if successful                      */
455*7eba2f3bSAndroid Build Coastguard Worker   tNFA_HANDLE handle; /* handle for NFA_CeRegisterFelicaSystemCodeOnDH () */
456*7eba2f3bSAndroid Build Coastguard Worker                       /*            NFA_CeRegisterT4tAidOnDH ()           */
457*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CE_REGISTERED;
458*7eba2f3bSAndroid Build Coastguard Worker 
459*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_CE_DEREGISTERED_EVT */
460*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
461*7eba2f3bSAndroid Build Coastguard Worker   tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT   */
462*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CE_DEREGISTERED;
463*7eba2f3bSAndroid Build Coastguard Worker 
464*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_CE_ACTIVATED_EVT */
465*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
466*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status; /* NFA_STATUS_OK if successful              */
467*7eba2f3bSAndroid Build Coastguard Worker   tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT        */
468*7eba2f3bSAndroid Build Coastguard Worker   tNFC_ACTIVATE_DEVT activate_ntf; /* RF discovery activation details */
469*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CE_ACTIVATED;
470*7eba2f3bSAndroid Build Coastguard Worker 
471*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_CE_DEACTIVATED_EVT */
472*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
473*7eba2f3bSAndroid Build Coastguard Worker   tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT   */
474*7eba2f3bSAndroid Build Coastguard Worker   /* NFA_DEACTIVATE_TYPE_IDLE or NFA_DEACTIVATE_TYPE_SLEEP */
475*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DEACTIVATE_TYPE type;
476*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CE_DEACTIVATED;
477*7eba2f3bSAndroid Build Coastguard Worker 
478*7eba2f3bSAndroid Build Coastguard Worker /* Structure for NFA_CE_DATA_EVT data */
479*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
480*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status; /* NFA_STATUS_OK if complete packet     */
481*7eba2f3bSAndroid Build Coastguard Worker   tNFA_HANDLE handle; /* handle from NFA_CE_REGISTERED_EVT    */
482*7eba2f3bSAndroid Build Coastguard Worker   uint8_t* p_data;    /* Data buffer                          */
483*7eba2f3bSAndroid Build Coastguard Worker   uint16_t len;       /* Length of data                       */
484*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CE_DATA;
485*7eba2f3bSAndroid Build Coastguard Worker 
486*7eba2f3bSAndroid Build Coastguard Worker /* Union of all connection callback structures */
487*7eba2f3bSAndroid Build Coastguard Worker typedef union {
488*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;           /* NFA_POLL_ENABLED_EVT                 */
489*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DISC_RESULT disc_result; /* NFA_DISC_RESULT_EVT                  */
490*7eba2f3bSAndroid Build Coastguard Worker   tNFA_ACTIVATED activated;     /* NFA_ACTIVATED_EVT                    */
491*7eba2f3bSAndroid Build Coastguard Worker   tNFA_DEACTIVATED deactivated; /* NFA_DEACTIVATED_EVT                  */
492*7eba2f3bSAndroid Build Coastguard Worker   tNFA_NDEF_DETECT ndef_detect; /* NFA_NDEF_DETECT_EVT                  */
493*7eba2f3bSAndroid Build Coastguard Worker   tNFA_TLV_DETECT tlv_detect;   /* NFA_TLV_DETECT_EVT                   */
494*7eba2f3bSAndroid Build Coastguard Worker   tNFA_RX_DATA data;            /* NFA_DATA_EVT                         */
495*7eba2f3bSAndroid Build Coastguard Worker   tNFA_CE_NDEF_WRITE_CPLT ndef_write_cplt; /* NFA_CE_NDEF_WRITE_CPLT_EVT */
496*7eba2f3bSAndroid Build Coastguard Worker   tNFA_I93_CMD_CPLT i93_cmd_cplt;   /* NFA_I93_CMD_CPLT_EVT                 */
497*7eba2f3bSAndroid Build Coastguard Worker   tNFA_CE_REGISTERED ce_registered; /* NFA_CE_REGISTERED_EVT                */
498*7eba2f3bSAndroid Build Coastguard Worker   tNFA_CE_DEREGISTERED ce_deregistered; /* NFA_CE_DEREGISTERED_EVT */
499*7eba2f3bSAndroid Build Coastguard Worker   tNFA_CE_ACTIVATED ce_activated;     /* NFA_CE_ACTIVATED_EVT                 */
500*7eba2f3bSAndroid Build Coastguard Worker   tNFA_CE_DEACTIVATED ce_deactivated; /* NFA_CE_DEACTIVATED_EVT               */
501*7eba2f3bSAndroid Build Coastguard Worker   tNFA_CE_DATA ce_data;               /* NFA_CE_DATA_EVT                      */
502*7eba2f3bSAndroid Build Coastguard Worker 
503*7eba2f3bSAndroid Build Coastguard Worker } tNFA_CONN_EVT_DATA;
504*7eba2f3bSAndroid Build Coastguard Worker 
505*7eba2f3bSAndroid Build Coastguard Worker /* NFA Connection Callback */
506*7eba2f3bSAndroid Build Coastguard Worker typedef void(tNFA_CONN_CBACK)(uint8_t event, tNFA_CONN_EVT_DATA* p_data);
507*7eba2f3bSAndroid Build Coastguard Worker 
508*7eba2f3bSAndroid Build Coastguard Worker #ifndef NFA_DM_NUM_INTERFACE_MAP
509*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_NUM_INTERFACE_MAP 3
510*7eba2f3bSAndroid Build Coastguard Worker #endif
511*7eba2f3bSAndroid Build Coastguard Worker 
512*7eba2f3bSAndroid Build Coastguard Worker /* compile-time configuration structure for the RF Discovery Frequency for each
513*7eba2f3bSAndroid Build Coastguard Worker  * technology */
514*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
515*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pa;   /* Frequency for NFC Technology A               */
516*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pb;   /* Frequency for NFC Technology B               */
517*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pf;   /* Frequency for NFC Technology F               */
518*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pi93; /* Frequency for Proprietary Technology/15693   */
519*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pbp;  /* Frequency for Proprietary Technology/B-Prime */
520*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pk;   /* Frequency for Proprietary Technology/Kovio   */
521*7eba2f3bSAndroid Build Coastguard Worker   uint8_t paa;  /* Frequency for NFC Technology A active mode   */
522*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pfa;  /* Frequency for NFC Technology F active mode   */
523*7eba2f3bSAndroid Build Coastguard Worker   uint8_t pacm; /* Frequency for NFC Technology active mode     */
524*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DM_DISC_FREQ_CFG;
525*7eba2f3bSAndroid Build Coastguard Worker 
526*7eba2f3bSAndroid Build Coastguard Worker /* definitions for tNFA_DM_CFG.presence_check_option */
527*7eba2f3bSAndroid Build Coastguard Worker /* if NDEF is not supported by the tag, use sleep/wake(last interface) */
528*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_PCO_ISO_SLEEP_WAKE 0x01
529*7eba2f3bSAndroid Build Coastguard Worker /* NFA_SendRawFrame() has been used, use empty I block for presence check
530*7eba2f3bSAndroid Build Coastguard Worker  * if this bit is not set, use read-binary on channel 3 for presence check */
531*7eba2f3bSAndroid Build Coastguard Worker #define NFA_DM_PCO_EMPTY_I_BLOCK 0x02
532*7eba2f3bSAndroid Build Coastguard Worker 
533*7eba2f3bSAndroid Build Coastguard Worker /* compile-time configuration structure */
534*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
535*7eba2f3bSAndroid Build Coastguard Worker   /* Automatic NDEF detection (when not in exclusive RF mode) */
536*7eba2f3bSAndroid Build Coastguard Worker   bool auto_detect_ndef;
537*7eba2f3bSAndroid Build Coastguard Worker   /* Automatic NDEF read (when not in exclusive RF mode)      */
538*7eba2f3bSAndroid Build Coastguard Worker   bool auto_read_ndef;
539*7eba2f3bSAndroid Build Coastguard Worker   /* Automatic presence check                                 */
540*7eba2f3bSAndroid Build Coastguard Worker   bool auto_presence_check;
541*7eba2f3bSAndroid Build Coastguard Worker   /* Use sleep/wake(last interface) for ISODEP presence check */
542*7eba2f3bSAndroid Build Coastguard Worker   uint8_t presence_check_option;
543*7eba2f3bSAndroid Build Coastguard Worker   /* Maximum time to wait for presence check response         */
544*7eba2f3bSAndroid Build Coastguard Worker   uint16_t presence_check_timeout;
545*7eba2f3bSAndroid Build Coastguard Worker   /* timeout for rf deactivate in rf listen active state      */
546*7eba2f3bSAndroid Build Coastguard Worker   uint16_t deact_ntf_listen_active_timeout;
547*7eba2f3bSAndroid Build Coastguard Worker } tNFA_DM_CFG;
548*7eba2f3bSAndroid Build Coastguard Worker 
549*7eba2f3bSAndroid Build Coastguard Worker /* compile-time configuration structure for HCI */
550*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
551*7eba2f3bSAndroid Build Coastguard Worker   /* Maximum idle(no HCP Pkt) time to wait for EE DISC REQ Ntf(s) */
552*7eba2f3bSAndroid Build Coastguard Worker   uint16_t hci_netwk_enable_timeout;
553*7eba2f3bSAndroid Build Coastguard Worker   /* Maximum time to wait for EE DISC REQ NTF(s) after HOT PLUG EVT(s) */
554*7eba2f3bSAndroid Build Coastguard Worker   uint16_t hcp_response_timeout;
555*7eba2f3bSAndroid Build Coastguard Worker   /* Number of host in the allowlist of Terminal host */
556*7eba2f3bSAndroid Build Coastguard Worker   uint8_t num_allowlist_host;
557*7eba2f3bSAndroid Build Coastguard Worker   /* Allowlist of Terminal Host */
558*7eba2f3bSAndroid Build Coastguard Worker   uint8_t* p_allowlist;
559*7eba2f3bSAndroid Build Coastguard Worker } tNFA_HCI_CFG;
560*7eba2f3bSAndroid Build Coastguard Worker 
561*7eba2f3bSAndroid Build Coastguard Worker /*
562*7eba2f3bSAndroid Build Coastguard Worker ** Exclusive RF mode listen configuration
563*7eba2f3bSAndroid Build Coastguard Worker */
564*7eba2f3bSAndroid Build Coastguard Worker 
565*7eba2f3bSAndroid Build Coastguard Worker #define NFA_LB_MAX_NFCID0_LEN 4
566*7eba2f3bSAndroid Build Coastguard Worker #define NFA_LF_MAX_SC_NFCID2 1
567*7eba2f3bSAndroid Build Coastguard Worker #define NFA_LA_MAX_HIST_BYTES 15
568*7eba2f3bSAndroid Build Coastguard Worker #define NFA_LB_MAX_H_INFO_LEN 15
569*7eba2f3bSAndroid Build Coastguard Worker 
570*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
571*7eba2f3bSAndroid Build Coastguard Worker   /*
572*7eba2f3bSAndroid Build Coastguard Worker   ** Discovery Configuration Parameters for Listen A
573*7eba2f3bSAndroid Build Coastguard Worker   */
574*7eba2f3bSAndroid Build Coastguard Worker   bool la_enable;             /* TRUE if listening A                      */
575*7eba2f3bSAndroid Build Coastguard Worker   uint8_t la_bit_frame_sdd;   /* Bit Frame SDD in Byte 1 of SENS_RES      */
576*7eba2f3bSAndroid Build Coastguard Worker   uint8_t la_platform_config; /* Platform Config in Byte 2 of SENS_RES    */
577*7eba2f3bSAndroid Build Coastguard Worker   uint8_t la_sel_info;        /* Byte of SEL_RES                          */
578*7eba2f3bSAndroid Build Coastguard Worker   uint8_t la_nfcid1_len;      /* NFCID1 (0, 4, 7 or 10 bytes)             */
579*7eba2f3bSAndroid Build Coastguard Worker   uint8_t la_nfcid1[NCI_NFCID1_MAX_LEN]; /*        if empty, NFCC will decide */
580*7eba2f3bSAndroid Build Coastguard Worker 
581*7eba2f3bSAndroid Build Coastguard Worker   /*
582*7eba2f3bSAndroid Build Coastguard Worker   ** Discovery Configuration Parameters for Listen B
583*7eba2f3bSAndroid Build Coastguard Worker   */
584*7eba2f3bSAndroid Build Coastguard Worker   bool lb_enable;        /* TRUE if listening B                      */
585*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lb_sensb_info; /* Byte 2 of Protocol Info within SENSB_RES */
586*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lb_nfcid0_len; /* NFCID0 (0, 1 or 4 bytes)                 */
587*7eba2f3bSAndroid Build Coastguard Worker   uint8_t
588*7eba2f3bSAndroid Build Coastguard Worker       lb_nfcid0[NFA_LB_MAX_NFCID0_LEN]; /*         if empty, NFCC will decide */
589*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lb_app_data[NCI_PARAM_LEN_LB_APPDATA]; /* Bytes 6 - 9 in SENSB_RES */
590*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lb_sfgi;   /* Start-Up Frame Guard Time                */
591*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lb_adc_fo; /* Byte 12 in SENSB_RES                     */
592*7eba2f3bSAndroid Build Coastguard Worker 
593*7eba2f3bSAndroid Build Coastguard Worker   /*
594*7eba2f3bSAndroid Build Coastguard Worker   ** Discovery Configuration Parameters for Listen F
595*7eba2f3bSAndroid Build Coastguard Worker   */
596*7eba2f3bSAndroid Build Coastguard Worker   bool lf_enable;           /* TRUE if listening F          */
597*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lf_con_bitr_f;    /* bit rate to listen           */
598*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lf_protocol_type; /* Supported Protocols          */
599*7eba2f3bSAndroid Build Coastguard Worker   /* bit field indicating which lf_t3t_identifier are enabled */
600*7eba2f3bSAndroid Build Coastguard Worker   uint16_t lf_t3t_flags;
601*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lf_t3t_identifier[NFA_LF_MAX_SC_NFCID2]
602*7eba2f3bSAndroid Build Coastguard Worker                            [NCI_SYSTEMCODE_LEN + NCI_NFCID2_LEN];
603*7eba2f3bSAndroid Build Coastguard Worker   /* System Code and NFCID2       */
604*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lf_t3t_pmm[NCI_T3T_PMM_LEN]; /* Bytes 10 - 17 in SENSF_RES   */
605*7eba2f3bSAndroid Build Coastguard Worker 
606*7eba2f3bSAndroid Build Coastguard Worker   /*
607*7eba2f3bSAndroid Build Coastguard Worker   ** Discovery Configuration Parameters for Listen ISO-DEP
608*7eba2f3bSAndroid Build Coastguard Worker   */
609*7eba2f3bSAndroid Build Coastguard Worker   bool li_enable;            /* TRUE if listening ISO-DEP            */
610*7eba2f3bSAndroid Build Coastguard Worker   uint8_t li_fwi;            /* Frame Waiting Time Integer           */
611*7eba2f3bSAndroid Build Coastguard Worker   uint8_t la_hist_bytes_len; /* historical bytes for Listen-A        */
612*7eba2f3bSAndroid Build Coastguard Worker   uint8_t la_hist_bytes[NFA_LA_MAX_HIST_BYTES];
613*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lb_h_info_resp_len; /* higher layer response for Listen-B   */
614*7eba2f3bSAndroid Build Coastguard Worker   uint8_t lb_h_info_resp[NFA_LB_MAX_H_INFO_LEN];
615*7eba2f3bSAndroid Build Coastguard Worker 
616*7eba2f3bSAndroid Build Coastguard Worker   /*
617*7eba2f3bSAndroid Build Coastguard Worker   ** Discovery Configuration Parameters for Listen NFC-DEP
618*7eba2f3bSAndroid Build Coastguard Worker   */
619*7eba2f3bSAndroid Build Coastguard Worker   bool ln_enable;                   /* TRUE if listening NFC-DEP            */
620*7eba2f3bSAndroid Build Coastguard Worker   uint8_t ln_wt;                    /* Waiting Time Integer                 */
621*7eba2f3bSAndroid Build Coastguard Worker   uint8_t ln_atr_res_gen_bytes_len; /* General bytes in ATR_RES             */
622*7eba2f3bSAndroid Build Coastguard Worker   uint8_t ln_atr_res_gen_bytes[NCI_MAX_GEN_BYTES_LEN];
623*7eba2f3bSAndroid Build Coastguard Worker   uint8_t ln_atr_res_config; /* Optional parameters (PPt) in ATR_RES */
624*7eba2f3bSAndroid Build Coastguard Worker } tNFA_LISTEN_CFG;
625*7eba2f3bSAndroid Build Coastguard Worker 
626*7eba2f3bSAndroid Build Coastguard Worker /* Data for NFA_UpdateRFCommParams () */
627*7eba2f3bSAndroid Build Coastguard Worker typedef tNFC_RF_COMM_PARAMS tNFA_RF_COMM_PARAMS;
628*7eba2f3bSAndroid Build Coastguard Worker 
629*7eba2f3bSAndroid Build Coastguard Worker /* RF Interface type */
630*7eba2f3bSAndroid Build Coastguard Worker #define NFA_INTERFACE_FRAME NFC_INTERFACE_FRAME
631*7eba2f3bSAndroid Build Coastguard Worker #define NFA_INTERFACE_ISO_DEP NFC_INTERFACE_ISO_DEP
632*7eba2f3bSAndroid Build Coastguard Worker #define NFA_INTERFACE_MIFARE NFC_INTERFACE_MIFARE
633*7eba2f3bSAndroid Build Coastguard Worker typedef tNFC_INTF_TYPE tNFA_INTF_TYPE;
634*7eba2f3bSAndroid Build Coastguard Worker 
635*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
636*7eba2f3bSAndroid Build Coastguard Worker ** NDEF Definitions
637*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
638*7eba2f3bSAndroid Build Coastguard Worker 
639*7eba2f3bSAndroid Build Coastguard Worker /* Definitions for tNFA_TNF (NDEF type name format ID) */
640*7eba2f3bSAndroid Build Coastguard Worker /* Empty or no type specified                       */
641*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_EMPTY NDEF_TNF_EMPTY
642*7eba2f3bSAndroid Build Coastguard Worker /* NFC Forum well-known type [NFC RTD]              */
643*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_WKT NDEF_TNF_WKT
644*7eba2f3bSAndroid Build Coastguard Worker /* Media-type as defined in RFC 2046 [RFC 2046]     */
645*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_RFC2046_MEDIA NDEF_TNF_MEDIA
646*7eba2f3bSAndroid Build Coastguard Worker /* Absolute URI as defined in RFC 3986 [RFC 3986]   */
647*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_RFC3986_URI NDEF_TNF_URI
648*7eba2f3bSAndroid Build Coastguard Worker /* NFC Forum external type [NFC RTD]                */
649*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_EXTERNAL NDEF_TNF_EXT
650*7eba2f3bSAndroid Build Coastguard Worker /* Unknown                                          */
651*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_UNKNOWN NDEF_TNF_UNKNOWN
652*7eba2f3bSAndroid Build Coastguard Worker /* Unchanged                                        */
653*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_UNCHANGED NDEF_TNF_UNCHANGED
654*7eba2f3bSAndroid Build Coastguard Worker /* Reserved                                         */
655*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_RESERVED NDEF_TNF_RESERVED
656*7eba2f3bSAndroid Build Coastguard Worker /* Used to register default NDEF type handler       */
657*7eba2f3bSAndroid Build Coastguard Worker #define NFA_TNF_DEFAULT 0xFF
658*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_TNF;
659*7eba2f3bSAndroid Build Coastguard Worker 
660*7eba2f3bSAndroid Build Coastguard Worker /* Definitions for tNFA_NDEF_URI_ID (Frequently used prefixes. For additional
661*7eba2f3bSAndroid Build Coastguard Worker  * values, see [NFC RTD URI] */
662*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_URI_ID_ABSOLUTE 0x00 /* Unabridged URI.  */
663*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_URI_ID_HTTP 0x03     /* http://          */
664*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_URI_ID_HTTPS 0x04    /* https://         */
665*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_URI_ID_TEL 0x05      /* tel:             */
666*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_URI_ID_MAILTO 0x06   /* mailto:          */
667*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_URI_ID_FTP 0x0D      /* ftp://           */
668*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_URI_ID_FILE 0x1D     /* file://          */
669*7eba2f3bSAndroid Build Coastguard Worker 
670*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_NDEF_URI_ID;
671*7eba2f3bSAndroid Build Coastguard Worker 
672*7eba2f3bSAndroid Build Coastguard Worker /* Events for tNFA_NDEF_CBACK */
673*7eba2f3bSAndroid Build Coastguard Worker /* NDEF record type registered. (In response to NFA_RegisterNDefTypeHandler) */
674*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_REGISTER_EVT 0
675*7eba2f3bSAndroid Build Coastguard Worker /* Received an NDEF message with the registered type. See [tNFA_NDEF_DATA] */
676*7eba2f3bSAndroid Build Coastguard Worker #define NFA_NDEF_DATA_EVT 1
677*7eba2f3bSAndroid Build Coastguard Worker typedef uint8_t tNFA_NDEF_EVT;
678*7eba2f3bSAndroid Build Coastguard Worker 
679*7eba2f3bSAndroid Build Coastguard Worker /* Structure for NFA_NDEF_REGISTER_EVT event data */
680*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
681*7eba2f3bSAndroid Build Coastguard Worker   tNFA_STATUS status;           /* Status of the registration               */
682*7eba2f3bSAndroid Build Coastguard Worker   tNFA_HANDLE ndef_type_handle; /* Handle for this NDEF type registration.  */
683*7eba2f3bSAndroid Build Coastguard Worker } tNFA_NDEF_REGISTER;
684*7eba2f3bSAndroid Build Coastguard Worker 
685*7eba2f3bSAndroid Build Coastguard Worker /* Structure for NFA_NDEF_DATA_EVT event data */
686*7eba2f3bSAndroid Build Coastguard Worker typedef struct {
687*7eba2f3bSAndroid Build Coastguard Worker   tNFA_HANDLE ndef_type_handle; /* Handle for NDEF type registration.   */
688*7eba2f3bSAndroid Build Coastguard Worker   uint8_t* p_data;              /* Data buffer                          */
689*7eba2f3bSAndroid Build Coastguard Worker   uint32_t len;                 /* Length of data                       */
690*7eba2f3bSAndroid Build Coastguard Worker } tNFA_NDEF_DATA;
691*7eba2f3bSAndroid Build Coastguard Worker 
692*7eba2f3bSAndroid Build Coastguard Worker /* Union of all NDEF callback structures */
693*7eba2f3bSAndroid Build Coastguard Worker typedef union {
694*7eba2f3bSAndroid Build Coastguard Worker   /* Structure for NFA_NDEF_REGISTER_EVT event data */
695*7eba2f3bSAndroid Build Coastguard Worker   tNFA_NDEF_REGISTER ndef_reg;
696*7eba2f3bSAndroid Build Coastguard Worker   /* Structure for NFA_NDEF_DATA_EVT event data */
697*7eba2f3bSAndroid Build Coastguard Worker   tNFA_NDEF_DATA ndef_data;
698*7eba2f3bSAndroid Build Coastguard Worker } tNFA_NDEF_EVT_DATA;
699*7eba2f3bSAndroid Build Coastguard Worker 
700*7eba2f3bSAndroid Build Coastguard Worker /* NFA_NDEF callback */
701*7eba2f3bSAndroid Build Coastguard Worker typedef void(tNFA_NDEF_CBACK)(tNFA_NDEF_EVT event, tNFA_NDEF_EVT_DATA* p_data);
702*7eba2f3bSAndroid Build Coastguard Worker 
703*7eba2f3bSAndroid Build Coastguard Worker /* NFA VSC Callback */
704*7eba2f3bSAndroid Build Coastguard Worker typedef void(tNFA_VSC_CBACK)(uint8_t event, uint16_t param_len,
705*7eba2f3bSAndroid Build Coastguard Worker                              uint8_t* p_param);
706*7eba2f3bSAndroid Build Coastguard Worker /* Modes used by setNfcControllerAlwaysOn */
707*7eba2f3bSAndroid Build Coastguard Worker #define ENABLE_MODE_DEFAULT 1
708*7eba2f3bSAndroid Build Coastguard Worker #define ENABLE_MODE_TRANSPARENT 2
709*7eba2f3bSAndroid Build Coastguard Worker #define ENABLE_MODE_EE 3
710*7eba2f3bSAndroid Build Coastguard Worker 
711*7eba2f3bSAndroid Build Coastguard Worker /*****************************************************************************
712*7eba2f3bSAndroid Build Coastguard Worker **  External Function Declarations
713*7eba2f3bSAndroid Build Coastguard Worker *****************************************************************************/
714*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
715*7eba2f3bSAndroid Build Coastguard Worker **
716*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_SetNfccMode
717*7eba2f3bSAndroid Build Coastguard Worker **
718*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function sets the control blocks nfcc mode
719*7eba2f3bSAndroid Build Coastguard Worker **
720*7eba2f3bSAndroid Build Coastguard Worker **                  mode ENABLE_MODE_DEFAULT or ENABLE_MODE_TRANSPARENT
721*7eba2f3bSAndroid Build Coastguard Worker **                  or ENABLE_MODE_EE
722*7eba2f3bSAndroid Build Coastguard Worker **
723*7eba2f3bSAndroid Build Coastguard Worker ** Returns          none
724*7eba2f3bSAndroid Build Coastguard Worker **
725*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
726*7eba2f3bSAndroid Build Coastguard Worker extern void NFA_SetNfccMode(uint8_t mode);
727*7eba2f3bSAndroid Build Coastguard Worker 
728*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
729*7eba2f3bSAndroid Build Coastguard Worker **
730*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_Init
731*7eba2f3bSAndroid Build Coastguard Worker **
732*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function initializes control blocks for NFA
733*7eba2f3bSAndroid Build Coastguard Worker **
734*7eba2f3bSAndroid Build Coastguard Worker **                  p_hal_entry_tbl points to a table of HAL entry points
735*7eba2f3bSAndroid Build Coastguard Worker **
736*7eba2f3bSAndroid Build Coastguard Worker **                  NOTE: the buffer that p_hal_entry_tbl points must be
737*7eba2f3bSAndroid Build Coastguard Worker **                  persistent until NFA is disabled.
738*7eba2f3bSAndroid Build Coastguard Worker **
739*7eba2f3bSAndroid Build Coastguard Worker **
740*7eba2f3bSAndroid Build Coastguard Worker ** Returns          none
741*7eba2f3bSAndroid Build Coastguard Worker **
742*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
743*7eba2f3bSAndroid Build Coastguard Worker extern void NFA_Init(tHAL_NFC_ENTRY* p_hal_entry_tbl);
744*7eba2f3bSAndroid Build Coastguard Worker 
745*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
746*7eba2f3bSAndroid Build Coastguard Worker **
747*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_Partial_Init
748*7eba2f3bSAndroid Build Coastguard Worker **
749*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function initializes control blocks for NFA based on
750*7eba2f3bSAndroid Build Coastguard Worker **                  mode
751*7eba2f3bSAndroid Build Coastguard Worker **
752*7eba2f3bSAndroid Build Coastguard Worker **                  p_hal_entry_tbl points to a table of HAL entry points
753*7eba2f3bSAndroid Build Coastguard Worker **                  mode ENABLE_MODE_DEFAULT or ENABLE_MODE_TRANSPARENT
754*7eba2f3bSAndroid Build Coastguard Worker **                  or ENABLE_MODE_EE
755*7eba2f3bSAndroid Build Coastguard Worker **
756*7eba2f3bSAndroid Build Coastguard Worker **                  NOTE: the buffer that p_hal_entry_tbl points must be
757*7eba2f3bSAndroid Build Coastguard Worker **                  persistent until NFA is disabled.
758*7eba2f3bSAndroid Build Coastguard Worker **
759*7eba2f3bSAndroid Build Coastguard Worker **
760*7eba2f3bSAndroid Build Coastguard Worker ** Returns          none
761*7eba2f3bSAndroid Build Coastguard Worker **
762*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
763*7eba2f3bSAndroid Build Coastguard Worker extern void NFA_Partial_Init(tHAL_NFC_ENTRY* p_hal_entry_tbl, uint8_t mode);
764*7eba2f3bSAndroid Build Coastguard Worker 
765*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
766*7eba2f3bSAndroid Build Coastguard Worker **
767*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_Enable
768*7eba2f3bSAndroid Build Coastguard Worker **
769*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function enables NFC. Prior to calling NFA_Enable,
770*7eba2f3bSAndroid Build Coastguard Worker **                  the NFCC must be powered up, and ready to receive commands.
771*7eba2f3bSAndroid Build Coastguard Worker **                  This function enables the tasks needed by NFC, opens the NCI
772*7eba2f3bSAndroid Build Coastguard Worker **                  transport, resets the NFC controller, downloads patches to
773*7eba2f3bSAndroid Build Coastguard Worker **                  the NFCC (if necessary), and initializes the NFC subsystems.
774*7eba2f3bSAndroid Build Coastguard Worker **
775*7eba2f3bSAndroid Build Coastguard Worker **                  This function should only be called once - typically when
776*7eba2f3bSAndroid Build Coastguard Worker **                  NFC is enabled during boot-up, or when NFC is enabled from a
777*7eba2f3bSAndroid Build Coastguard Worker **                  settings UI. Subsequent calls to NFA_Enable while NFA is
778*7eba2f3bSAndroid Build Coastguard Worker **                  enabling or enabled will be ignored. When the NFC startup
779*7eba2f3bSAndroid Build Coastguard Worker **                  procedure is completed, an NFA_DM_ENABLE_EVT is returned to
780*7eba2f3bSAndroid Build Coastguard Worker **                  the application using the tNFA_DM_CBACK.
781*7eba2f3bSAndroid Build Coastguard Worker **
782*7eba2f3bSAndroid Build Coastguard Worker **                  The tNFA_CONN_CBACK parameter is used to register a callback
783*7eba2f3bSAndroid Build Coastguard Worker **                  for polling and card emulation events.
784*7eba2f3bSAndroid Build Coastguard Worker **
785*7eba2f3bSAndroid Build Coastguard Worker **
786*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
787*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
788*7eba2f3bSAndroid Build Coastguard Worker **
789*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
790*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_Enable(tNFA_DM_CBACK* p_dm_cback,
791*7eba2f3bSAndroid Build Coastguard Worker                               tNFA_CONN_CBACK* p_conn_cback);
792*7eba2f3bSAndroid Build Coastguard Worker 
793*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
794*7eba2f3bSAndroid Build Coastguard Worker **
795*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_Disable
796*7eba2f3bSAndroid Build Coastguard Worker **
797*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function is called to shutdown NFC. The tasks for NFC
798*7eba2f3bSAndroid Build Coastguard Worker **                  are terminated, and clean up routines are performed. This
799*7eba2f3bSAndroid Build Coastguard Worker **                  function is typically called during platform shut-down, or
800*7eba2f3bSAndroid Build Coastguard Worker **                  when NFC is disabled from a settings UI. When the NFC
801*7eba2f3bSAndroid Build Coastguard Worker **                  shutdown procedure is completed, an NFA_DM_DISABLE_EVT is
802*7eba2f3bSAndroid Build Coastguard Worker **                  returned to the application using the tNFA_DM_CBACK.
803*7eba2f3bSAndroid Build Coastguard Worker **
804*7eba2f3bSAndroid Build Coastguard Worker **                  The platform should wait until the NFC_DISABLE_REVT is
805*7eba2f3bSAndroid Build Coastguard Worker **                  received before powering down the NFC chip and NCI
806*7eba2f3bSAndroid Build Coastguard Worker **                  transport. This is required to so that NFA can gracefully
807*7eba2f3bSAndroid Build Coastguard Worker **                  shut down any open connections.
808*7eba2f3bSAndroid Build Coastguard Worker **
809*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
810*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
811*7eba2f3bSAndroid Build Coastguard Worker **
812*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
813*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_Disable(bool graceful);
814*7eba2f3bSAndroid Build Coastguard Worker 
815*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
816*7eba2f3bSAndroid Build Coastguard Worker **
817*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_SetConfig
818*7eba2f3bSAndroid Build Coastguard Worker **
819*7eba2f3bSAndroid Build Coastguard Worker ** Description      Set the configuration parameters to NFCC. The result is
820*7eba2f3bSAndroid Build Coastguard Worker **                  reported with an NFA_DM_SET_CONFIG_EVT in the tNFA_DM_CBACK
821*7eba2f3bSAndroid Build Coastguard Worker **                  callback.
822*7eba2f3bSAndroid Build Coastguard Worker **
823*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If RF discovery is started,
824*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
825*7eba2f3bSAndroid Build Coastguard Worker **                  happen before calling this function. Most Configuration
826*7eba2f3bSAndroid Build Coastguard Worker **                  parameters are related to RF discovery.
827*7eba2f3bSAndroid Build Coastguard Worker **
828*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
829*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_BUSY if previous setting is on-going
830*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
831*7eba2f3bSAndroid Build Coastguard Worker **
832*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
833*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_SetConfig(tNFA_PMID param_id, uint8_t length,
834*7eba2f3bSAndroid Build Coastguard Worker                                  uint8_t* p_data);
835*7eba2f3bSAndroid Build Coastguard Worker 
836*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
837*7eba2f3bSAndroid Build Coastguard Worker **
838*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_GetConfig
839*7eba2f3bSAndroid Build Coastguard Worker **
840*7eba2f3bSAndroid Build Coastguard Worker ** Description      Get the configuration parameters from NFCC. The result is
841*7eba2f3bSAndroid Build Coastguard Worker **                  reported with an NFA_DM_GET_CONFIG_EVT in the tNFA_DM_CBACK
842*7eba2f3bSAndroid Build Coastguard Worker **                  callback.
843*7eba2f3bSAndroid Build Coastguard Worker **
844*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
845*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
846*7eba2f3bSAndroid Build Coastguard Worker **
847*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
848*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_GetConfig(uint8_t num_ids, tNFA_PMID* p_param_ids);
849*7eba2f3bSAndroid Build Coastguard Worker 
850*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
851*7eba2f3bSAndroid Build Coastguard Worker **
852*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_RequestExclusiveRfControl
853*7eba2f3bSAndroid Build Coastguard Worker **
854*7eba2f3bSAndroid Build Coastguard Worker ** Description      Request exclusive control of NFC.
855*7eba2f3bSAndroid Build Coastguard Worker **                  - Previous behavior (polling/tag reading, DH card emulation)
856*7eba2f3bSAndroid Build Coastguard Worker **                    will be suspended .
857*7eba2f3bSAndroid Build Coastguard Worker **                  - Polling and listening will be done based on the specified
858*7eba2f3bSAndroid Build Coastguard Worker **                    params
859*7eba2f3bSAndroid Build Coastguard Worker **
860*7eba2f3bSAndroid Build Coastguard Worker **                  The NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT event of
861*7eba2f3bSAndroid Build Coastguard Worker **                  tNFA_CONN_CBACK indicates the status of the operation.
862*7eba2f3bSAndroid Build Coastguard Worker **
863*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT indicates link
864*7eba2f3bSAndroid Build Coastguard Worker **                  activation/deactivation.
865*7eba2f3bSAndroid Build Coastguard Worker **
866*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_SendRawFrame is used to send data to the peer.
867*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_DATA_EVT indicates data from the peer.
868*7eba2f3bSAndroid Build Coastguard Worker **
869*7eba2f3bSAndroid Build Coastguard Worker **                  If a tag is activated, then the NFA_RW APIs may be used to
870*7eba2f3bSAndroid Build Coastguard Worker **                  send commands to the tag. Incoming NDEF messages are sent to
871*7eba2f3bSAndroid Build Coastguard Worker **                  the NDEF callback.
872*7eba2f3bSAndroid Build Coastguard Worker **
873*7eba2f3bSAndroid Build Coastguard Worker **                  Once exclusive RF control has started, NFA will not activate
874*7eba2f3bSAndroid Build Coastguard Worker **                  LLCP internally. The application has exclusive control of
875*7eba2f3bSAndroid Build Coastguard Worker **                  the link.
876*7eba2f3bSAndroid Build Coastguard Worker **
877*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If RF discovery is started,
878*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
879*7eba2f3bSAndroid Build Coastguard Worker **                  happen before calling this function
880*7eba2f3bSAndroid Build Coastguard Worker **
881*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
882*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
883*7eba2f3bSAndroid Build Coastguard Worker **
884*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
885*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_RequestExclusiveRfControl(tNFA_TECHNOLOGY_MASK poll_mask,
886*7eba2f3bSAndroid Build Coastguard Worker                                                  tNFA_LISTEN_CFG* p_listen_cfg,
887*7eba2f3bSAndroid Build Coastguard Worker                                                  tNFA_CONN_CBACK* p_conn_cback,
888*7eba2f3bSAndroid Build Coastguard Worker                                                  tNFA_NDEF_CBACK* p_ndef_cback);
889*7eba2f3bSAndroid Build Coastguard Worker 
890*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
891*7eba2f3bSAndroid Build Coastguard Worker **
892*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_ReleaseExclusiveRfControl
893*7eba2f3bSAndroid Build Coastguard Worker **
894*7eba2f3bSAndroid Build Coastguard Worker ** Description      Release exclusive control of NFC. Once released, behavior
895*7eba2f3bSAndroid Build Coastguard Worker **                  prior to obtaining exclusive RF control will resume.
896*7eba2f3bSAndroid Build Coastguard Worker **
897*7eba2f3bSAndroid Build Coastguard Worker Note??
898*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
899*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
900*7eba2f3bSAndroid Build Coastguard Worker **
901*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
902*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_ReleaseExclusiveRfControl(void);
903*7eba2f3bSAndroid Build Coastguard Worker 
904*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
905*7eba2f3bSAndroid Build Coastguard Worker **
906*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_EnablePolling
907*7eba2f3bSAndroid Build Coastguard Worker **
908*7eba2f3bSAndroid Build Coastguard Worker ** Description      Enable polling for technologies specified by poll_mask.
909*7eba2f3bSAndroid Build Coastguard Worker **
910*7eba2f3bSAndroid Build Coastguard Worker **                  The following events (notified using the connection
911*7eba2f3bSAndroid Build Coastguard Worker **                  callback registered with NFA_Enable) are generated during
912*7eba2f3bSAndroid Build Coastguard Worker **                  polling:
913*7eba2f3bSAndroid Build Coastguard Worker **
914*7eba2f3bSAndroid Build Coastguard Worker **                  - NFA_POLL_ENABLED_EVT indicates whether or not polling
915*7eba2f3bSAndroid Build Coastguard Worker **                    successfully enabled.
916*7eba2f3bSAndroid Build Coastguard Worker **                  - NFA_DISC_RESULT_EVT indicates there are more than one
917*7eba2f3bSAndroid Build Coastguard Worker **                    devices, so application must select one of tags by calling
918*7eba2f3bSAndroid Build Coastguard Worker **                    NFA_Select().
919*7eba2f3bSAndroid Build Coastguard Worker **                  - NFA_SELECT_RESULT_EVT indicates whether previous selection
920*7eba2f3bSAndroid Build Coastguard Worker **                    was successful or not. If it was failed then application
921*7eba2f3bSAndroid Build Coastguard Worker **                    must select again or deactivate by calling
922*7eba2f3bSAndroid Build Coastguard Worker **                    NFA_Deactivate().
923*7eba2f3bSAndroid Build Coastguard Worker **                  - NFA_ACTIVATED_EVT is generated when an NFC link is
924*7eba2f3bSAndroid Build Coastguard Worker **                    activated.
925*7eba2f3bSAndroid Build Coastguard Worker **                  - NFA_NDEF_DETECT_EVT is generated if tag is activated
926*7eba2f3bSAndroid Build Coastguard Worker **                  - NFA_DEACTIVATED_EVT will be returned after deactivating
927*7eba2f3bSAndroid Build Coastguard Worker **                    NFC link.
928*7eba2f3bSAndroid Build Coastguard Worker **
929*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If RF discovery is started,
930*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
931*7eba2f3bSAndroid Build Coastguard Worker **                  happen before calling this function
932*7eba2f3bSAndroid Build Coastguard Worker **
933*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
934*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
935*7eba2f3bSAndroid Build Coastguard Worker **
936*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
937*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_EnablePolling(tNFA_TECHNOLOGY_MASK poll_mask);
938*7eba2f3bSAndroid Build Coastguard Worker 
939*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
940*7eba2f3bSAndroid Build Coastguard Worker **
941*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_DisablePolling
942*7eba2f3bSAndroid Build Coastguard Worker **
943*7eba2f3bSAndroid Build Coastguard Worker ** Description      Disable polling
944*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_POLL_DISABLED_EVT will be returned after stopping
945*7eba2f3bSAndroid Build Coastguard Worker **                  polling.
946*7eba2f3bSAndroid Build Coastguard Worker **
947*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If RF discovery is started,
948*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
949*7eba2f3bSAndroid Build Coastguard Worker **                  happen before calling this function
950*7eba2f3bSAndroid Build Coastguard Worker **
951*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
952*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
953*7eba2f3bSAndroid Build Coastguard Worker **
954*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
955*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_DisablePolling(void);
956*7eba2f3bSAndroid Build Coastguard Worker 
957*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
958*7eba2f3bSAndroid Build Coastguard Worker **
959*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_EnableListening
960*7eba2f3bSAndroid Build Coastguard Worker **
961*7eba2f3bSAndroid Build Coastguard Worker ** Description      Enable listening.
962*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_LISTEN_ENABLED_EVT will be returned after listening is
963*7eba2f3bSAndroid Build Coastguard Worker **                  allowed.
964*7eba2f3bSAndroid Build Coastguard Worker **
965*7eba2f3bSAndroid Build Coastguard Worker **                  The actual listening technologies are specified by other NFA
966*7eba2f3bSAndroid Build Coastguard Worker **                  API functions. Such functions include (but not limited to)
967*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_CeConfigureUiccListenTech.
968*7eba2f3bSAndroid Build Coastguard Worker **                  If NFA_DisableListening () is called to ignore the listening
969*7eba2f3bSAndroid Build Coastguard Worker **                  technologies, NFA_EnableListening () is called to restore
970*7eba2f3bSAndroid Build Coastguard Worker **                  the listening technologies set by these functions.
971*7eba2f3bSAndroid Build Coastguard Worker **
972*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If RF discovery is started,
973*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
974*7eba2f3bSAndroid Build Coastguard Worker **                  happen before calling this function
975*7eba2f3bSAndroid Build Coastguard Worker **
976*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
977*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
978*7eba2f3bSAndroid Build Coastguard Worker **
979*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
980*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_EnableListening(void);
981*7eba2f3bSAndroid Build Coastguard Worker 
982*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
983*7eba2f3bSAndroid Build Coastguard Worker **
984*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_DisableListening
985*7eba2f3bSAndroid Build Coastguard Worker **
986*7eba2f3bSAndroid Build Coastguard Worker ** Description      Disable listening
987*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_LISTEN_DISABLED_EVT will be returned after stopping
988*7eba2f3bSAndroid Build Coastguard Worker **                  listening. This function is called to exclude listen at RF
989*7eba2f3bSAndroid Build Coastguard Worker **                  discovery.
990*7eba2f3bSAndroid Build Coastguard Worker **
991*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If RF discovery is started,
992*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
993*7eba2f3bSAndroid Build Coastguard Worker **                  happen before calling this function
994*7eba2f3bSAndroid Build Coastguard Worker **
995*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
996*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
997*7eba2f3bSAndroid Build Coastguard Worker **
998*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
999*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_DisableListening(void);
1000*7eba2f3bSAndroid Build Coastguard Worker 
1001*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1002*7eba2f3bSAndroid Build Coastguard Worker **
1003*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_StartRfDiscovery
1004*7eba2f3bSAndroid Build Coastguard Worker **
1005*7eba2f3bSAndroid Build Coastguard Worker ** Description      Start RF discovery
1006*7eba2f3bSAndroid Build Coastguard Worker **                  RF discovery parameters shall be set by other APIs.
1007*7eba2f3bSAndroid Build Coastguard Worker **
1008*7eba2f3bSAndroid Build Coastguard Worker **                  An NFA_RF_DISCOVERY_STARTED_EVT indicates whether starting
1009*7eba2f3bSAndroid Build Coastguard Worker **                  was successful or not.
1010*7eba2f3bSAndroid Build Coastguard Worker **
1011*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1012*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1013*7eba2f3bSAndroid Build Coastguard Worker **
1014*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1015*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_StartRfDiscovery(void);
1016*7eba2f3bSAndroid Build Coastguard Worker 
1017*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1018*7eba2f3bSAndroid Build Coastguard Worker **
1019*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_StopRfDiscovery
1020*7eba2f3bSAndroid Build Coastguard Worker **
1021*7eba2f3bSAndroid Build Coastguard Worker ** Description      Stop RF discovery
1022*7eba2f3bSAndroid Build Coastguard Worker **
1023*7eba2f3bSAndroid Build Coastguard Worker **                  An NFA_RF_DISCOVERY_STOPPED_EVT indicates whether stopping
1024*7eba2f3bSAndroid Build Coastguard Worker **                  was successful or not.
1025*7eba2f3bSAndroid Build Coastguard Worker **
1026*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1027*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1028*7eba2f3bSAndroid Build Coastguard Worker **
1029*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1030*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_StopRfDiscovery(void);
1031*7eba2f3bSAndroid Build Coastguard Worker 
1032*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1033*7eba2f3bSAndroid Build Coastguard Worker **
1034*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_SetRfDiscoveryDuration
1035*7eba2f3bSAndroid Build Coastguard Worker **
1036*7eba2f3bSAndroid Build Coastguard Worker ** Description      Set the duration of the single discovery period in [ms].
1037*7eba2f3bSAndroid Build Coastguard Worker **                  Allowable range: 0 ms to 0xFFFF ms.
1038*7eba2f3bSAndroid Build Coastguard Worker **
1039*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If discovery is already started, the application should
1040*7eba2f3bSAndroid Build Coastguard Worker **                  call NFA_StopRfDiscovery prior to calling
1041*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_SetRfDiscoveryDuration, and then call
1042*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StartRfDiscovery afterwards to restart discovery using
1043*7eba2f3bSAndroid Build Coastguard Worker **                  the new duration.
1044*7eba2f3bSAndroid Build Coastguard Worker **
1045*7eba2f3bSAndroid Build Coastguard Worker ** Returns:
1046*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_OK, if command accepted
1047*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED: otherwise
1048*7eba2f3bSAndroid Build Coastguard Worker **
1049*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1050*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_SetRfDiscoveryDuration(uint16_t discovery_period_ms);
1051*7eba2f3bSAndroid Build Coastguard Worker 
1052*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1053*7eba2f3bSAndroid Build Coastguard Worker **
1054*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_Select
1055*7eba2f3bSAndroid Build Coastguard Worker **
1056*7eba2f3bSAndroid Build Coastguard Worker ** Description      Select one from detected devices by NFA_DISC_RESULT_EVT
1057*7eba2f3bSAndroid Build Coastguard Worker **                  after the last discovery result is received.
1058*7eba2f3bSAndroid Build Coastguard Worker **                  An NFA_SELECT_RESULT_EVT indicates whether selection was
1059*7eba2f3bSAndroid Build Coastguard Worker **                  successful or not. If failed then application must select
1060*7eba2f3bSAndroid Build Coastguard Worker **                  again or deactivate by NFA_Deactivate ().
1061*7eba2f3bSAndroid Build Coastguard Worker **
1062*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1063*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_INVALID_PARAM if RF interface is not matched
1064*7eba2f3bSAndroid Build Coastguard Worker **                  protocol
1065*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1066*7eba2f3bSAndroid Build Coastguard Worker **
1067*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1068*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_Select(uint8_t rf_disc_id, tNFA_NFC_PROTOCOL protocol,
1069*7eba2f3bSAndroid Build Coastguard Worker                               tNFA_INTF_TYPE rf_interface);
1070*7eba2f3bSAndroid Build Coastguard Worker 
1071*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1072*7eba2f3bSAndroid Build Coastguard Worker **
1073*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_UpdateRFCommParams
1074*7eba2f3bSAndroid Build Coastguard Worker **
1075*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function is called to update RF Communication
1076*7eba2f3bSAndroid Build Coastguard Worker **                  parameters once the Frame RF Interface has been activated.
1077*7eba2f3bSAndroid Build Coastguard Worker **
1078*7eba2f3bSAndroid Build Coastguard Worker **                  An NFA_UPDATE_RF_PARAM_RESULT_EVT indicates whether updating
1079*7eba2f3bSAndroid Build Coastguard Worker **                  was successful or not.
1080*7eba2f3bSAndroid Build Coastguard Worker **
1081*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1082*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1083*7eba2f3bSAndroid Build Coastguard Worker **
1084*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1085*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_UpdateRFCommParams(tNFA_RF_COMM_PARAMS* p_params);
1086*7eba2f3bSAndroid Build Coastguard Worker 
1087*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1088*7eba2f3bSAndroid Build Coastguard Worker **
1089*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_Deactivate
1090*7eba2f3bSAndroid Build Coastguard Worker **
1091*7eba2f3bSAndroid Build Coastguard Worker ** Description
1092*7eba2f3bSAndroid Build Coastguard Worker **                  If sleep_mode=TRUE:
1093*7eba2f3bSAndroid Build Coastguard Worker **                      Deselect the activated device by deactivating into sleep
1094*7eba2f3bSAndroid Build Coastguard Worker **                      mode.
1095*7eba2f3bSAndroid Build Coastguard Worker **
1096*7eba2f3bSAndroid Build Coastguard Worker **                      An NFA_DEACTIVATE_FAIL_EVT indicates that selection was
1097*7eba2f3bSAndroid Build Coastguard Worker **                      not successful. Application can select another
1098*7eba2f3bSAndroid Build Coastguard Worker **                      discovered device or deactivate by NFA_Deactivate ()
1099*7eba2f3bSAndroid Build Coastguard Worker **                      after receiving NFA_DEACTIVATED_EVT.
1100*7eba2f3bSAndroid Build Coastguard Worker **
1101*7eba2f3bSAndroid Build Coastguard Worker **                      Deactivating to sleep mode is not allowed when NFCC is
1102*7eba2f3bSAndroid Build Coastguard Worker **                      in wait-for-host-select mode, or in listen-sleep states;
1103*7eba2f3bSAndroid Build Coastguard Worker **                      NFA will deactivate to idle or discovery state for these
1104*7eba2f3bSAndroid Build Coastguard Worker **                      cases respectively.
1105*7eba2f3bSAndroid Build Coastguard Worker **
1106*7eba2f3bSAndroid Build Coastguard Worker **
1107*7eba2f3bSAndroid Build Coastguard Worker **                  If sleep_mode=FALSE:
1108*7eba2f3bSAndroid Build Coastguard Worker **                      Deactivate the connection (e.g. as a result of presence
1109*7eba2f3bSAndroid Build Coastguard Worker **                      check failure) NFA_DEACTIVATED_EVT will indicate that
1110*7eba2f3bSAndroid Build Coastguard Worker **                      link is deactivated. Polling/listening will resume
1111*7eba2f3bSAndroid Build Coastguard Worker **                      (unless the nfcc is in wait_for-all-discoveries state)
1112*7eba2f3bSAndroid Build Coastguard Worker **
1113*7eba2f3bSAndroid Build Coastguard Worker **
1114*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1115*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1116*7eba2f3bSAndroid Build Coastguard Worker **
1117*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1118*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_Deactivate(bool sleep_mode);
1119*7eba2f3bSAndroid Build Coastguard Worker 
1120*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1121*7eba2f3bSAndroid Build Coastguard Worker **
1122*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_SendRawFrame
1123*7eba2f3bSAndroid Build Coastguard Worker **
1124*7eba2f3bSAndroid Build Coastguard Worker ** Description      Send a raw frame over the activated interface with the NFCC.
1125*7eba2f3bSAndroid Build Coastguard Worker **                  This function can only be called after NFC link is
1126*7eba2f3bSAndroid Build Coastguard Worker **                  activated.
1127*7eba2f3bSAndroid Build Coastguard Worker **
1128*7eba2f3bSAndroid Build Coastguard Worker **                  If the activated interface is a tag and auto-presence check
1129*7eba2f3bSAndroid Build Coastguard Worker **                  is enabled then presence_check_start_delay can be used to
1130*7eba2f3bSAndroid Build Coastguard Worker **                  indicate the delay in msec after which the next auto
1131*7eba2f3bSAndroid Build Coastguard Worker **                  presence check command can be sent.
1132*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_DM_DEFAULT_PRESENCE_CHECK_START_DELAY can be used as the
1133*7eba2f3bSAndroid Build Coastguard Worker **                  default value for the delay.
1134*7eba2f3bSAndroid Build Coastguard Worker **
1135*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1136*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1137*7eba2f3bSAndroid Build Coastguard Worker **
1138*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1139*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_SendRawFrame(uint8_t* p_raw_data, uint16_t data_len,
1140*7eba2f3bSAndroid Build Coastguard Worker                                     uint16_t presence_check_start_delay);
1141*7eba2f3bSAndroid Build Coastguard Worker 
1142*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1143*7eba2f3bSAndroid Build Coastguard Worker ** NDEF APIs
1144*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1145*7eba2f3bSAndroid Build Coastguard Worker 
1146*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1147*7eba2f3bSAndroid Build Coastguard Worker **
1148*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_RegisterNDefTypeHandler
1149*7eba2f3bSAndroid Build Coastguard Worker **
1150*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function allows the applications to register for
1151*7eba2f3bSAndroid Build Coastguard Worker **                  specific types of NDEF records. When NDEF records are
1152*7eba2f3bSAndroid Build Coastguard Worker **                  received, NFA will parse the record-type field, and pass
1153*7eba2f3bSAndroid Build Coastguard Worker **                  the record to the registered tNFA_NDEF_CBACK.
1154*7eba2f3bSAndroid Build Coastguard Worker **
1155*7eba2f3bSAndroid Build Coastguard Worker **                  For records types which were not registered, the record will
1156*7eba2f3bSAndroid Build Coastguard Worker **                  be sent to the default handler. A default type-handler may
1157*7eba2f3bSAndroid Build Coastguard Worker **                  be registered by calling this NFA_RegisterNDefTypeHandler
1158*7eba2f3bSAndroid Build Coastguard Worker **                  with tnf=NFA_TNF_DEFAULT. In this case, all un-registered
1159*7eba2f3bSAndroid Build Coastguard Worker **                  record types will be sent to the callback. Only one default
1160*7eba2f3bSAndroid Build Coastguard Worker **                  handler may be registered at a time.
1161*7eba2f3bSAndroid Build Coastguard Worker **
1162*7eba2f3bSAndroid Build Coastguard Worker **                  An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK
1163*7eba2f3bSAndroid Build Coastguard Worker **                  to indicate that registration was successful, and provide a
1164*7eba2f3bSAndroid Build Coastguard Worker **                  handle for this record type.
1165*7eba2f3bSAndroid Build Coastguard Worker **
1166*7eba2f3bSAndroid Build Coastguard Worker **
1167*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1168*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1169*7eba2f3bSAndroid Build Coastguard Worker **
1170*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1171*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_RegisterNDefTypeHandler(bool handle_whole_message,
1172*7eba2f3bSAndroid Build Coastguard Worker                                                tNFA_TNF tnf,
1173*7eba2f3bSAndroid Build Coastguard Worker                                                uint8_t* p_type_name,
1174*7eba2f3bSAndroid Build Coastguard Worker                                                uint8_t type_name_len,
1175*7eba2f3bSAndroid Build Coastguard Worker                                                tNFA_NDEF_CBACK* p_ndef_cback);
1176*7eba2f3bSAndroid Build Coastguard Worker 
1177*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1178*7eba2f3bSAndroid Build Coastguard Worker **
1179*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_RegisterNDefUriHandler
1180*7eba2f3bSAndroid Build Coastguard Worker **
1181*7eba2f3bSAndroid Build Coastguard Worker ** Description      This API is a special-case of NFA_RegisterNDefTypeHandler
1182*7eba2f3bSAndroid Build Coastguard Worker **                  with TNF=NFA_TNF_WKT, and type_name='U' (URI record); and
1183*7eba2f3bSAndroid Build Coastguard Worker **                  allows registering for specific URI types (e.g. 'tel:' or
1184*7eba2f3bSAndroid Build Coastguard Worker **                  'mailto:').
1185*7eba2f3bSAndroid Build Coastguard Worker **
1186*7eba2f3bSAndroid Build Coastguard Worker **                  An NFA_NDEF_REGISTER_EVT will be sent to the tNFA_NDEF_CBACK
1187*7eba2f3bSAndroid Build Coastguard Worker **                  to indicate that registration was successful, and provide a
1188*7eba2f3bSAndroid Build Coastguard Worker **                  handle for this registration.
1189*7eba2f3bSAndroid Build Coastguard Worker **
1190*7eba2f3bSAndroid Build Coastguard Worker **                  If uri_id=NFA_NDEF_URI_ID_ABSOLUTE, then p_abs_uri contains
1191*7eba2f3bSAndroid Build Coastguard Worker **                  the unabridged URI. For all other uri_id values, the
1192*7eba2f3bSAndroid Build Coastguard Worker **                  p_abs_uri parameter is ignored (i.e the URI prefix is
1193*7eba2f3bSAndroid Build Coastguard Worker **                  implied by uri_id).
1194*7eba2f3bSAndroid Build Coastguard Worker **
1195*7eba2f3bSAndroid Build Coastguard Worker **                  See [NFC RTD URI] for more information.
1196*7eba2f3bSAndroid Build Coastguard Worker **
1197*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1198*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1199*7eba2f3bSAndroid Build Coastguard Worker **
1200*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1201*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_RegisterNDefUriHandler(bool handle_whole_message,
1202*7eba2f3bSAndroid Build Coastguard Worker                                               tNFA_NDEF_URI_ID uri_id,
1203*7eba2f3bSAndroid Build Coastguard Worker                                               uint8_t* p_abs_uri,
1204*7eba2f3bSAndroid Build Coastguard Worker                                               uint8_t uri_id_len,
1205*7eba2f3bSAndroid Build Coastguard Worker                                               tNFA_NDEF_CBACK* p_ndef_cback);
1206*7eba2f3bSAndroid Build Coastguard Worker 
1207*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1208*7eba2f3bSAndroid Build Coastguard Worker **
1209*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_DeregisterNDefTypeHandler
1210*7eba2f3bSAndroid Build Coastguard Worker **
1211*7eba2f3bSAndroid Build Coastguard Worker ** Description      Deregister NDEF record type handler.
1212*7eba2f3bSAndroid Build Coastguard Worker **
1213*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1214*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1215*7eba2f3bSAndroid Build Coastguard Worker **
1216*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1217*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_DeregisterNDefTypeHandler(tNFA_HANDLE ndef_type_handle);
1218*7eba2f3bSAndroid Build Coastguard Worker 
1219*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1220*7eba2f3bSAndroid Build Coastguard Worker **
1221*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_PowerOffSleepMode
1222*7eba2f3bSAndroid Build Coastguard Worker **
1223*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function is called to enter or leave NFCC Power Off
1224*7eba2f3bSAndroid Build Coastguard Worker **                  Sleep mode
1225*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_DM_PWR_MODE_CHANGE_EVT will be sent to indicate status.
1226*7eba2f3bSAndroid Build Coastguard Worker **
1227*7eba2f3bSAndroid Build Coastguard Worker **                  start_stop : TRUE if entering Power Off Sleep mode
1228*7eba2f3bSAndroid Build Coastguard Worker **                               FALSE if leaving Power Off Sleep mode
1229*7eba2f3bSAndroid Build Coastguard Worker **
1230*7eba2f3bSAndroid Build Coastguard Worker Note??
1231*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1232*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1233*7eba2f3bSAndroid Build Coastguard Worker **
1234*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1235*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_PowerOffSleepMode(bool start_stop);
1236*7eba2f3bSAndroid Build Coastguard Worker 
1237*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1238*7eba2f3bSAndroid Build Coastguard Worker **
1239*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_RegVSCback
1240*7eba2f3bSAndroid Build Coastguard Worker **
1241*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function is called to register or de-register a
1242*7eba2f3bSAndroid Build Coastguard Worker **                  callback function to receive Proprietary NCI response and
1243*7eba2f3bSAndroid Build Coastguard Worker **                  notification events.
1244*7eba2f3bSAndroid Build Coastguard Worker **                  The maximum number of callback functions allowed is
1245*7eba2f3bSAndroid Build Coastguard Worker **                  NFC_NUM_VS_CBACKS
1246*7eba2f3bSAndroid Build Coastguard Worker **
1247*7eba2f3bSAndroid Build Coastguard Worker ** Returns          tNFC_STATUS
1248*7eba2f3bSAndroid Build Coastguard Worker **
1249*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1250*7eba2f3bSAndroid Build Coastguard Worker extern tNFC_STATUS NFA_RegVSCback(bool is_register, tNFA_VSC_CBACK* p_cback);
1251*7eba2f3bSAndroid Build Coastguard Worker 
1252*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1253*7eba2f3bSAndroid Build Coastguard Worker **
1254*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_SendVsCommand
1255*7eba2f3bSAndroid Build Coastguard Worker **
1256*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function is called to send an NCI Vendor Specific
1257*7eba2f3bSAndroid Build Coastguard Worker **                  command to NFCC.
1258*7eba2f3bSAndroid Build Coastguard Worker **
1259*7eba2f3bSAndroid Build Coastguard Worker **                  oid             - The opcode of the VS command.
1260*7eba2f3bSAndroid Build Coastguard Worker **                  cmd_params_len  - The command parameter len
1261*7eba2f3bSAndroid Build Coastguard Worker **                  p_cmd_params    - The command parameter
1262*7eba2f3bSAndroid Build Coastguard Worker **                  p_cback         - The callback function to receive the
1263*7eba2f3bSAndroid Build Coastguard Worker **                                    command status
1264*7eba2f3bSAndroid Build Coastguard Worker **
1265*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1266*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1267*7eba2f3bSAndroid Build Coastguard Worker **
1268*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1269*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_SendVsCommand(uint8_t oid, uint8_t cmd_params_len,
1270*7eba2f3bSAndroid Build Coastguard Worker                                      uint8_t* p_cmd_params,
1271*7eba2f3bSAndroid Build Coastguard Worker                                      tNFA_VSC_CBACK* p_cback);
1272*7eba2f3bSAndroid Build Coastguard Worker 
1273*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1274*7eba2f3bSAndroid Build Coastguard Worker **
1275*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_SendRawVsCommand
1276*7eba2f3bSAndroid Build Coastguard Worker **
1277*7eba2f3bSAndroid Build Coastguard Worker ** Description      This function is called to send raw vendor specific
1278*7eba2f3bSAndroid Build Coastguard Worker **                  command to NFCC.
1279*7eba2f3bSAndroid Build Coastguard Worker **
1280*7eba2f3bSAndroid Build Coastguard Worker **                  cmd_params_len  - The command parameter len
1281*7eba2f3bSAndroid Build Coastguard Worker **                  p_cmd_params    - The command parameter
1282*7eba2f3bSAndroid Build Coastguard Worker **                  p_cback         - The callback function to receive the
1283*7eba2f3bSAndroid Build Coastguard Worker **                                    command
1284*7eba2f3bSAndroid Build Coastguard Worker **
1285*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1286*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1287*7eba2f3bSAndroid Build Coastguard Worker **
1288*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1289*7eba2f3bSAndroid Build Coastguard Worker 
1290*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_SendRawVsCommand(uint8_t cmd_params_len,
1291*7eba2f3bSAndroid Build Coastguard Worker                                         uint8_t* p_cmd_params,
1292*7eba2f3bSAndroid Build Coastguard Worker                                         tNFA_VSC_CBACK* p_cback);
1293*7eba2f3bSAndroid Build Coastguard Worker 
1294*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1295*7eba2f3bSAndroid Build Coastguard Worker ** Function:        NFA_EnableDTA_TypeMode
1296*7eba2f3bSAndroid Build Coastguard Worker **
1297*7eba2f3bSAndroid Build Coastguard Worker ** Description:     Initialize and get global DTA type mode from .conf
1298*7eba2f3bSAndroid Build Coastguard Worker **
1299*7eba2f3bSAndroid Build Coastguard Worker ** Returns:         none:
1300*7eba2f3bSAndroid Build Coastguard Worker **
1301*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1302*7eba2f3bSAndroid Build Coastguard Worker extern void NFA_EnableDtamode(tNFA_eDtaModes eDtaMode);
1303*7eba2f3bSAndroid Build Coastguard Worker 
1304*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1305*7eba2f3bSAndroid Build Coastguard Worker **
1306*7eba2f3bSAndroid Build Coastguard Worker ** Function:        NFA_SetNfcSecure
1307*7eba2f3bSAndroid Build Coastguard Worker **
1308*7eba2f3bSAndroid Build Coastguard Worker ** Description:     Set NFC secure flag
1309*7eba2f3bSAndroid Build Coastguard Worker **
1310*7eba2f3bSAndroid Build Coastguard Worker ** Returns:         none:
1311*7eba2f3bSAndroid Build Coastguard Worker **
1312*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1313*7eba2f3bSAndroid Build Coastguard Worker extern void NFA_SetNfcSecure(bool status);
1314*7eba2f3bSAndroid Build Coastguard Worker 
1315*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1316*7eba2f3bSAndroid Build Coastguard Worker **
1317*7eba2f3bSAndroid Build Coastguard Worker ** Function:        NFA_DisableDtamode
1318*7eba2f3bSAndroid Build Coastguard Worker **
1319*7eba2f3bSAndroid Build Coastguard Worker ** Description:     Disable DTA Mode
1320*7eba2f3bSAndroid Build Coastguard Worker **
1321*7eba2f3bSAndroid Build Coastguard Worker ** Returns:         none:
1322*7eba2f3bSAndroid Build Coastguard Worker **
1323*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1324*7eba2f3bSAndroid Build Coastguard Worker extern void NFA_DisableDtamode(void);
1325*7eba2f3bSAndroid Build Coastguard Worker 
1326*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1327*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_GetNCIVersion
1328*7eba2f3bSAndroid Build Coastguard Worker **
1329*7eba2f3bSAndroid Build Coastguard Worker ** Description      Called by higher layer to get the current nci
1330*7eba2f3bSAndroid Build Coastguard Worker **                  version of nfc.
1331*7eba2f3bSAndroid Build Coastguard Worker **
1332*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NCI version NCI2.0 / NCI1.0
1333*7eba2f3bSAndroid Build Coastguard Worker **
1334*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1335*7eba2f3bSAndroid Build Coastguard Worker extern uint8_t NFA_GetNCIVersion();
1336*7eba2f3bSAndroid Build Coastguard Worker 
1337*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1338*7eba2f3bSAndroid Build Coastguard Worker ** Function:        NFA_SetPowerSubStateForScreenState
1339*7eba2f3bSAndroid Build Coastguard Worker **
1340*7eba2f3bSAndroid Build Coastguard Worker ** Description:     This function send the current screen state
1341*7eba2f3bSAndroid Build Coastguard Worker **
1342*7eba2f3bSAndroid Build Coastguard Worker ** Returns:        NFA_STATUS_OK if successfully initiated
1343*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1344*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1345*7eba2f3bSAndroid Build Coastguard Worker extern tNFA_STATUS NFA_SetPowerSubStateForScreenState(uint8_t ScreenState);
1346*7eba2f3bSAndroid Build Coastguard Worker 
1347*7eba2f3bSAndroid Build Coastguard Worker /*******************************************************************************
1348*7eba2f3bSAndroid Build Coastguard Worker **
1349*7eba2f3bSAndroid Build Coastguard Worker ** Function         NFA_ChangeDiscoveryTech
1350*7eba2f3bSAndroid Build Coastguard Worker **
1351*7eba2f3bSAndroid Build Coastguard Worker ** Description      Change RF discoverying technologies specified by
1352*7eba2f3bSAndroid Build Coastguard Worker **                  pollTech and listenTech.
1353*7eba2f3bSAndroid Build Coastguard Worker **
1354*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_DM_API_CHANGE_DISCOVERY_TECH_EVT will be returned.
1355*7eba2f3bSAndroid Build Coastguard Worker **
1356*7eba2f3bSAndroid Build Coastguard Worker **                  If pollTech/listenTech are set to 0xFF, it revert to
1357*7eba2f3bSAndroid Build Coastguard Worker **                  the polling/listening technologies
1358*7eba2f3bSAndroid Build Coastguard Worker **                  before NFA_ChangeDiscoveryTech() was called.
1359*7eba2f3bSAndroid Build Coastguard Worker **
1360*7eba2f3bSAndroid Build Coastguard Worker **                  is_revert_poll : TRUE if reverting RF polling tech
1361*7eba2f3bSAndroid Build Coastguard Worker **                               before calling NFA_StopRfDiscovery
1362*7eba2f3bSAndroid Build Coastguard Worker **                               FALSE if changing RF polling tech according
1363*7eba2f3bSAndroid Build Coastguard Worker **                               to pollTech
1364*7eba2f3bSAndroid Build Coastguard Worker **                  is_revert_listen : TRUE if reverting RF listening tech
1365*7eba2f3bSAndroid Build Coastguard Worker **                               before calling NFA_StopRfDiscovery
1366*7eba2f3bSAndroid Build Coastguard Worker **                               FALSE if changing RF listening tech according
1367*7eba2f3bSAndroid Build Coastguard Worker **                               to listenTech
1368*7eba2f3bSAndroid Build Coastguard Worker **                  change_default_tech : TRUE if the default technolofy mask
1369*7eba2f3bSAndroid Build Coastguard Worker **                               has to be changed according to listenTech
1370*7eba2f3bSAndroid Build Coastguard Worker **                               and pollTech settings
1371*7eba2f3bSAndroid Build Coastguard Worker **
1372*7eba2f3bSAndroid Build Coastguard Worker ** Note:            If RF discovery is started,
1373*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
1374*7eba2f3bSAndroid Build Coastguard Worker **                  should happen before calling this function
1375*7eba2f3bSAndroid Build Coastguard Worker **
1376*7eba2f3bSAndroid Build Coastguard Worker ** Returns          NFA_STATUS_OK if successfully initiated
1377*7eba2f3bSAndroid Build Coastguard Worker **                  NFA_STATUS_FAILED otherwise
1378*7eba2f3bSAndroid Build Coastguard Worker **
1379*7eba2f3bSAndroid Build Coastguard Worker *******************************************************************************/
1380*7eba2f3bSAndroid Build Coastguard Worker tNFA_STATUS NFA_ChangeDiscoveryTech(tNFA_TECHNOLOGY_MASK pollTech,
1381*7eba2f3bSAndroid Build Coastguard Worker                                     tNFA_TECHNOLOGY_MASK listenTech,
1382*7eba2f3bSAndroid Build Coastguard Worker                                     bool is_revert_poll, bool is_revert_listen,
1383*7eba2f3bSAndroid Build Coastguard Worker                                     bool change_default_tech = false);
1384*7eba2f3bSAndroid Build Coastguard Worker 
1385*7eba2f3bSAndroid Build Coastguard Worker #endif /* NFA_API_H */
1386