1/******************************************************************************
2 *
3 *  Copyright (C) 2010-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 *  NFA reader/writer API functions
23 *
24 ******************************************************************************/
25#ifndef NFA_RW_API_H
26#define NFA_RW_API_H
27
28#include "nfc_target.h"
29#include "nfa_api.h"
30
31/*****************************************************************************
32**  Constants and data types
33*****************************************************************************/
34
35/*****************************************************************************
36**  NFA T3T Constants and definitions
37*****************************************************************************/
38
39/* Block descriptor. (For non-NDEF read/write */
40typedef struct
41{
42    UINT16  service_code;       /* Service code for the block   */
43    UINT16  block_number;       /* Block number.                */
44} tNFA_T3T_BLOCK_DESC;
45
46
47
48/*****************************************************************************
49**  External Function Declarations
50*****************************************************************************/
51#ifdef __cplusplus
52extern "C"
53{
54#endif
55
56/*******************************************************************************
57**
58** Function         NFA_RwDetectNDef
59**
60** Description      Perform the NDEF detection procedure  using the appropriate
61**                  method for the currently activated tag.
62**
63**                  Upon successful completion of NDEF detection, a
64**                  NFA_NDEF_DETECT_EVT will be sent, to notify the application
65**                  of the NDEF attributes (NDEF total memory size, current
66**                  size, etc.).
67**
68**                  It is not mandatory to call this function -  NFA_RwReadNDef
69**                  and NFA_RwWriteNDef will perform NDEF detection internally if
70**                  not performed already. This API may be called to get a
71**                  tag's NDEF size before issuing a write-request.
72**
73** Returns:
74**                  NFA_STATUS_OK if successfully initiated
75**                  NFC_STATUS_REFUSED if tag does not support NDEF
76**                  NFA_STATUS_FAILED otherwise
77**
78*******************************************************************************/
79NFC_API extern tNFA_STATUS NFA_RwDetectNDef (void);
80
81/*******************************************************************************
82**
83** Function         NFA_RwReadNDef
84**
85** Description      Read NDEF message from tag. This function will internally
86**                  perform the NDEF detection procedure (if not performed
87**                  previously), and read the NDEF tag data using the
88**                  appropriate method for the currently activated tag.
89**
90**                  Upon successful completion of NDEF detection (if performed),
91**                  a NFA_NDEF_DETECT_EVT will be sent, to notify the application
92**                  of the NDEF attributes (NDEF total memory size, current size,
93**                  etc.).
94**
95**                  Upon receiving the NDEF message, the message will be sent to
96**                  the handler registered with NFA_RegisterNDefTypeHandler or
97**                  NFA_RequestExclusiveRfControl (if exclusive RF mode is active)
98**
99**
100** Returns:
101**                  NFA_STATUS_OK if successfully initiated
102**                  NFC_STATUS_REFUSED if tag does not support NDEF
103**                  NFC_STATUS_NOT_INITIALIZED if NULL NDEF was detected on the tag
104**                  NFA_STATUS_FAILED otherwise
105**
106*******************************************************************************/
107NFC_API extern tNFA_STATUS NFA_RwReadNDef (void);
108
109/*******************************************************************************
110**
111** Function         NFA_RwWriteNDef
112**
113** Description      Write NDEF data to the activated tag. This function will
114**                  internally perform NDEF detection if necessary, and write
115**                  the NDEF tag data using the appropriate method for the
116**                  currently activated tag.
117**
118**                  When the entire message has been written, or if an error
119**                  occurs, the app will be notified with NFA_RW_WRITE_CPLT_EVT.
120**
121**                  p_data needs to be persistent until NFA_RW_WRITE_CPLT_EVT
122**
123**
124** Returns:
125**                  NFA_STATUS_OK if successfully initiated
126**                  NFC_STATUS_REFUSED if tag does not support NDEF/locked
127**                  NFA_STATUS_FAILED otherwise
128**
129*******************************************************************************/
130NFC_API extern tNFA_STATUS NFA_RwWriteNDef (UINT8 *p_data, UINT32 len);
131
132
133/*****************************************************************************
134**
135** Function         NFA_RwPresenceCheck
136**
137** Description      Check if the tag is still in the field.
138**
139**                  The NFA_RW_PRESENCE_CHECK_EVT w/ status is used to
140**                  indicate presence or non-presence.
141**
142** Returns
143**                  NFA_STATUS_OK if successfully initiated
144**                  NFA_STATUS_FAILED otherwise
145**
146*****************************************************************************/
147NFC_API extern tNFA_STATUS NFA_RwPresenceCheck (void);
148
149/*****************************************************************************
150**
151** Function         NFA_RwFormatTag
152**
153** Description      Check if the tag is NDEF Formatable. If yes Format the
154**                  tag
155**
156**                  The NFA_RW_FORMAT_CPLT_EVT w/ status is used to
157**                  indicate if tag is formated or not.
158**
159** Returns
160**                  NFA_STATUS_OK if successfully initiated
161**                  NFA_STATUS_FAILED otherwise
162**
163*****************************************************************************/
164NFC_API extern tNFA_STATUS NFA_RwFormatTag (void);
165
166/*******************************************************************************
167** LEGACY / PROPRIETARY TAG READ AND WRITE APIs
168*******************************************************************************/
169
170
171/*******************************************************************************
172**
173** Function         NFA_RwLocateTlv
174**
175** Description:
176**      Search for the Lock/Memory contril TLV on the activated Type1/Type2 tag
177**
178**      Data is returned to the application using the NFA_TLV_DETECT_EVT. When
179**      search operation has completed, or if an error occurs, the app will be
180**      notified with NFA_TLV_DETECT_EVT.
181**
182** Description      Perform the TLV detection procedure  using the appropriate
183**                  method for the currently activated tag.
184**
185**                  Upon successful completion of TLV detection in T1/T2 tag, a
186**                  NFA_TLV_DETECT_EVT will be sent, to notify the application
187**                  of the TLV attributes (total lock/reserved bytes etc.).
188**                  However if the TLV type specified is NDEF then it is same as
189**                  calling NFA_RwDetectNDef and should expect to receive
190**                  NFA_NDEF_DETECT_EVT instead of NFA_TLV_DETECT_EVT
191**
192**                  It is not mandatory to call this function -  NFA_RwDetectNDef,
193**                  NFA_RwReadNDef and NFA_RwWriteNDef will perform TLV detection
194**                  internally if not performed already. An application may call
195**                  this API to check the a tag/card-emulator's total Reserved/
196**                  Lock bytes before issuing a write-request.
197**
198** Returns:
199**                  NFA_STATUS_OK if successfully initiated
200**                  NFC_STATUS_REFUSED if tlv_type is NDEF & tag won't support NDEF
201**                  NFA_STATUS_FAILED otherwise
202**
203*******************************************************************************/
204NFC_API extern tNFA_STATUS NFA_RwLocateTlv (UINT8 tlv_type);
205
206/*******************************************************************************
207**
208** Function         NFA_RwSetTagReadOnly
209**
210** Description:
211**      Sets tag as read only.
212**
213**      When tag is set as read only, or if an error occurs, the app will be
214**      notified with NFA_SET_TAG_RO_EVT.
215**
216** Returns:
217**      NFA_STATUS_OK if successfully initiated
218**      NFA_STATUS_REJECTED if protocol is not T1/T2/ISO15693
219**                 (or) if hard lock is not requested for protocol ISO15693
220**      NFA_STATUS_FAILED otherwise
221**
222*******************************************************************************/
223NFC_API extern tNFA_STATUS NFA_RwSetTagReadOnly (BOOLEAN b_hard_lock);
224
225/*******************************************************************************
226**
227** Function         NFA_RwT1tRid
228**
229** Description:
230**      Send a RID command to the activated Type 1 tag.
231**
232**      Data is returned to the application using the NFA_DATA_EVT. When the read
233**      operation has completed, or if an error occurs, the app will be notified with
234**      NFA_READ_CPLT_EVT.
235**
236** Returns:
237**      NFA_STATUS_OK if successfully initiated
238**      NFA_STATUS_NOT_INITIALIZED: type 1 tag not activated
239**      NFA_STATUS_FAILED otherwise
240**
241*******************************************************************************/
242NFC_API extern tNFA_STATUS NFA_RwT1tRid (void);
243
244/*******************************************************************************
245**
246** Function         NFA_RwT1tReadAll
247**
248** Description:
249**      Send a RALL command to the activated Type 1 tag.
250**
251**      Data is returned to the application using the NFA_DATA_EVT. When the read
252**      operation has completed, or if an error occurs, the app will be notified with
253**      NFA_READ_CPLT_EVT.
254**
255** Returns:
256**      NFA_STATUS_OK if successfully initiated
257**      NFA_STATUS_NOT_INITIALIZED: type 1 tag not activated
258**      NFA_STATUS_FAILED otherwise
259**
260*******************************************************************************/
261NFC_API extern tNFA_STATUS NFA_RwT1tReadAll (void);
262
263/*******************************************************************************
264**
265** Function         NFA_RwT1tRead
266**
267** Description:
268**      Send a READ command to the activated Type 1 tag.
269**
270**      Data is returned to the application using the NFA_DATA_EVT. When the read
271**      operation has completed, or if an error occurs, the app will be notified with
272**      NFA_READ_CPLT_EVT.
273**
274** Returns:
275**      NFA_STATUS_OK if successfully initiated
276**      NFA_STATUS_NOT_INITIALIZED: type 1 tag not activated
277**      NFA_STATUS_FAILED otherwise
278**
279*******************************************************************************/
280NFC_API extern tNFA_STATUS NFA_RwT1tRead (UINT8 block_number, UINT8 index);
281
282/*******************************************************************************
283**
284** Function         NFA_RwT1tWrite
285**
286** Description:
287**      Send a WRITE command to the activated Type 1 tag.
288**
289**      Data is returned to the application using the NFA_DATA_EVT. When the write
290**      operation has completed, or if an error occurs, the app will be notified with
291**      NFA_WRITE_CPLT_EVT.
292**
293** Returns:
294**      NFA_STATUS_OK if successfully initiated
295**      NFA_STATUS_NOT_INITIALIZED: type 1 tag not activated
296**      NFA_STATUS_FAILED otherwise
297**
298*******************************************************************************/
299NFC_API extern tNFA_STATUS NFA_RwT1tWrite (UINT8    block_number,
300                                           UINT8    index,
301                                           UINT8    data,
302                                           BOOLEAN  b_erase);
303
304/*******************************************************************************
305**
306** Function         NFA_RwT1tReadSeg
307**
308** Description:
309**      Send a RSEG command to the activated Type 1 tag.
310**
311**      Data is returned to the application using the NFA_DATA_EVT. When the read
312**      operation has completed, or if an error occurs, the app will be notified with
313**      NFA_READ_CPLT_EVT.
314**
315** Returns:
316**      NFA_STATUS_OK if successfully initiated
317**      NFA_STATUS_NOT_INITIALIZED: type 1 tag not activated
318**      NFA_STATUS_FAILED otherwise
319**
320*******************************************************************************/
321NFC_API extern tNFA_STATUS NFA_RwT1tReadSeg (UINT8 segment_number);
322
323/*******************************************************************************
324**
325** Function         NFA_RwT1tRead8
326**
327** Description:
328**      Send a READ8 command to the activated Type 1 tag.
329**
330**      Data is returned to the application using the NFA_DATA_EVT. When the read
331**      operation has completed, or if an error occurs, the app will be notified with
332**      NFA_READ_CPLT_EVT.
333**
334** Returns:
335**      NFA_STATUS_OK if successfully initiated
336**      NFA_STATUS_NOT_INITIALIZED: type 1 tag not activated
337**      NFA_STATUS_FAILED otherwise
338**
339*******************************************************************************/
340NFC_API extern tNFA_STATUS NFA_RwT1tRead8 (UINT8 block_number);
341
342/*******************************************************************************
343**
344** Function         NFA_RwT1tWrite8
345**
346** Description:
347**      Send a WRITE8_E / WRITE8_NE command to the activated Type 1 tag.
348**
349**      Data is returned to the application using the NFA_DATA_EVT. When the read
350**      operation has completed, or if an error occurs, the app will be notified with
351**      NFA_READ_CPLT_EVT.
352**
353** Returns:
354**      NFA_STATUS_OK if successfully initiated
355**      NFA_STATUS_NOT_INITIALIZED: type 1 tag not activated
356**      NFA_STATUS_FAILED otherwise
357**
358*******************************************************************************/
359NFC_API extern tNFA_STATUS NFA_RwT1tWrite8 (UINT8   block_number,
360                                            UINT8  *p_data,
361                                            BOOLEAN b_erase);
362
363/*******************************************************************************
364**
365** Function         NFA_RwT2tRead
366**
367** Description:
368**      Send a READ command to the activated Type 2 tag.
369**
370**      Data is returned to the application using the NFA_DATA_EVT. When the read
371**      operation has completed, or if an error occurs, the app will be notified with
372**      NFA_READ_CPLT_EVT.
373**
374** Returns:
375**      NFA_STATUS_OK if successfully initiated
376**      NFA_STATUS_NOT_INITIALIZED: type 2 tag not activated
377**      NFA_STATUS_FAILED otherwise
378**
379*******************************************************************************/
380NFC_API extern tNFA_STATUS NFA_RwT2tRead (UINT8 block_number);
381
382/*******************************************************************************
383**
384** Function         NFA_RwT2tWrite
385**
386** Description:
387**      Send an WRITE command to the activated Type 2 tag.
388**
389**      When the write operation has completed (or if an error occurs), the
390**      app will be notified with NFA_WRITE_CPLT_EVT.
391**
392** Returns:
393**      NFA_STATUS_OK if successfully initiated
394**      NFA_STATUS_NOT_INITIALIZED: type 2 tag not activated
395**      NFA_STATUS_FAILED otherwise
396**
397*******************************************************************************/
398NFC_API extern tNFA_STATUS NFA_RwT2tWrite (UINT8 block_number,  UINT8 *p_data);
399
400/*******************************************************************************
401**
402** Function         NFA_RwT2tSectorSelect
403**
404** Description:
405**      Send SECTOR SELECT command to the activated Type 2 tag.
406**
407**      When the sector select operation has completed (or if an error occurs), the
408**      app will be notified with NFA_SECTOR_SELECT_CPLT_EVT.
409**
410** Returns:
411**      NFA_STATUS_OK if successfully initiated
412**      NFA_STATUS_NOT_INITIALIZED: type 2 tag not activated
413**      NFA_STATUS_FAILED otherwise
414**
415*******************************************************************************/
416NFC_API extern tNFA_STATUS NFA_RwT2tSectorSelect (UINT8 sector_number);
417
418/*******************************************************************************
419**
420** Function         NFA_RwT3tRead
421**
422** Description:
423**      Send a CHECK (read) command to the activated Type 3 tag.
424**
425**      Data is returned to the application using the NFA_RW_DATA_EVT. When the read
426**      operation has completed, or if an error occurs, the app will be notified with
427**      NFA_READ_CPLT_EVT.
428**
429** Returns:
430**      NFA_STATUS_OK if successfully initiated
431**      NFA_STATUS_NOT_INITIALIZED: type 3 tag not activated
432**      NFA_STATUS_FAILED otherwise
433**
434*******************************************************************************/
435NFC_API extern tNFA_STATUS NFA_RwT3tRead (UINT8                num_blocks,
436                                          tNFA_T3T_BLOCK_DESC *t3t_blocks);
437
438/*******************************************************************************
439**
440** Function         NFA_RwT3tWrite
441**
442** Description:
443**      Send an UPDATE (write) command to the activated Type 3 tag.
444**
445**      When the write operation has completed (or if an error occurs), the
446**      app will be notified with NFA_WRITE_CPLT_EVT.
447**
448** Returns:
449**      NFA_STATUS_OK if successfully initiated
450**      NFA_STATUS_NOT_INITIALIZED: type 3 tag not activated
451**      NFA_STATUS_FAILED otherwise
452**
453*******************************************************************************/
454NFC_API extern tNFA_STATUS NFA_RwT3tWrite (UINT8                num_blocks,
455                                           tNFA_T3T_BLOCK_DESC *t3t_blocks,
456                                           UINT8               *p_data);
457
458/*******************************************************************************
459**
460** Function         NFA_RwI93Inventory
461**
462** Description:
463**      Send Inventory command to the activated ISO 15693 tag with/without AFI..
464**      If UID is provided then set UID[0]:MSB, ... UID[7]:LSB
465**
466**      When the write operation has completed (or if an error occurs), the
467**      app will be notified with NFA_I93_CMD_CPLT_EVT.
468**
469** Returns:
470**      NFA_STATUS_OK if successfully initiated
471**      NFA_STATUS_NOT_INITIALIZED: ISO 15693 tag not activated
472**      NFA_STATUS_FAILED otherwise
473**
474*******************************************************************************/
475NFC_API extern tNFA_STATUS NFA_RwI93Inventory (BOOLEAN afi_present, UINT8 afi, UINT8 *p_uid);
476
477/*******************************************************************************
478**
479** Function         NFA_RwI93StayQuiet
480**
481** Description:
482**      Send Stay Quiet command to the activated ISO 15693 tag.
483**
484**      When the operation has completed (or if an error occurs), the
485**      app will be notified with NFA_I93_CMD_CPLT_EVT.
486**
487** Returns:
488**      NFA_STATUS_OK if successfully initiated
489**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
490**      NFA_STATUS_FAILED otherwise
491**
492*******************************************************************************/
493NFC_API extern tNFA_STATUS NFA_RwI93StayQuiet (void);
494
495/*******************************************************************************
496**
497** Function         NFA_RwI93ReadSingleBlock
498**
499** Description:
500**      Send Read Single Block command to the activated ISO 15693 tag.
501**
502**      Data is returned to the application using the NFA_DATA_EVT. When the read
503**      operation has completed, or if an error occurs, the app will be notified with
504**      NFA_I93_CMD_CPLT_EVT.
505**
506** Returns:
507**      NFA_STATUS_OK if successfully initiated
508**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
509**      NFA_STATUS_FAILED otherwise
510**
511*******************************************************************************/
512NFC_API extern tNFA_STATUS NFA_RwI93ReadSingleBlock (UINT8 block_number);
513
514/*******************************************************************************
515**
516** Function         NFA_RwI93WriteSingleBlock
517**
518** Description:
519**      Send Write Single Block command to the activated ISO 15693 tag.
520**
521**      When the write operation has completed (or if an error occurs), the
522**      app will be notified with NFA_I93_CMD_CPLT_EVT.
523**
524** Returns:
525**      NFA_STATUS_OK if successfully initiated
526**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
527**      NFA_STATUS_FAILED otherwise
528**
529*******************************************************************************/
530NFC_API extern tNFA_STATUS NFA_RwI93WriteSingleBlock (UINT8 block_number,
531                                                      UINT8 *p_data);
532
533/*******************************************************************************
534**
535** Function         NFA_RwI93LockBlock
536**
537** Description:
538**      Send Lock block command to the activated ISO 15693 tag.
539**
540**      When the operation has completed (or if an error occurs), the
541**      app will be notified with NFA_I93_CMD_CPLT_EVT.
542**
543** Returns:
544**      NFA_STATUS_OK if successfully initiated
545**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
546**      NFA_STATUS_FAILED otherwise
547**
548*******************************************************************************/
549NFC_API extern tNFA_STATUS NFA_RwI93LockBlock (UINT8 block_number);
550
551/*******************************************************************************
552**
553** Function         NFA_RwI93ReadMultipleBlocks
554**
555** Description:
556**      Send Read Multiple Block command to the activated ISO 15693 tag.
557**
558**      Data is returned to the application using the NFA_DATA_EVT. When the read
559**      operation has completed, or if an error occurs, the app will be notified with
560**      NFA_I93_CMD_CPLT_EVT.
561**
562** Returns:
563**      NFA_STATUS_OK if successfully initiated
564**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
565**      NFA_STATUS_FAILED otherwise
566**
567*******************************************************************************/
568NFC_API extern tNFA_STATUS NFA_RwI93ReadMultipleBlocks (UINT8  first_block_number,
569                                                        UINT16 number_blocks);
570
571/*******************************************************************************
572**
573** Function         NFA_RwI93WriteMultipleBlocks
574**
575** Description:
576**      Send Write Multiple Block command to the activated ISO 15693 tag.
577**
578**      When the write operation has completed (or if an error occurs), the
579**      app will be notified with NFA_I93_CMD_CPLT_EVT.
580**
581** Returns:
582**      NFA_STATUS_OK if successfully initiated
583**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
584**      NFA_STATUS_FAILED otherwise
585**
586*******************************************************************************/
587NFC_API extern tNFA_STATUS NFA_RwI93WriteMultipleBlocks (UINT8  first_block_number,
588                                                         UINT16 number_blocks,
589                                                         UINT8  *p_data);
590
591/*******************************************************************************
592**
593** Function         NFA_RwI93Select
594**
595** Description:
596**      Send Select command to the activated ISO 15693 tag.
597**
598**      UID[0]: 0xE0, MSB
599**      UID[1]: IC Mfg Code
600**      ...
601**      UID[7]: LSB
602**
603**      When the operation has completed (or if an error occurs), the
604**      app will be notified with NFA_I93_CMD_CPLT_EVT.
605**
606** Returns:
607**      NFA_STATUS_OK if successfully initiated
608**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
609**      NFA_STATUS_FAILED otherwise
610**
611*******************************************************************************/
612NFC_API extern tNFA_STATUS NFA_RwI93Select (UINT8 *p_uid);
613
614/*******************************************************************************
615**
616** Function         NFA_RwI93ResetToReady
617**
618** Description:
619**      Send Reset to ready command to the activated ISO 15693 tag.
620**
621**      When the operation has completed (or if an error occurs), the
622**      app will be notified with NFA_I93_CMD_CPLT_EVT.
623**
624** Returns:
625**      NFA_STATUS_OK if successfully initiated
626**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
627**      NFA_STATUS_FAILED otherwise
628**
629*******************************************************************************/
630NFC_API extern tNFA_STATUS NFA_RwI93ResetToReady (void);
631
632/*******************************************************************************
633**
634** Function         NFA_RwI93WriteAFI
635**
636** Description:
637**      Send Write AFI command to the activated ISO 15693 tag.
638**
639**      When the operation has completed (or if an error occurs), the
640**      app will be notified with NFA_I93_CMD_CPLT_EVT.
641**
642** Returns:
643**      NFA_STATUS_OK if successfully initiated
644**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
645**      NFA_STATUS_FAILED otherwise
646**
647*******************************************************************************/
648NFC_API extern tNFA_STATUS NFA_RwI93WriteAFI (UINT8 afi);
649
650/*******************************************************************************
651**
652** Function         NFA_RwI93LockAFI
653**
654** Description:
655**      Send Lock AFI command to the activated ISO 15693 tag.
656**
657**      When the operation has completed (or if an error occurs), the
658**      app will be notified with NFA_I93_CMD_CPLT_EVT.
659**
660** Returns:
661**      NFA_STATUS_OK if successfully initiated
662**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
663**      NFA_STATUS_FAILED otherwise
664**
665*******************************************************************************/
666NFC_API extern tNFA_STATUS NFA_RwI93LockAFI (void);
667
668/*******************************************************************************
669**
670** Function         NFA_RwI93WriteDSFID
671**
672** Description:
673**      Send Write DSFID command to the activated ISO 15693 tag.
674**
675**      When the operation has completed (or if an error occurs), the
676**      app will be notified with NFA_I93_CMD_CPLT_EVT.
677**
678** Returns:
679**      NFA_STATUS_OK if successfully initiated
680**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
681**      NFA_STATUS_FAILED otherwise
682**
683*******************************************************************************/
684NFC_API extern tNFA_STATUS NFA_RwI93WriteDSFID (UINT8 dsfid);
685
686/*******************************************************************************
687**
688** Function         NFA_RwI93LockDSFID
689**
690** Description:
691**      Send Lock DSFID command to the activated ISO 15693 tag.
692**
693**      When the operation has completed (or if an error occurs), the
694**      app will be notified with NFA_I93_CMD_CPLT_EVT.
695**
696** Returns:
697**      NFA_STATUS_OK if successfully initiated
698**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
699**      NFA_STATUS_FAILED otherwise
700**
701*******************************************************************************/
702NFC_API extern tNFA_STATUS NFA_RwI93LockDSFID (void);
703
704/*******************************************************************************
705**
706** Function         NFA_RwI93GetSysInfo
707**
708** Description:
709**      Send Get system information command to the activated ISO 15693 tag.
710**      If UID is provided then set UID[0]:MSB, ... UID[7]:LSB
711**
712**      When the operation has completed (or if an error occurs), the
713**      app will be notified with NFA_I93_CMD_CPLT_EVT.
714**
715** Returns:
716**      NFA_STATUS_OK if successfully initiated
717**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
718**      NFA_STATUS_FAILED otherwise
719**
720*******************************************************************************/
721NFC_API extern tNFA_STATUS NFA_RwI93GetSysInfo (UINT8 *p_uid);
722
723/*******************************************************************************
724**
725** Function         NFA_RwI93GetMultiBlockSecurityStatus
726**
727** Description:
728**      Send Get Multiple block security status command to the activated ISO 15693 tag.
729**
730**      Data is returned to the application using the NFA_DATA_EVT. When the read
731**      operation has completed, or if an error occurs, the app will be notified with
732**      NFA_I93_CMD_CPLT_EVT.
733**
734** Returns:
735**      NFA_STATUS_OK if successfully initiated
736**      NFA_STATUS_WRONG_PROTOCOL: ISO 15693 tag not activated
737**      NFA_STATUS_FAILED otherwise
738**
739*******************************************************************************/
740NFC_API extern tNFA_STATUS NFA_RwI93GetMultiBlockSecurityStatus (UINT8  first_block_number,
741                                                                 UINT16 number_blocks);
742
743#ifdef __cplusplus
744}
745#endif
746
747#endif /* NFA_RW_API_H */
748