1 /******************************************************************************
2  *
3  *  Copyright (C) 2010-2014 Broadcom Corporation
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at:
8  *
9  *  http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  ******************************************************************************/
18 
19 
20 /******************************************************************************
21  *
22  *  NFA card emulation API functions
23  *
24  ******************************************************************************/
25 #ifndef NFA_CE_API_H
26 #define NFA_CE_API_H
27 
28 #include "nfc_target.h"
29 #include "nfa_api.h"
30 
31 /*****************************************************************************
32 **  Constants and data types
33 *****************************************************************************/
34 
35 /*****************************************************************************
36 **  External Function Declarations
37 *****************************************************************************/
38 #ifdef __cplusplus
39 extern "C"
40 {
41 #endif
42 
43 /*******************************************************************************
44 **
45 ** Function         NFA_CeConfigureLocalTag
46 **
47 ** Description      Configure local NDEF tag.
48 **
49 **                  Tag events will be notifed using the tNFA_CONN_CBACK
50 **                  (registered during NFA_Enable)
51 **
52 **                  The NFA_CE_LOCAL_TAG_CONFIGURED_EVT reports the status of the
53 **                  operation.
54 **
55 **                  Activation and deactivation are reported using the
56 **                  NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT events
57 **
58 **                  If a write-request is received to update the tag memory,
59 **                  an NFA_CE_NDEF_WRITE_CPLT_EVT will notify the application, along
60 **                  with a buffer containing the updated contents.
61 **
62 **                  To disable the local NDEF tag, set protocol_mask=0
63 **
64 **                  The NDEF data provided by p_ndef_data must be persistent
65 **                  as long as the local NDEF tag is enabled. Also, Input parameters p_uid and
66 **                  uid_len are reserved for future use.
67 **
68 **
69 ** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
70 **                  should happen before calling this function.
71 **
72 ** Returns:
73 **                  NFA_STATUS_OK,            if command accepted
74 **                  NFA_STATUS_INVALID_PARAM,
75 **                      if protocol_maks is not 0 and p_ndef_data is NULL
76 **                  (or) uid_len is not 0
77 **                  (or) if protocol mask is set for Type 1 or Type 2
78 **
79 **                  NFA_STATUS_FAILED:        otherwise
80 **
81 *******************************************************************************/
82 NFC_API extern tNFA_STATUS NFA_CeConfigureLocalTag (tNFA_PROTOCOL_MASK protocol_mask,
83                                                     UINT8     *p_ndef_data,
84                                                     UINT16    ndef_cur_size,
85                                                     UINT16    ndef_max_size,
86                                                     BOOLEAN   read_only,
87                                                     UINT8     uid_len,
88                                                     UINT8     *p_uid);
89 
90 /*******************************************************************************
91 **
92 ** Function         NFA_CeConfigureUiccListenTech
93 **
94 ** Description      Configure listening for the UICC, using the specified
95 **                  technologies.
96 **
97 **                  Events will be notifed using the tNFA_CONN_CBACK
98 **                  (registered during NFA_Enable)
99 **
100 **                  The NFA_CE_UICC_LISTEN_CONFIGURED_EVT reports the status of the
101 **                  operation.
102 **
103 **                  Activation and deactivation are reported using the
104 **                  NFA_ACTIVATED_EVT and NFA_DEACTIVATED_EVT events
105 **
106 ** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
107 **                  should happen before calling this function
108 **
109 ** Returns:
110 **                  NFA_STATUS_OK, if command accepted
111 **                  NFA_STATUS_FAILED: otherwise
112 **
113 *******************************************************************************/
114 NFC_API extern tNFA_STATUS NFA_CeConfigureUiccListenTech (tNFA_HANDLE          ee_handle,
115                                                           tNFA_TECHNOLOGY_MASK tech_mask);
116 
117 /*******************************************************************************
118 **
119 ** Function         NFA_CeRegisterFelicaSystemCodeOnDH
120 **
121 ** Description      Register listening callback for Felica system code
122 **
123 **                  The NFA_CE_REGISTERED_EVT reports the status of the
124 **                  operation.
125 **
126 ** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
127 **                  should happen before calling this function
128 **
129 ** Returns:
130 **                  NFA_STATUS_OK, if command accepted
131 **                  NFA_STATUS_FAILED: otherwise
132 **
133 *******************************************************************************/
134 NFC_API extern tNFA_STATUS NFA_CeRegisterFelicaSystemCodeOnDH (UINT16           system_code,
135                                                                UINT8            nfcid2[NCI_RF_F_UID_LEN],
136                                                                tNFA_CONN_CBACK  *p_conn_cback);
137 
138 /*******************************************************************************
139 **
140 ** Function         NFA_CeDeregisterFelicaSystemCodeOnDH
141 **
142 ** Description      Deregister listening callback for Felica
143 **                  (previously registered using NFA_CeRegisterFelicaSystemCodeOnDH)
144 **
145 **                  The NFA_CE_DEREGISTERED_EVT reports the status of the
146 **                  operation.
147 **
148 ** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
149 **                  should happen before calling this function
150 **
151 ** Returns          NFA_STATUS_OK if successfully initiated
152 **                  NFA_STATUS_BAD_HANDLE if invalid handle
153 **                  NFA_STATUS_FAILED otherwise
154 **
155 *******************************************************************************/
156 NFC_API extern tNFA_STATUS NFA_CeDeregisterFelicaSystemCodeOnDH (tNFA_HANDLE handle);
157 
158 /*******************************************************************************
159 **
160 ** Function         NFA_CeRegisterAidOnDH
161 **
162 ** Description      Register listening callback for the specified ISODEP AID
163 **
164 **                  The NFA_CE_REGISTERED_EVT reports the status of the
165 **                  operation.
166 **
167 **                  If no AID is specified (aid_len=0), then p_conn_cback will
168 **                  will get notifications for any AIDs routed to the DH. This
169 **                  over-rides callbacks registered for specific AIDs.
170 **
171 ** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
172 **                  should happen before calling this function
173 **
174 ** Returns:
175 **                  NFA_STATUS_OK, if command accepted
176 **                  NFA_STATUS_FAILED: otherwise
177 **
178 *******************************************************************************/
179 NFC_API extern tNFA_STATUS NFA_CeRegisterAidOnDH (UINT8           aid[NFC_MAX_AID_LEN],
180                                                   UINT8           aid_len,
181                                                   tNFA_CONN_CBACK *p_conn_cback);
182 
183 /*******************************************************************************
184 **
185 ** Function         NFA_CeDeregisterAidOnDH
186 **
187 ** Description      Deregister listening callback for ISODEP AID
188 **                  (previously registered using NFA_CeRegisterAidOnDH)
189 **
190 **                  The NFA_CE_DEREGISTERED_EVT reports the status of the
191 **                  operation.
192 **
193 ** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
194 **                  should happen before calling this function
195 **
196 ** Returns          NFA_STATUS_OK if successfully initiated
197 **                  NFA_STATUS_BAD_HANDLE if invalid handle
198 **                  NFA_STATUS_FAILED otherwise
199 **
200 *******************************************************************************/
201 NFC_API extern tNFA_STATUS NFA_CeDeregisterAidOnDH (tNFA_HANDLE handle);
202 
203 /*******************************************************************************
204 **
205 ** Function         NFA_CeSetIsoDepListenTech
206 **
207 ** Description      Set the technologies (NFC-A and/or NFC-B) to listen for when
208 **                  NFA_CeConfigureLocalTag or NFA_CeDeregisterAidOnDH are called.
209 **
210 **                  By default (if this API is not called), NFA will listen
211 **                  for both NFC-A and NFC-B for ISODEP.
212 **
213 ** Note:            If listening for ISODEP on UICC, the DH listen callbacks
214 **                  may still get activate notifications for ISODEP if the reader/
215 **                  writer selects an AID that is not routed to the UICC (regardless
216 **                  of whether A or B was disabled using NFA_CeSetIsoDepListenTech)
217 **
218 ** Note:            If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT
219 **                  should happen before calling this function
220 **
221 ** Returns:
222 **                  NFA_STATUS_OK, if command accepted
223 **                  NFA_STATUS_FAILED: otherwise
224 **
225 *******************************************************************************/
226 NFC_API extern tNFA_STATUS NFA_CeSetIsoDepListenTech (tNFA_TECHNOLOGY_MASK tech_mask);
227 
228 #ifdef __cplusplus
229 }
230 #endif
231 
232 #endif /* NFA_CE_API_H */
233