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