• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright (C) 2009-2013 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  *  This file contains the Near Field Communication (NFC) Card Emulation
23  *  mode related API function external definitions.
24  *
25  ******************************************************************************/
26 
27 #ifndef CE_API_H
28 #define CE_API_H
29 
30 #include "tags_defs.h"
31 
32 #define CE_T3T_FIRST_EVT    0x60
33 #define CE_T4T_FIRST_EVT    0x80
34 
35 enum
36 {
37     CE_T3T_NDEF_UPDATE_START_EVT = CE_T3T_FIRST_EVT,
38     CE_T3T_NDEF_UPDATE_CPLT_EVT,
39     CE_T3T_UPDATE_EVT,
40     CE_T3T_CHECK_EVT,
41     CE_T3T_RAW_FRAME_EVT,
42     CE_T3T_MAX_EVT,
43 
44     CE_T4T_NDEF_UPDATE_START_EVT  = CE_T4T_FIRST_EVT,
45     CE_T4T_NDEF_UPDATE_CPLT_EVT,
46     CE_T4T_NDEF_UPDATE_ABORT_EVT,
47     CE_T4T_RAW_FRAME_EVT,
48     CE_T4T_MAX_EVT
49 };
50 
51 
52 #define CE_RAW_FRAME_EVT     0xFF
53 
54 typedef UINT8 tCE_EVENT;
55 
56 typedef struct
57 {
58     tNFC_STATUS     status;
59     BT_HDR         *p_data;
60 } tCE_T2T_DATA;
61 
62 typedef struct
63 {
64     tNFC_STATUS     status;
65     UINT8          *p_data;
66     BOOLEAN         b_updated;
67     UINT32          length;
68 } tCE_UPDATE_INFO;
69 
70 typedef struct
71 {
72     tNFC_STATUS     status;
73     UINT8           aid_handle;
74     BT_HDR         *p_data;
75 } tCE_RAW_FRAME;
76 
77 typedef union
78 {
79     tNFC_STATUS         status;
80     tCE_UPDATE_INFO     update_info;
81     tCE_RAW_FRAME       raw_frame;
82 } tCE_DATA;
83 
84 typedef void (tCE_CBACK) (tCE_EVENT event, tCE_DATA *p_data);
85 
86 
87 /* T4T definitions */
88 typedef UINT8 tCE_T4T_AID_HANDLE;           /* Handle for AID registration  */
89 #define CE_T4T_AID_HANDLE_INVALID   0xFF    /* Invalid tCE_T4T_AID_HANDLE               */
90 
91 /*******************************************************************************
92 **
93 ** Function         CE_T3tSetLocalNDEFMsg
94 **
95 ** Description      Initialise CE Type 3 Tag with mandatory NDEF message
96 **
97 ** Returns          NFC_STATUS_OK if success
98 **
99 *******************************************************************************/
100 NFC_API extern tNFC_STATUS CE_T3tSetLocalNDEFMsg (BOOLEAN read_only,
101                                 UINT32 size_max,
102                                 UINT32 size_current,
103                                 UINT8 *p_buf,
104                                 UINT8 *p_scratch_buf);
105 
106 /*******************************************************************************
107 **
108 ** Function         CE_T3tSetLocalNDefParams
109 **
110 ** Description      Sets T3T-specific NDEF parameters. (Optional - if not
111 **                  called, then CE will use default parameters)
112 **
113 ** Returns          NFC_STATUS_OK if success
114 **
115 *******************************************************************************/
116 NFC_API extern tNFC_STATUS CE_T3tSetLocalNDefParams (UINT8 nbr, UINT8 nbw);
117 
118 /*******************************************************************************
119 **
120 ** Function         CE_T3tSendCheckRsp
121 **
122 ** Description      Send CHECK response message
123 **
124 ** Returns          NFC_STATUS_OK if success
125 **
126 *******************************************************************************/
127 NFC_API extern tNFC_STATUS CE_T3tSendCheckRsp (UINT8 status1, UINT8 status2, UINT8 num_blocks, UINT8 *p_block_data);
128 
129 /*******************************************************************************
130 **
131 ** Function         CE_T3tSendUpdateRsp
132 **
133 ** Description      Send UPDATE response message
134 **
135 ** Returns          NFC_STATUS_OK if success
136 **
137 *******************************************************************************/
138 NFC_API extern tNFC_STATUS CE_T3tSendUpdateRsp (UINT8 status1, UINT8 status2);
139 
140 /*******************************************************************************
141 **
142 ** Function         CE_T4tSetLocalNDEFMsg
143 **
144 ** Description      Initialise CE Type 4 Tag with mandatory NDEF message
145 **
146 **                  The following event may be returned
147 **                      CE_T4T_UPDATE_START_EVT for starting update
148 **                      CE_T4T_UPDATE_CPLT_EVT for complete update
149 **                      CE_T4T_UPDATE_ABORT_EVT for failure of update
150 **                      CE_T4T_RAW_FRAME_EVT for raw frame
151 **
152 **                  read_only:      TRUE if read only
153 **                  ndef_msg_max:   Max NDEF message size
154 **                  ndef_msg_len:   NDEF message size
155 **                  p_ndef_msg:     NDEF message (excluding NLEN)
156 **                  p_scratch_buf:  temp storage for update
157 **
158 ** Returns          NFC_STATUS_OK if success
159 **
160 *******************************************************************************/
161 NFC_API extern tNFC_STATUS CE_T4tSetLocalNDEFMsg (BOOLEAN    read_only,
162                                                   UINT16     ndef_msg_max,
163                                                   UINT16     ndef_msg_len,
164                                                   UINT8     *p_ndef_msg,
165                                                   UINT8     *p_scratch_buf);
166 
167 /*******************************************************************************
168 **
169 ** Function         CE_T4tRegisterAID
170 **
171 ** Description      Register AID in CE T4T
172 **
173 **                  aid_len: length of AID (up to NFC_MAX_AID_LEN)
174 **                  p_aid:   AID
175 **                  p_cback: Raw frame will be forwarded with CE_RAW_FRAME_EVT
176 **
177 ** Returns          tCE_T4T_AID_HANDLE if successful,
178 **                  CE_T4T_AID_HANDLE_INVALID otherwisse
179 **
180 *******************************************************************************/
181 NFC_API extern tCE_T4T_AID_HANDLE CE_T4tRegisterAID (UINT8      aid_len,
182                                                      UINT8      *p_aid,
183                                                      tCE_CBACK  *p_cback);
184 
185 /*******************************************************************************
186 **
187 ** Function         CE_T4tDeregisterAID
188 **
189 ** Description      Deregister AID in CE T4T
190 **
191 **                  aid_len: length of AID (up to NFC_MAX_AID_LEN)
192 **                  p_aid:   AID
193 **
194 ** Returns          NFC_STATUS_OK if success
195 **
196 *******************************************************************************/
197 NFC_API extern void CE_T4tDeregisterAID (tCE_T4T_AID_HANDLE aid_handle);
198 
199 /*******************************************************************************
200 **
201 ** Function         CE_T4TTestSetCC
202 **
203 ** Description      Set fields in Capability Container File for testing
204 **
205 ** Returns          NFC_STATUS_OK if success
206 **
207 *******************************************************************************/
208 NFC_API extern tNFC_STATUS CE_T4TTestSetCC (UINT16 cc_len,
209                                             UINT8  version,
210                                             UINT16 max_le,
211                                             UINT16 max_lc);
212 
213 /*******************************************************************************
214 **
215 ** Function         CE_T4TTestSetNDEFCtrlTLV
216 **
217 ** Description      Set fields in NDEF File Control TLV for testing
218 **
219 ** Returns          NFC_STATUS_OK if success
220 **
221 *******************************************************************************/
222 NFC_API extern tNFC_STATUS CE_T4TTestSetNDEFCtrlTLV (UINT8  type,
223                                                      UINT8  length,
224                                                      UINT16 file_id,
225                                                      UINT16 max_file_size,
226                                                      UINT8  read_access,
227                                                      UINT8  write_access);
228 
229 /*******************************************************************************
230 **
231 ** Function         CE_SendRawFrame
232 **
233 ** Description      This function sends a raw frame to the peer device.
234 **
235 ** Returns          tNFC_STATUS
236 **
237 *******************************************************************************/
238 NFC_API extern tNFC_STATUS CE_SendRawFrame (UINT8 *p_raw_data, UINT16 data_len);
239 
240 /*******************************************************************************
241 **
242 ** Function         CE_SetActivatedTagType
243 **
244 ** Description      This function selects the tag type for Reader/Writer mode.
245 **
246 ** Returns          tNFC_STATUS
247 **
248 *******************************************************************************/
249 NFC_API extern tNFC_STATUS CE_SetActivatedTagType (tNFC_ACTIVATE_DEVT *p_activate_params, UINT16 t3t_system_code, tCE_CBACK *p_cback);
250 
251 /*******************************************************************************
252 **
253 ** Function         CE_SetTraceLevel
254 **
255 ** Description      This function sets the trace level for Card Emulation mode.
256 **                  If called with a value of 0xFF,
257 **                  it simply returns the current trace level.
258 **
259 ** Returns          The new or current trace level
260 **
261 *******************************************************************************/
262 NFC_API extern UINT8 CE_SetTraceLevel (UINT8 new_level);
263 
264 #endif /* CE_API_H */
265