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