• 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) Reader/Writer mode
23  *  related API function external definitions.
24  *
25  ******************************************************************************/
26 
27 #ifndef RW_API_H
28 #define RW_API_H
29 #include "tags_defs.h"
30 
31 #define RW_T1T_BLD_ADD(a, k, y)   a = ((k & 0xF) << 3) | (y&0x7);
32 #define RW_T1T_BLD_ADDS(a, s)     a = ((s & 0xF) << 4);
33 
34 #define RW_T1T_FIRST_EVT    0x20
35 #define RW_T2T_FIRST_EVT    0x40
36 #define RW_T3T_FIRST_EVT    0x60
37 #define RW_T4T_FIRST_EVT    0x80
38 #define RW_I93_FIRST_EVT    0xA0
39 
40 enum
41 {
42     /* Note: the order of these events can not be changed */
43     /* Type 1 tag events for tRW_CBACK */
44     RW_T1T_RID_EVT = RW_T1T_FIRST_EVT,          /* Read ID command completd              */
45     RW_T1T_RALL_CPLT_EVT,                       /* Read All command completed            */
46     RW_T1T_READ_CPLT_EVT,                       /* Read byte completed                   */
47     RW_T1T_WRITE_E_CPLT_EVT,                    /* Write byte after erase completed      */
48     RW_T1T_WRITE_NE_CPLT_EVT,                   /* Write byte with no erase completed    */
49     RW_T1T_RSEG_CPLT_EVT,                       /* Read segment completed                */
50     RW_T1T_READ8_CPLT_EVT,                      /* Read block completed                  */
51     RW_T1T_WRITE_E8_CPLT_EVT,                   /* Write block after erase completed     */
52     RW_T1T_WRITE_NE8_CPLT_EVT,                  /* Write block with no erase completed   */
53     RW_T1T_TLV_DETECT_EVT,                      /* Lock/Mem/Prop tlv detection complete  */
54     RW_T1T_NDEF_DETECT_EVT,                     /* NDEF detection complete               */
55     RW_T1T_NDEF_READ_EVT,                       /* NDEF read completed                   */
56     RW_T1T_NDEF_WRITE_EVT,                      /* NDEF write complete                   */
57     RW_T1T_SET_TAG_RO_EVT,                      /* Tag is set as read only               */
58     RW_T1T_RAW_FRAME_EVT,                       /* Response of raw frame sent            */
59     RW_T1T_PRESENCE_CHECK_EVT,                  /* Response to RW_T1tPresenceCheck       */
60     RW_T1T_FORMAT_CPLT_EVT,                     /* Tag Formated                          */
61     RW_T1T_INTF_ERROR_EVT,                      /* RF Interface error event              */
62     RW_T1T_MAX_EVT,
63 
64     /* Type 2 tag events */
65     RW_T2T_READ_CPLT_EVT = RW_T2T_FIRST_EVT,    /* Read completed                        */
66     RW_T2T_WRITE_CPLT_EVT,                      /* Write completed                       */
67     RW_T2T_SELECT_CPLT_EVT,                     /* Sector select completed               */
68     RW_T2T_NDEF_DETECT_EVT,                     /* NDEF detection complete               */
69     RW_T2T_TLV_DETECT_EVT,                      /* Lock/Mem/Prop tlv detection complete  */
70     RW_T2T_NDEF_READ_EVT,                       /* NDEF read completed                   */
71     RW_T2T_NDEF_WRITE_EVT,                      /* NDEF write complete                   */
72     RW_T2T_SET_TAG_RO_EVT,                      /* Tag is set as read only               */
73     RW_T2T_RAW_FRAME_EVT,                       /* Response of raw frame sent            */
74     RW_T2T_PRESENCE_CHECK_EVT,                  /* Response to RW_T2tPresenceCheck       */
75     RW_T2T_FORMAT_CPLT_EVT,                     /* Tag Formated                          */
76     RW_T2T_INTF_ERROR_EVT,                      /* RF Interface error event              */
77     RW_T2T_MAX_EVT,
78 
79     /* Type 3 tag events for tRW_CBACK */
80     RW_T3T_CHECK_CPLT_EVT = RW_T3T_FIRST_EVT,   /* Read completed                           */
81     RW_T3T_UPDATE_CPLT_EVT,                     /* Write completed                          */
82     RW_T3T_CHECK_EVT,                           /* Segment of data received from type 3 tag */
83     RW_T3T_RAW_FRAME_EVT,                       /* SendRawFrame response                    */
84     RW_T3T_NDEF_DETECT_EVT,                     /* NDEF detection complete                  */
85     RW_T3T_PRESENCE_CHECK_EVT,                  /* Response to RW_T3tPresenceCheck          */
86     RW_T3T_POLL_EVT,                            /* Response to RW_T3tPoll                   */
87     RW_T3T_GET_SYSTEM_CODES_EVT,                /* Response to RW_T3tGetSystemCodes         */
88     RW_T3T_FORMAT_CPLT_EVT,                     /* Tag Formated (Felica-Lite only)          */
89     RW_T3T_SET_READ_ONLY_CPLT_EVT,              /* Tag is set as Read only                  */
90     RW_T3T_INTF_ERROR_EVT,                      /* RF Interface error event                 */
91     RW_T3T_MAX_EVT,
92 
93     /* Type 4 tag events for tRW_CBACK */
94     RW_T4T_NDEF_DETECT_EVT = RW_T4T_FIRST_EVT,  /* Result of NDEF detection procedure       */
95                                                 /* Mandatory NDEF file is selected          */
96     RW_T4T_NDEF_READ_EVT,                       /* Segment of data received from type 4 tag */
97     RW_T4T_NDEF_READ_CPLT_EVT,                  /* Read operation completed                 */
98     RW_T4T_NDEF_READ_FAIL_EVT,                  /* Read operation failed                    */
99     RW_T4T_NDEF_UPDATE_CPLT_EVT,                /* Update operation completed               */
100     RW_T4T_NDEF_UPDATE_FAIL_EVT,                /* Update operation failed                  */
101     RW_T4T_SET_TO_RO_EVT,                       /* Tag is set as read only                  */
102     RW_T4T_PRESENCE_CHECK_EVT,                  /* Response to RW_T4tPresenceCheck          */
103     RW_T4T_RAW_FRAME_EVT,                       /* Response of raw frame sent               */
104     RW_T4T_INTF_ERROR_EVT,                      /* RF Interface error event                 */
105     RW_T4T_MAX_EVT,
106 
107     /* ISO 15693 tag events for tRW_CBACK */
108     RW_I93_NDEF_DETECT_EVT = RW_I93_FIRST_EVT,  /* Result of NDEF detection procedure */
109     RW_I93_NDEF_READ_EVT,                       /* Segment of data received from tag  */
110     RW_I93_NDEF_READ_CPLT_EVT,                  /* Read operation completed           */
111     RW_I93_NDEF_READ_FAIL_EVT,                  /* Read operation failed              */
112     RW_I93_NDEF_UPDATE_CPLT_EVT,                /* Update operation completed         */
113     RW_I93_NDEF_UPDATE_FAIL_EVT,                /* Update operation failed            */
114     RW_I93_FORMAT_CPLT_EVT,                     /* Format procedure complete          */
115     RW_I93_SET_TAG_RO_EVT,                      /* Set read-only procedure complete   */
116     RW_I93_INVENTORY_EVT,                       /* Response of Inventory              */
117     RW_I93_DATA_EVT,                            /* Response of Read, Get Multi Security */
118     RW_I93_SYS_INFO_EVT,                        /* Response of System Information     */
119     RW_I93_CMD_CMPL_EVT,                        /* Command complete                   */
120     RW_I93_PRESENCE_CHECK_EVT,                  /* Response to RW_I93PresenceCheck    */
121     RW_I93_RAW_FRAME_EVT,                       /* Response of raw frame sent         */
122     RW_I93_INTF_ERROR_EVT,                      /* RF Interface error event           */
123     RW_I93_MAX_EVT
124 };
125 
126 #define RW_RAW_FRAME_EVT     0xFF
127 
128 typedef UINT8 tRW_EVENT;
129 
130 #define RW_NDEF_FL_READ_ONLY                    0x01    /* Tag is read only              */
131 #define RW_NDEF_FL_FORMATED                     0x02    /* Tag formated for NDEF         */
132 #define RW_NDEF_FL_SUPPORTED                    0x04    /* NDEF supported by the tag     */
133 #define RW_NDEF_FL_UNKNOWN                      0x08    /* Unable to find if tag is ndef capable/formated/read only */
134 #define RW_NDEF_FL_FORMATABLE                   0x10    /* Tag supports format operation */
135 #define RW_NDEF_FL_SOFT_LOCKABLE                0x20    /* Tag can be soft locked */
136 #define RW_NDEF_FL_HARD_LOCKABLE                0x40    /* Tag can be hard locked */
137 #define RW_NDEF_FL_OTP                          0x80    /* Tag is one time programmable */
138 
139 typedef UINT8 tRW_NDEF_FLAG;
140 
141 typedef struct
142 {
143     tNFC_STATUS     status;
144     UINT8           hr[T1T_HR_LEN];
145     UINT8           uid[T1T_CMD_UID_LEN];
146 } tRW_T1T_RID_EVT;
147 
148 typedef struct
149 {
150     tNFC_STATUS     status;
151     UINT16          msg_len;            /* Length of the NDEF message */
152 } tRW_T2T_DETECT;
153 
154 typedef struct
155 {
156     tNFC_STATUS     status;             /* Status of the POLL request */
157     UINT8           rc;                 /* RC (request code) used in the POLL request */
158     UINT8           response_num;       /* Number of SENSF_RES responses */
159     UINT8           response_bufsize;   /* Size of SENSF_RES responses */
160     UINT8           *response_buf;      /* Buffer of responses (length + SENSF_RES) see $8.1.2.2 of NCI specs */
161 } tRW_T3T_POLL;
162 
163 typedef struct
164 {
165     tNFC_STATUS     status;             /* Status of the Get System Codes request */
166     UINT8           num_system_codes;   /* Number of system codes */
167     UINT16          *p_system_codes;    /* Table of system codes */
168 } tRW_T3T_SYSTEM_CODES;
169 
170 typedef struct
171 {
172     tNFC_STATUS     status;             /* status of NDEF detection */
173     tNFC_PROTOCOL   protocol;           /* protocol used to detect NDEF */
174     UINT32          max_size;           /* max number of bytes available for NDEF data */
175     UINT32          cur_size;           /* current size of stored NDEF data (in bytes) */
176     tRW_NDEF_FLAG   flags;              /* Flags to indicate NDEF capability,formated,formatable and read only */
177 } tRW_DETECT_NDEF_DATA;
178 
179 typedef struct
180 {
181     tNFC_STATUS     status;             /* status of NDEF detection */
182     tNFC_PROTOCOL   protocol;           /* protocol used to detect TLV */
183     UINT8           num_bytes;          /* number of reserved/lock bytes based on the type of tlv */
184 } tRW_DETECT_TLV_DATA;
185 
186 typedef struct
187 {
188     tNFC_STATUS     status;
189     BT_HDR         *p_data;
190 } tRW_READ_DATA;
191 
192 typedef struct
193 {
194     tNFC_STATUS     status;
195     UINT8           sw1;
196     UINT8           sw2;
197 } tRW_T4T_SW;
198 
199 typedef struct                              /* RW_I93_INVENTORY_EVT        */
200 {
201     tNFC_STATUS     status;                 /* status of Inventory command */
202     UINT8           dsfid;                  /* DSFID                       */
203     UINT8           uid[I93_UID_BYTE_LEN];  /* UID[0]:MSB, ... UID[7]:LSB  */
204 } tRW_I93_INVENTORY;
205 
206 typedef struct                              /* RW_I93_DATA_EVT               */
207 {
208     tNFC_STATUS     status;                 /* status of Read/Get security status command */
209     UINT8           command;                /* sent command                  */
210     BT_HDR         *p_data;                 /* block data of security status */
211 } tRW_I93_DATA;
212 
213 typedef struct                              /* RW_I93_SYS_INFO_EVT             */
214 {
215     tNFC_STATUS     status;                 /* status of Get Sys Info command  */
216     UINT8           info_flags;             /* information flags               */
217     UINT8           uid[I93_UID_BYTE_LEN];  /* UID[0]:MSB, ... UID[7]:LSB      */
218     UINT8           dsfid;                  /* DSFID if I93_INFO_FLAG_DSFID    */
219     UINT8           afi;                    /* AFI if I93_INFO_FLAG_AFI        */
220     UINT16          num_block;              /* number of blocks if I93_INFO_FLAG_MEM_SIZE   */
221     UINT8           block_size;             /* block size in byte if I93_INFO_FLAG_MEM_SIZE */
222     UINT8           IC_reference;           /* IC Reference if I93_INFO_FLAG_IC_REF         */
223 } tRW_I93_SYS_INFO;
224 
225 typedef struct                              /* RW_I93_CMD_CMPL_EVT             */
226 {
227     tNFC_STATUS     status;                 /* status of sent command          */
228     UINT8           command;                /* sent command                    */
229     UINT8           error_code;             /* error code; I93_ERROR_CODE_XXX  */
230 } tRW_I93_CMD_CMPL;
231 
232 typedef struct
233 {
234     tNFC_STATUS     status;
235     BT_HDR         *p_data;
236 } tRW_RAW_FRAME;
237 
238 typedef union
239 {
240     tNFC_STATUS             status;
241     tRW_T3T_POLL            t3t_poll;   /* Response to t3t poll command          */
242     tRW_T3T_SYSTEM_CODES    t3t_sc;     /* Received system codes from t3 tag     */
243     tRW_DETECT_TLV_DATA     tlv;        /* The information of detected TLV data  */
244     tRW_DETECT_NDEF_DATA    ndef;       /* The information of detected NDEF data */
245     tRW_READ_DATA           data;       /* The received data from a tag          */
246     tRW_RAW_FRAME           raw_frame;  /* Response of raw frame sent            */
247     tRW_T4T_SW              t4t_sw;     /* Received status words from a tag      */
248     tRW_I93_INVENTORY       i93_inventory;  /* ISO 15693 Inventory response      */
249     tRW_I93_DATA            i93_data;       /* ISO 15693 Data response           */
250     tRW_I93_SYS_INFO        i93_sys_info;   /* ISO 15693 System Information      */
251     tRW_I93_CMD_CMPL        i93_cmd_cmpl;   /* ISO 15693 Command complete        */
252 } tRW_DATA;
253 
254 
255 typedef void (tRW_CBACK) (tRW_EVENT event, tRW_DATA *p_data);
256 
257 /*******************************************************************************
258 **
259 ** Function         RW_T1tRid
260 **
261 ** Description      This function send a RID command for Reader/Writer mode.
262 **
263 ** Returns          tNFC_STATUS
264 **
265 *******************************************************************************/
266 NFC_API extern tNFC_STATUS RW_T1tRid (void);
267 
268 /*******************************************************************************
269 **
270 ** Function         RW_T1tReadAll
271 **
272 ** Description      This function send a RALL command for Reader/Writer mode.
273 **
274 ** Returns          tNFC_STATUS
275 **
276 *******************************************************************************/
277 NFC_API extern tNFC_STATUS RW_T1tReadAll (void);
278 
279 /*******************************************************************************
280 **
281 ** Function         RW_T1tRead
282 **
283 ** Description      This function send a READ command for Reader/Writer mode.
284 **
285 ** Returns          tNFC_STATUS
286 **
287 *******************************************************************************/
288 NFC_API extern tNFC_STATUS RW_T1tRead (UINT8 block, UINT8 byte);
289 
290 /*******************************************************************************
291 **
292 ** Function         RW_T1tWriteErase
293 **
294 ** Description      This function send a WRITE-E command for Reader/Writer mode.
295 **
296 ** Returns          tNFC_STATUS
297 **
298 *******************************************************************************/
299 NFC_API extern tNFC_STATUS RW_T1tWriteErase (UINT8 block, UINT8 byte, UINT8 new_byte);
300 
301 /*******************************************************************************
302 **
303 ** Function         RW_T1tWriteNoErase
304 **
305 ** Description      This function send a WRITE-NE command for Reader/Writer mode.
306 **
307 ** Returns          tNFC_STATUS
308 **
309 *******************************************************************************/
310 NFC_API extern tNFC_STATUS RW_T1tWriteNoErase (UINT8 block, UINT8 byte, UINT8 new_byte);
311 
312 /*******************************************************************************
313 **
314 ** Function         RW_T1tReadSeg
315 **
316 ** Description      This function send a RSEG command for Reader/Writer mode.
317 **
318 ** Returns          tNFC_STATUS
319 **
320 *******************************************************************************/
321 NFC_API extern tNFC_STATUS RW_T1tReadSeg (UINT8 segment);
322 
323 /*******************************************************************************
324 **
325 ** Function         RW_T1tRead8
326 **
327 ** Description      This function send a READ8 command for Reader/Writer mode.
328 **
329 ** Returns          tNFC_STATUS
330 **
331 *******************************************************************************/
332 NFC_API extern tNFC_STATUS RW_T1tRead8 (UINT8 block);
333 
334 /*******************************************************************************
335 **
336 ** Function         RW_T1tWriteErase8
337 **
338 ** Description      This function send a WRITE-E8 command for Reader/Writer mode.
339 **
340 ** Returns          tNFC_STATUS
341 **
342 *******************************************************************************/
343 NFC_API extern tNFC_STATUS RW_T1tWriteErase8 (UINT8 block, UINT8 *p_new_dat);
344 
345 /*******************************************************************************
346 **
347 ** Function         RW_T1tWriteNoErase8
348 **
349 ** Description      This function send a WRITE-NE8 command for Reader/Writer mode.
350 **
351 ** Returns          tNFC_STATUS
352 **
353 *******************************************************************************/
354 NFC_API extern tNFC_STATUS RW_T1tWriteNoErase8 (UINT8 block, UINT8 *p_new_dat);
355 
356 /*******************************************************************************
357 **
358 ** Function         RW_T1tLocateTlv
359 **
360 ** Description      This function is called to find the start of the given TLV
361 **
362 ** Parameters:      void
363 **
364 ** Returns          NCI_STATUS_OK, if detection was started. Otherwise, error status.
365 **
366 *******************************************************************************/
367 NFC_API extern tNFC_STATUS RW_T1tLocateTlv (UINT8 tlv_type);
368 
369 /*******************************************************************************
370 **
371 ** Function         RW_T1tDetectNDef
372 **
373 ** Description      This function can be called to detect if there is an NDEF
374 **                  message on the tag.
375 **
376 ** Parameters:      void
377 **
378 ** Returns          NCI_STATUS_OK, if detection was started. Otherwise, error status.
379 **
380 *******************************************************************************/
381 NFC_API extern tNFC_STATUS RW_T1tDetectNDef (void);
382 
383 /*******************************************************************************
384 **
385 ** Function         RW_T1tReadNDef
386 **
387 ** Description      This function can be called to read the NDEF message on the tag.
388 **
389 ** Parameters:      p_buffer:   The buffer into which to read the NDEF message
390 **                  buf_len:    The length of the buffer
391 **
392 ** Returns          NCI_STATUS_OK, if read was started. Otherwise, error status.
393 **
394 *******************************************************************************/
395 NFC_API extern tNFC_STATUS RW_T1tReadNDef (UINT8 *p_buffer, UINT16 buf_len);
396 
397 /*******************************************************************************
398 **
399 ** Function         RW_T1tWriteNDef
400 **
401 ** Description      This function can be called to write an NDEF message to the tag.
402 **
403 ** Parameters:      msg_len:    The length of the buffer
404 **                  p_msg:      The NDEF message to write
405 **
406 ** Returns          NCI_STATUS_OK, if write was started. Otherwise, error status.
407 **
408 *******************************************************************************/
409 NFC_API extern tNFC_STATUS RW_T1tWriteNDef (UINT16 msg_len, UINT8 *p_msg);
410 
411 /*******************************************************************************
412 **
413 ** Function         RW_T1tSetTagReadOnly
414 **
415 ** Description      This function can be called to set the tag in to read only
416 **                  state
417 **
418 ** Parameters:      b_hard_lock: To hard lock or just soft lock the tag
419 **
420 ** Returns          NCI_STATUS_OK, if set readonly operation started.
421 **                                 Otherwise, error status.
422 **
423 *******************************************************************************/
424 NFC_API extern tNFC_STATUS RW_T1tSetTagReadOnly (BOOLEAN b_hard_lock);
425 
426 /*****************************************************************************
427 **
428 ** Function         RW_T1tPresenceCheck
429 **
430 ** Description
431 **      Check if the tag is still in the field.
432 **
433 **      The RW_T1T_PRESENCE_CHECK_EVT w/ status is used to indicate presence
434 **      or non-presence.
435 **
436 ** Returns
437 **      NFC_STATUS_OK, if raw data frame sent
438 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
439 **      NFC_STATUS_FAILED: other error
440 **
441 *****************************************************************************/
442 NFC_API extern tNFC_STATUS RW_T1tPresenceCheck (void);
443 
444 /*****************************************************************************
445 **
446 ** Function         RW_T1tFormatNDef
447 **
448 ** Description
449 **      Format Tag content
450 **
451 ** Returns
452 **      NFC_STATUS_OK, Command sent to format Tag
453 **      NFC_STATUS_REJECTED: Invalid HR0 and cannot format the tag
454 **      NFC_STATUS_FAILED: other error
455 **
456 *****************************************************************************/
457 tNFC_STATUS RW_T1tFormatNDef (void);
458 
459 /*******************************************************************************
460 **
461 ** Function         RW_T2tLocateTlv
462 **
463 ** Description      This function is called to find the start of the given TLV
464 **
465 ** Returns          Pointer to the TLV, if successful. Otherwise, NULL.
466 **
467 *******************************************************************************/
468 NFC_API extern tNFC_STATUS RW_T2tLocateTlv(UINT8 tlv_type);
469 
470 /*******************************************************************************
471 **
472 ** Function         RW_T2tRead
473 **
474 ** Description      This function issues the Type 2 Tag READ command. When the
475 **                  operation is complete the callback function will be called
476 **                  with a RW_T2T_READ_EVT.
477 **
478 ** Returns          tNFC_STATUS
479 **
480 *******************************************************************************/
481 NFC_API extern tNFC_STATUS RW_T2tRead (UINT16 block);
482 
483 /*******************************************************************************
484 **
485 ** Function         RW_T2tWrite
486 **
487 ** Description      This function issues the Type 2 Tag WRITE command. When the
488 **                  operation is complete the callback function will be called
489 **                  with a RW_T2T_WRITE_EVT.
490 **
491 **                  p_write_data points to the array of 4 bytes to be written
492 **
493 ** Returns          tNFC_STATUS
494 **
495 *******************************************************************************/
496 NFC_API extern tNFC_STATUS RW_T2tWrite (UINT16 block, UINT8 *p_write_data);
497 
498 /*******************************************************************************
499 **
500 ** Function         RW_T2tSectorSelect
501 **
502 ** Description      This function issues the Type 2 Tag SECTOR-SELECT command
503 **                  packet 1. If a NACK is received as the response, the callback
504 **                  function will be called with a RW_T2T_SECTOR_SELECT_EVT. If
505 **                  an ACK is received as the response, the command packet 2 with
506 **                  the given sector number is sent to the peer device. When the
507 **                  response for packet 2 is received, the callback function will
508 **                  be called with a RW_T2T_SECTOR_SELECT_EVT.
509 **
510 **                  A sector is 256 contiguous blocks (1024 bytes).
511 **
512 ** Returns          tNFC_STATUS
513 **
514 *******************************************************************************/
515 NFC_API extern tNFC_STATUS RW_T2tSectorSelect (UINT8 sector);
516 
517 /*******************************************************************************
518 **
519 ** Function         RW_T2tDetectNDef
520 **
521 ** Description      This function will find NDEF message if any in the Tag
522 **
523 ** Returns          tNFC_STATUS
524 **
525 *******************************************************************************/
526 NFC_API extern tNFC_STATUS RW_T2tDetectNDef (BOOLEAN skip_dyn_locks);
527 
528 /*******************************************************************************
529 **
530 ** Function         RW_T2tReadNDef
531 **
532 ** Description      This function can be called to read the NDEF message on the tag.
533 **
534 ** Parameters:      p_buffer:   The buffer into which to read the NDEF message
535 **                  buf_len:    The length of the buffer
536 **
537 ** Returns          NCI_STATUS_OK, if read was started. Otherwise, error status.
538 **
539 *******************************************************************************/
540 NFC_API extern tNFC_STATUS RW_T2tReadNDef (UINT8 *p_buffer, UINT16 buf_len);
541 
542 /*******************************************************************************
543 **
544 ** Function         RW_T2tWriteNDef
545 **
546 ** Description      This function can be called to write an NDEF message to the tag.
547 **
548 ** Parameters:      msg_len:    The length of the buffer
549 **                  p_msg:      The NDEF message to write
550 **
551 ** Returns          NCI_STATUS_OK, if write was started. Otherwise, error status.
552 **
553 *******************************************************************************/
554 NFC_API extern tNFC_STATUS RW_T2tWriteNDef (UINT16 msg_len, UINT8 *p_msg );
555 
556 /*******************************************************************************
557 **
558 ** Function         RW_T2tSetTagReadOnly
559 **
560 ** Description      This function can be called to set the tag in to read only
561 **                  state
562 **
563 ** Parameters:      b_hard_lock:   To indicate hard lock the tag or not
564 **
565 ** Returns          NCI_STATUS_OK, if set readonly operation started.
566 **                                 Otherwise, error status.
567 **
568 *******************************************************************************/
569 NFC_API extern tNFC_STATUS RW_T2tSetTagReadOnly (BOOLEAN b_hard_lock);
570 
571 /*****************************************************************************
572 **
573 ** Function         RW_T2tPresenceCheck
574 **
575 ** Description
576 **      Check if the tag is still in the field.
577 **
578 **      The RW_T2T_PRESENCE_CHECK_EVT w/ status is used to indicate presence
579 **      or non-presence.
580 **
581 ** Returns
582 **      NFC_STATUS_OK, if raw data frame sent
583 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
584 **      NFC_STATUS_FAILED: other error
585 **
586 *****************************************************************************/
587 NFC_API extern tNFC_STATUS RW_T2tPresenceCheck (void);
588 
589 /*****************************************************************************
590 **
591 ** Function         RW_T2tFormatNDef
592 **
593 ** Description
594 **      Format Tag content
595 **
596 ** Returns
597 **      NFC_STATUS_OK, Command sent to format Tag
598 **      NFC_STATUS_FAILED: otherwise
599 **
600 *****************************************************************************/
601 tNFC_STATUS RW_T2tFormatNDef (void);
602 
603 /*****************************************************************************
604 **
605 ** Function         RW_T3tDetectNDef
606 **
607 ** Description
608 **      This function is used to perform NDEF detection on a Type 3 tag, and
609 **      retrieve the tag's NDEF attribute information (block 0).
610 **
611 **      Before using this API, the application must call RW_SelectTagType to
612 **      indicate that a Type 3 tag has been activated, and to provide the
613 **      tag's Manufacture ID (IDm) .
614 **
615 ** Returns
616 **      NFC_STATUS_OK: ndef detection procedure started
617 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
618 **      NFC_STATUS_FAILED: other error
619 **
620 *****************************************************************************/
621 NFC_API extern tNFC_STATUS RW_T3tDetectNDef (void);
622 
623 /*****************************************************************************
624 **
625 ** Function         RW_T3tFormatNDef
626 **
627 ** Description
628 **      Format a type-3 tag for NDEF.
629 **
630 **      Only Felica-Lite tags are supported by this API. The
631 **      RW_T3T_FORMAT_CPLT_EVT is used to notify the status of the operation.
632 **
633 ** Returns
634 **      NFC_STATUS_OK: ndef detection procedure started
635 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
636 **      NFC_STATUS_FAILED: other error
637 **
638 *****************************************************************************/
639 NFC_API extern tNFC_STATUS RW_T3tFormatNDef (void);
640 
641 /*****************************************************************************
642 **
643 ** Function         RW_T3tSetReadOnly
644 **
645 ** Description
646 **      Set a type-3 tag to Read Only
647 **
648 **      Only Felica-Lite tags are supported by this API.
649 **      RW_T3tDetectNDef() must be called before using this
650 **      The RW_T3T_SET_READ_ONLY_CPLT_EVT event will be returned.
651 **
652 ** Returns
653 **      NFC_STATUS_OK if success
654 **      NFC_STATUS_FAILED if T3T is busy or other error
655 **
656 *****************************************************************************/
657 NFC_API extern tNFC_STATUS RW_T3tSetReadOnly (BOOLEAN b_hard_lock);
658 
659 /*****************************************************************************
660 **
661 ** Function         RW_T3tCheckNDef
662 **
663 ** Description
664 **      Retrieve NDEF contents from a Type3 tag.
665 **
666 **      The RW_T3T_CHECK_EVT event is used to notify the application for each
667 **      segment of NDEF data received. The RW_T3T_CHECK_CPLT_EVT event is used to
668 **      notify the application all segments have been received.
669 **
670 **      Before using this API, the RW_T3tDetectNDef function must be called to
671 **      verify that the tag contains NDEF data, and to retrieve the NDEF
672 **      attributes.
673 **
674 **      Internally, this command will be separated into multiple Tag 3 Check
675 **      commands (if necessary) - depending on the tag's Nbr (max number of
676 **      blocks per read) attribute.
677 **
678 ** Returns
679 **      NFC_STATUS_OK: check command started
680 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
681 **      NFC_STATUS_FAILED: other error
682 **
683 *****************************************************************************/
684 NFC_API extern tNFC_STATUS RW_T3tCheckNDef (void);
685 
686 /*****************************************************************************
687 **
688 ** Function         RW_T3tUpdateNDef
689 **
690 ** Description
691 **      Write NDEF contents to a Type3 tag.
692 **
693 **      The RW_T3T_UPDATE_CPLT_EVT callback event will be used to notify the
694 **      application of the response.
695 **
696 **      Before using this API, the RW_T3tDetectNDef function must be called to
697 **      verify that the tag contains NDEF data, and to retrieve the NDEF
698 **      attributes.
699 **
700 **      Internally, this command will be separated into multiple Tag 3 Update
701 **      commands (if necessary) - depending on the tag's Nbw (max number of
702 **      blocks per write) attribute.
703 **
704 ** Returns
705 **      NFC_STATUS_OK: check command started
706 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
707 **      NFC_STATUS_REFUSED: tag is read-only
708 **      NFC_STATUS_BUFFER_FULL: len exceeds tag's maximum size
709 **      NFC_STATUS_FAILED: other error
710 **
711 *****************************************************************************/
712 NFC_API extern tNFC_STATUS RW_T3tUpdateNDef (UINT32 len, UINT8 *p_data);
713 
714 /*****************************************************************************
715 **
716 ** Function         RW_T3tCheck
717 **
718 ** Description
719 **      Read (non-NDEF) contents from a Type3 tag.
720 **
721 **      The RW_READ_EVT event is used to notify the application for each
722 **      segment of NDEF data received. The RW_READ_CPLT_EVT event is used to
723 **      notify the application all segments have been received.
724 **
725 **      Before using this API, the application must call RW_SelectTagType to
726 **      indicate that a Type 3 tag has been activated, and to provide the
727 **      tag's Manufacture ID (IDm) .
728 **
729 ** Returns
730 **      NFC_STATUS_OK: check command started
731 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
732 **      NFC_STATUS_FAILED: other error
733 **
734 *****************************************************************************/
735 NFC_API extern tNFC_STATUS RW_T3tCheck (UINT8 num_blocks, tT3T_BLOCK_DESC *t3t_blocks);
736 
737 /*****************************************************************************
738 **
739 ** Function         RW_T3tUpdate
740 **
741 ** Description
742 **      Write (non-NDEF) contents to a Type3 tag.
743 **
744 **      The RW_WRITE_CPLT_EVT event is used to notify the application all
745 **      segments have been received.
746 **
747 **      Before using this API, the application must call RW_SelectTagType to
748 **      indicate that a Type 3 tag has been activated, and to provide the tag's
749 **      Manufacture ID (IDm) .
750 **
751 ** Returns
752 **      NFC_STATUS_OK: check command started
753 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
754 **      NFC_STATUS_FAILED: other error
755 **
756 *****************************************************************************/
757 NFC_API extern tNFC_STATUS RW_T3tUpdate (UINT8 num_blocks, tT3T_BLOCK_DESC *t3t_blocks, UINT8 *p_data);
758 
759 /*****************************************************************************
760 **
761 ** Function         RW_T3tSendRawFrame
762 **
763 ** Description
764 **      This function is called to send a raw data frame to the peer device.
765 **      When type 3 tag receives response from peer, the callback function
766 **      will be called with a RW_T3T_RAW_FRAME_EVT [Table 6].
767 **
768 **      Before using this API, the application must call RW_SelectTagType to
769 **      indicate that a Type 3 tag has been activated.
770 **
771 **      The raw frame should be a properly formatted Type 3 tag message.
772 **
773 ** Returns
774 **      NFC_STATUS_OK, if raw data frame sent
775 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
776 **      NFC_STATUS_FAILED: other error
777 **
778 *****************************************************************************/
779 NFC_API extern tNFC_STATUS RW_T3tSendRawFrame (UINT16 len, UINT8 *p_data);
780 
781 /*****************************************************************************
782 **
783 ** Function         RW_T3tPoll
784 **
785 ** Description
786 **      Send POLL command
787 **
788 ** Returns
789 **      NFC_STATUS_OK, if raw data frame sent
790 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
791 **      NFC_STATUS_FAILED: other error
792 **
793 *****************************************************************************/
794 NFC_API extern tNFC_STATUS RW_T3tPoll (UINT16 system_code, tT3T_POLL_RC rc, UINT8 tsn);
795 
796 /*****************************************************************************
797 **
798 ** Function         RW_T3tPresenceCheck
799 **
800 ** Description
801 **      Check if the tag is still in the field.
802 **
803 **      The RW_T3T_PRESENCE_CHECK_EVT w/ status is used to indicate presence
804 **      or non-presence.
805 **
806 ** Returns
807 **      NFC_STATUS_OK, if raw data frame sent
808 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
809 **      NFC_STATUS_FAILED: other error
810 **
811 *****************************************************************************/
812 NFC_API extern tNFC_STATUS RW_T3tPresenceCheck (void);
813 
814 /*****************************************************************************
815 **
816 ** Function         RW_T3tGetSystemCodes
817 **
818 ** Description
819 **      Get systems codes supported by the activated tag:
820 **              Poll for wildcard (FFFF):
821 **                  - If felica-lite code then poll for ndef (12fc)
822 **                  - Otherwise send RequestSystmCode command to get
823 **                    system codes.
824 **
825 **      Before using this API, the application must call RW_SelectTagType to
826 **      indicate that a Type 3 tag has been activated.
827 **
828 ** Returns
829 **      NFC_STATUS_OK, if raw data frame sent
830 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
831 **      NFC_STATUS_FAILED: other error
832 **
833 *****************************************************************************/
834 NFC_API extern tNFC_STATUS RW_T3tGetSystemCodes (void);
835 
836 /*******************************************************************************
837 **
838 ** Function         RW_T4tDetectNDef
839 **
840 ** Description      This function performs NDEF detection procedure
841 **
842 **                  RW_T4T_NDEF_DETECT_EVT will be returned
843 **
844 ** Returns          NFC_STATUS_OK if success
845 **                  NFC_STATUS_FAILED if T4T is busy or other error
846 **
847 *******************************************************************************/
848 NFC_API extern tNFC_STATUS RW_T4tDetectNDef (void);
849 
850 /*******************************************************************************
851 **
852 ** Function         RW_T4tReadNDef
853 **
854 ** Description      This function performs NDEF read procedure
855 **                  Note: RW_T4tDetectNDef() must be called before using this
856 **
857 **                  The following event will be returned
858 **                      RW_T4T_NDEF_READ_EVT for each segmented NDEF message
859 **                      RW_T4T_NDEF_READ_CPLT_EVT for the last segment or complete NDEF
860 **                      RW_T4T_NDEF_READ_FAIL_EVT for failure
861 **
862 ** Returns          NFC_STATUS_OK if success
863 **                  NFC_STATUS_FAILED if T4T is busy or other error
864 **
865 *******************************************************************************/
866 NFC_API extern tNFC_STATUS RW_T4tReadNDef (void);
867 
868 /*******************************************************************************
869 **
870 ** Function         RW_T4tUpdateNDef
871 **
872 ** Description      This function performs NDEF update procedure
873 **                  Note: RW_T4tDetectNDef() must be called before using this
874 **                        Updating data must not be removed until returning event
875 **
876 **                  The following event will be returned
877 **                      RW_T4T_NDEF_UPDATE_CPLT_EVT for complete
878 **                      RW_T4T_NDEF_UPDATE_FAIL_EVT for failure
879 **
880 ** Returns          NFC_STATUS_OK if success
881 **                  NFC_STATUS_FAILED if T4T is busy or other error
882 **
883 *******************************************************************************/
884 NFC_API extern tNFC_STATUS RW_T4tUpdateNDef (UINT16 length, UINT8 *p_data);
885 
886 /*****************************************************************************
887 **
888 ** Function         RW_T4tPresenceCheck
889 **
890 ** Description
891 **      Check if the tag is still in the field.
892 **
893 **      The RW_T4T_PRESENCE_CHECK_EVT w/ status is used to indicate presence
894 **      or non-presence.
895 **
896 ** Returns
897 **      NFC_STATUS_OK, if raw data frame sent
898 **      NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
899 **      NFC_STATUS_FAILED: other error
900 **
901 *****************************************************************************/
902 NFC_API extern tNFC_STATUS RW_T4tPresenceCheck (void);
903 
904 /*****************************************************************************
905 **
906 ** Function         RW_T4tSetNDefReadOnly
907 **
908 ** Description      This function performs NDEF read-only procedure
909 **                  Note: RW_T4tDetectNDef() must be called before using this
910 **
911 **                  The RW_T4T_SET_TO_RO_EVT event will be returned.
912 **
913 ** Returns          NFC_STATUS_OK if success
914 **                  NFC_STATUS_FAILED if T4T is busy or other error
915 **
916 *****************************************************************************/
917 NFC_API extern tNFC_STATUS RW_T4tSetNDefReadOnly (void);
918 
919 /*******************************************************************************
920 **
921 ** Function         RW_I93Inventory
922 **
923 ** Description      This function send Inventory command with/without AFI
924 **                  If UID is provided then set UID[0]:MSB, ... UID[7]:LSB
925 **
926 **                  RW_I93_RESPONSE_EVT will be returned
927 **
928 ** Returns          NFC_STATUS_OK if success
929 **                  NFC_STATUS_NO_BUFFERS if out of buffer
930 **                  NFC_STATUS_FAILED if T4T is busy or other error
931 **
932 *******************************************************************************/
933 NFC_API extern tNFC_STATUS RW_I93Inventory (BOOLEAN including_afi, UINT8 afi, UINT8 *p_uid);
934 
935 /*******************************************************************************
936 **
937 ** Function         RW_I93StayQuiet
938 **
939 ** Description      This function send Inventory command
940 **
941 **                  RW_I93_CMD_CMPL_EVT will be returned
942 **
943 ** Returns          NFC_STATUS_OK if success
944 **                  NFC_STATUS_NO_BUFFERS if out of buffer
945 **                  NFC_STATUS_BUSY if busy
946 **                  NFC_STATUS_FAILED if other error
947 **
948 *******************************************************************************/
949 NFC_API extern tNFC_STATUS RW_I93StayQuiet (void);
950 
951 /*******************************************************************************
952 **
953 ** Function         RW_I93ReadSingleBlock
954 **
955 ** Description      This function send Read Single Block command
956 **
957 **                  RW_I93_RESPONSE_EVT will be returned
958 **
959 ** Returns          NFC_STATUS_OK if success
960 **                  NFC_STATUS_NO_BUFFERS if out of buffer
961 **                  NFC_STATUS_BUSY if busy
962 **                  NFC_STATUS_FAILED if other error
963 **
964 *******************************************************************************/
965 NFC_API extern tNFC_STATUS RW_I93ReadSingleBlock (UINT16 block_number);
966 
967 /*******************************************************************************
968 **
969 ** Function         RW_I93WriteSingleBlock
970 **
971 ** Description      This function send Write Single Block command
972 **                  Application must get block size first by calling RW_I93GetSysInfo().
973 **
974 **                  RW_I93_CMD_CMPL_EVT will be returned
975 **
976 ** Returns          NFC_STATUS_OK if success
977 **                  NFC_STATUS_NO_BUFFERS if out of buffer
978 **                  NFC_STATUS_BUSY if busy
979 **                  NFC_STATUS_FAILED if other error
980 **
981 *******************************************************************************/
982 NFC_API extern tNFC_STATUS RW_I93WriteSingleBlock (UINT16 block_number,
983                                                    UINT8  *p_data);
984 
985 /*******************************************************************************
986 **
987 ** Function         RW_I93LockBlock
988 **
989 ** Description      This function send Lock Block command
990 **
991 **                  RW_I93_CMD_CMPL_EVT will be returned
992 **
993 ** Returns          NFC_STATUS_OK if success
994 **                  NFC_STATUS_NO_BUFFERS if out of buffer
995 **                  NFC_STATUS_BUSY if busy
996 **                  NFC_STATUS_FAILED if other error
997 **
998 *******************************************************************************/
999 NFC_API extern tNFC_STATUS RW_I93LockBlock (UINT8 block_number);
1000 
1001 /*******************************************************************************
1002 **
1003 ** Function         RW_I93ReadMultipleBlocks
1004 **
1005 ** Description      This function send Read Multiple Blocks command
1006 **
1007 **                  RW_I93_RESPONSE_EVT will be returned
1008 **
1009 ** Returns          NFC_STATUS_OK if success
1010 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1011 **                  NFC_STATUS_BUSY if busy
1012 **                  NFC_STATUS_FAILED if other error
1013 **
1014 *******************************************************************************/
1015 NFC_API extern tNFC_STATUS RW_I93ReadMultipleBlocks (UINT16 first_block_number,
1016                                                      UINT16 number_blocks);
1017 
1018 /*******************************************************************************
1019 **
1020 ** Function         RW_I93WriteMultipleBlocks
1021 **
1022 ** Description      This function send Write Multiple Blocks command
1023 **
1024 **                  RW_I93_CMD_CMPL_EVT will be returned
1025 **
1026 ** Returns          NFC_STATUS_OK if success
1027 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1028 **                  NFC_STATUS_BUSY if busy
1029 **                  NFC_STATUS_FAILED if other error
1030 **
1031 *******************************************************************************/
1032 NFC_API extern tNFC_STATUS RW_I93WriteMultipleBlocks (UINT8  first_block_number,
1033                                                       UINT16 number_blocks,
1034                                                       UINT8 *p_data);
1035 
1036 /*******************************************************************************
1037 **
1038 ** Function         RW_I93Select
1039 **
1040 ** Description      This function send Select command
1041 **
1042 **                  UID[0]: 0xE0, MSB
1043 **                  UID[1]: IC Mfg Code
1044 **                  ...
1045 **                  UID[7]: LSB
1046 **
1047 **                  RW_I93_CMD_CMPL_EVT will be returned
1048 **
1049 ** Returns          NFC_STATUS_OK if success
1050 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1051 **                  NFC_STATUS_BUSY if busy
1052 **                  NFC_STATUS_FAILED if other error
1053 **
1054 *******************************************************************************/
1055 NFC_API extern tNFC_STATUS RW_I93Select (UINT8 *p_uid);
1056 
1057 /*******************************************************************************
1058 **
1059 ** Function         RW_I93ResetToReady
1060 **
1061 ** Description      This function send Reset To Ready command
1062 **
1063 **                  RW_I93_CMD_CMPL_EVT will be returned
1064 **
1065 ** Returns          NFC_STATUS_OK if success
1066 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1067 **                  NFC_STATUS_BUSY if busy
1068 **                  NFC_STATUS_FAILED if other error
1069 **
1070 *******************************************************************************/
1071 NFC_API extern tNFC_STATUS RW_I93ResetToReady (void);
1072 
1073 /*******************************************************************************
1074 **
1075 ** Function         RW_I93WriteAFI
1076 **
1077 ** Description      This function send Write AFI command
1078 **
1079 **                  RW_I93_CMD_CMPL_EVT will be returned
1080 **
1081 ** Returns          NFC_STATUS_OK if success
1082 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1083 **                  NFC_STATUS_BUSY if busy
1084 **                  NFC_STATUS_FAILED if other error
1085 **
1086 *******************************************************************************/
1087 NFC_API extern tNFC_STATUS RW_I93WriteAFI (UINT8 afi);
1088 
1089 /*******************************************************************************
1090 **
1091 ** Function         RW_I93LockAFI
1092 **
1093 ** Description      This function send Lock AFI command
1094 **
1095 **                  RW_I93_CMD_CMPL_EVT will be returned
1096 **
1097 ** Returns          NFC_STATUS_OK if success
1098 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1099 **                  NFC_STATUS_BUSY if busy
1100 **                  NFC_STATUS_FAILED if other error
1101 **
1102 *******************************************************************************/
1103 NFC_API extern tNFC_STATUS RW_I93LockAFI (void);
1104 
1105 /*******************************************************************************
1106 **
1107 ** Function         RW_I93WriteDSFID
1108 **
1109 ** Description      This function send Write DSFID command
1110 **
1111 **                  RW_I93_CMD_CMPL_EVT will be returned
1112 **
1113 ** Returns          NFC_STATUS_OK if success
1114 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1115 **                  NFC_STATUS_BUSY if busy
1116 **                  NFC_STATUS_FAILED if other error
1117 **
1118 *******************************************************************************/
1119 NFC_API extern tNFC_STATUS RW_I93WriteDSFID (UINT8 dsfid);
1120 
1121 /*******************************************************************************
1122 **
1123 ** Function         RW_I93LockDSFID
1124 **
1125 ** Description      This function send Lock DSFID command
1126 **
1127 **                  RW_I93_CMD_CMPL_EVT will be returned
1128 **
1129 ** Returns          NFC_STATUS_OK if success
1130 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1131 **                  NFC_STATUS_BUSY if busy
1132 **                  NFC_STATUS_FAILED if other error
1133 **
1134 *******************************************************************************/
1135 NFC_API extern tNFC_STATUS RW_I93LockDSFID (void);
1136 
1137 /*******************************************************************************
1138 **
1139 ** Function         RW_I93GetSysInfo
1140 **
1141 ** Description      This function send Get System Information command
1142 **                  If UID is provided then set UID[0]:MSB, ... UID[7]:LSB
1143 **
1144 **                  RW_I93_RESPONSE_EVT will be returned
1145 **
1146 ** Returns          NFC_STATUS_OK if success
1147 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1148 **                  NFC_STATUS_BUSY if busy
1149 **                  NFC_STATUS_FAILED if other error
1150 **
1151 *******************************************************************************/
1152 NFC_API extern tNFC_STATUS RW_I93GetSysInfo (UINT8 *p_uid);
1153 
1154 /*******************************************************************************
1155 **
1156 ** Function         RW_I93GetMultiBlockSecurityStatus
1157 **
1158 ** Description      This function send Get Multiple Block Security Status command
1159 **
1160 **                  RW_I93_RESPONSE_EVT will be returned
1161 **
1162 ** Returns          NFC_STATUS_OK if success
1163 **                  NFC_STATUS_NO_BUFFERS if out of buffer
1164 **                  NFC_STATUS_BUSY if busy
1165 **                  NFC_STATUS_FAILED if other error
1166 **
1167 *******************************************************************************/
1168 NFC_API extern tNFC_STATUS RW_I93GetMultiBlockSecurityStatus (UINT16 first_block_number,
1169                                                               UINT16 number_blocks);
1170 
1171 /*******************************************************************************
1172 **
1173 ** Function         RW_I93DetectNDef
1174 **
1175 ** Description      This function performs NDEF detection procedure
1176 **
1177 **                  RW_I93_NDEF_DETECT_EVT will be returned
1178 **
1179 ** Returns          NFC_STATUS_OK if success
1180 **                  NFC_STATUS_FAILED if busy or other error
1181 **
1182 *******************************************************************************/
1183 NFC_API extern tNFC_STATUS RW_I93DetectNDef (void);
1184 
1185 /*******************************************************************************
1186 **
1187 ** Function         RW_I93ReadNDef
1188 **
1189 ** Description      This function performs NDEF read procedure
1190 **                  Note: RW_I93DetectNDef() must be called before using this
1191 **
1192 **                  The following event will be returned
1193 **                      RW_I93_NDEF_READ_EVT for each segmented NDEF message
1194 **                      RW_I93_NDEF_READ_CPLT_EVT for the last segment or complete NDEF
1195 **                      RW_I93_NDEF_READ_FAIL_EVT for failure
1196 **
1197 ** Returns          NFC_STATUS_OK if success
1198 **                  NFC_STATUS_FAILED if I93 is busy or other error
1199 **
1200 *******************************************************************************/
1201 NFC_API extern tNFC_STATUS RW_I93ReadNDef (void);
1202 
1203 /*******************************************************************************
1204 **
1205 ** Function         RW_I93UpdateNDef
1206 **
1207 ** Description      This function performs NDEF update procedure
1208 **                  Note: RW_I93DetectNDef() must be called before using this
1209 **                        Updating data must not be removed until returning event
1210 **
1211 **                  The following event will be returned
1212 **                      RW_I93_NDEF_UPDATE_CPLT_EVT for complete
1213 **                      RW_I93_NDEF_UPDATE_FAIL_EVT for failure
1214 **
1215 ** Returns          NFC_STATUS_OK if success
1216 **                  NFC_STATUS_FAILED if I93 is busy or other error
1217 **
1218 *******************************************************************************/
1219 NFC_API extern tNFC_STATUS RW_I93UpdateNDef (UINT16 length, UINT8 *p_data);
1220 
1221 /*******************************************************************************
1222 **
1223 ** Function         RW_I93FormatNDef
1224 **
1225 ** Description      This function performs formatting procedure
1226 **
1227 **                  RW_I93_FORMAT_CPLT_EVT will be returned
1228 **
1229 ** Returns          NFC_STATUS_OK if success
1230 **                  NFC_STATUS_FAILED if busy or other error
1231 **
1232 *******************************************************************************/
1233 NFC_API extern tNFC_STATUS RW_I93FormatNDef (void);
1234 
1235 /*******************************************************************************
1236 **
1237 ** Function         RW_I93SetTagReadOnly
1238 **
1239 ** Description      This function performs NDEF read-only procedure
1240 **                  Note: RW_I93DetectNDef() must be called before using this
1241 **                        Updating data must not be removed until returning event
1242 **
1243 **                  The RW_I93_SET_TAG_RO_EVT event will be returned.
1244 **
1245 ** Returns          NFC_STATUS_OK if success
1246 **                  NFC_STATUS_FAILED if I93 is busy or other error
1247 **
1248 *******************************************************************************/
1249 NFC_API extern tNFC_STATUS RW_I93SetTagReadOnly (void);
1250 
1251 /*****************************************************************************
1252 **
1253 ** Function         RW_I93PresenceCheck
1254 **
1255 ** Description      Check if the tag is still in the field.
1256 **
1257 **                  The RW_I93_PRESENCE_CHECK_EVT w/ status is used to indicate
1258 **                  presence or non-presence.
1259 **
1260 ** Returns          NFC_STATUS_OK, if raw data frame sent
1261 **                  NFC_STATUS_NO_BUFFERS: unable to allocate a buffer for this operation
1262 **                  NFC_STATUS_FAILED: other error
1263 **
1264 *****************************************************************************/
1265 NFC_API extern tNFC_STATUS RW_I93PresenceCheck (void);
1266 
1267 /*******************************************************************************
1268 **
1269 ** Function         RW_SendRawFrame
1270 **
1271 ** Description      This function sends a raw frame to the peer device.
1272 **
1273 ** Returns          tNFC_STATUS
1274 **
1275 *******************************************************************************/
1276 NFC_API extern tNFC_STATUS RW_SendRawFrame (UINT8 *p_raw_data, UINT16 data_len);
1277 
1278 /*******************************************************************************
1279 **
1280 ** Function         RW_SetActivatedTagType
1281 **
1282 ** Description      This function sets tag type for Reader/Writer mode.
1283 **
1284 ** Returns          tNFC_STATUS
1285 **
1286 *******************************************************************************/
1287 NFC_API extern tNFC_STATUS RW_SetActivatedTagType (tNFC_ACTIVATE_DEVT *p_activate_params, tRW_CBACK *p_cback);
1288 
1289 /*******************************************************************************
1290 **
1291 ** Function         RW_SetTraceLevel
1292 **
1293 ** Description      This function sets the trace level for Reader/Writer mode.
1294 **                  If called with a value of 0xFF,
1295 **                  it simply returns the current trace level.
1296 **
1297 ** Returns          The new or current trace level
1298 **
1299 *******************************************************************************/
1300 NFC_API extern UINT8 RW_SetTraceLevel (UINT8 new_level);
1301 
1302 #endif /* RW_API_H */
1303