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