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