1 /* 2 * Copyright (C) 2010 NXP Semiconductors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 /** 18 * \file phNfcHalTypes.h 19 * \brief Structure declarations/type definitions belonging to the HAL subsystem. 20 * 21 * Project: NFC MW / HAL 22 * 23 * $Date: Thu Apr 8 17:11:39 2010 $ 24 * $Author: ing04880 $ 25 * $Revision: 1.106 $ 26 * $Aliases: NFC_FRI1.1_WK1007_SDK,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $ 27 * 28 */ 29 30 31 #ifndef PHNFCHALTYPES_H /* */ 32 #define PHNFCHALTYPES_H /* */ 33 34 /** 35 * \name HAL Types 36 * 37 * File: \ref phNfcHalTypes.h 38 * 39 * Developed By: Ravindra U. 40 * 41 */ 42 43 /*@{*/ 44 #define PHNFCHALTYPES_FILEREVISION "$Revision: 1.106 $" /**< \ingroup grp_file_attributes */ 45 #define PHNFCHALTYPES_FILEALIASES "$Aliases: NFC_FRI1.1_WK1007_SDK,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $" /**< \ingroup grp_file_attributes */ 46 /*@}*/ 47 48 #include <phNfcTypes.h> 49 #include <phNfcCompId.h> 50 #include <phNfcConfig.h> 51 52 #ifndef NXP_HAL_MEM_INFO_SIZE 53 #define NXP_HAL_MEM_INFO_SIZE 0x01U 54 #endif 55 56 #if (NXP_HAL_MEM_INFO_SIZE > 0x01) 57 #define NXP_FW_UPLOAD_PROGRESS 0x965AU 58 #define NXP_FW_UPLOAD_SUCCESS 0x0000U 59 #else 60 #define NXP_FW_UPLOAD_PROGRESS 0x5AU 61 #define NXP_FW_UPLOAD_SUCCESS 0x00U 62 #endif 63 64 65 typedef struct phHal_sMemInfo 66 { 67 uint16_t fw_magic; 68 uint16_t fw_rfu; 69 uint32_t hal_version; 70 }phHal_sMemInfo_t; 71 72 73 /** \ingroup grp_hal_common 74 * 75 * \if hal 76 * \brief Protocol Support Information 77 * \else 78 * \brief HAL-Specific 79 * \endif 80 * 81 * The <em> Supported Protocols Structure </em> holds all protocol supported by the current NFC 82 * device. 83 * 84 * \note All members of this structure are output parameters [out]. 85 * 86 */ 87 typedef phNfc_sSupProtocol_t phHal_sSupProtocol_t; 88 89 90 /** \ingroup grp_hal_common 91 * 92 * 93 * \if hal 94 * \brief Information related to the NFC Device 95 * \else 96 * \brief HAL-Specific 97 * \endif 98 * 99 * The <em> Device Information Structure </em> holds information 100 * related to the NFC IC read during initialization time. 101 * It allows the caller firware, hardware version, the model id, 102 * HCI verison supported and vendor name. Refer to the NFC Device 103 * User Manual on how to interpret each of the values. In addition 104 * it also contains capabilities of the NFC Device such as the 105 * protocols supported in Reader and emulation mode 106 * 107 */ 108 109 typedef phNfc_sDeviceCapabilities_t phHal_sDeviceCapabilities_t; 110 111 112 /** 113 * \ingroup grp_hal_common 114 * 115 * \if hal 116 * \brief Hardware Reference - The Peripheral Representation 117 * \else 118 * \brief HAL-Specific 119 * \endif 120 * 121 * The Hardware Reference structure is filled as part of the open function and 122 * contains information regarding connected peripheral NFC device. It also 123 * stores the refernce to the communication driver passed by the HAL client 124 * for usage during communication with the NFC Device 125 * 126 * \note The caller can consider this structure atomic, no interpretation is required 127 * for HAL operation. 128 * 129 * \sa phHal4Nfc_Open . 130 * 131 */ 132 133 /** 134 * \ingroup grp_hal_common 135 * 136 * \brief Hardware Reference - The Peripheral Representation 137 * 138 * The Hardware Reference structure is filled as part of the open function and 139 * contains information regarding connected peripheral NFC device. It also 140 * stores the refernce to the communication driver passed by the HAL client 141 * for usage during communication with the NFC Device 142 * 143 * \note The caller can consider this structure atomic, no interpretation is required 144 * for HAL operation. 145 * 146 */ 147 typedef struct phHal_sHwReference 148 { 149 /**< Will be usable/valid after the Open function. */ 150 void *p_board_driver; 151 /**< Session Identifier for the established session */ 152 uint8_t session_id[SESSIONID_SIZE]; 153 /**< SMX Connected TRUE/FALSE */ 154 uint8_t smx_connected; 155 /**< UICC Connected TRUE/FALSE */ 156 uint8_t uicc_connected; 157 /**< UICC Reader Mode is Active TRUE/FALSE */ 158 uint8_t uicc_rdr_active; 159 /**< Device information. */ 160 phNfc_sDeviceCapabilities_t device_info; 161 /**< Context of the HAL Layer */ 162 void *hal_context; 163 /**< Context of the DAL Layer */ 164 void *dal_context; 165 } phHal_sHwReference_t; 166 167 168 /** \ingroup grp_hal_common 169 * 170 * \if hal 171 * \brief Hardware configuration - Configuration Parameters for the NFC Device 172 * \else 173 * \brief HAL-Specific 174 * \endif 175 * 176 * The parameters used to configure the device during the initialisation. 177 * This structure is used internally by the HAL implementation and is filled 178 * up based on various configuration parameters from the config file 179 * \note None. 180 * 181 */ 182 183 typedef struct phHal_sHwConfig 184 { 185 186 uint8_t session_id[SESSIONID_SIZE]; /**< Session Identifier for 187 the established session */ 188 189 uint8_t clk_req; /**< Clock Request Setting */ 190 191 uint8_t input_clk; /**< Input Clock Setting */ 192 193 } phHal_sHwConfig_t; 194 195 196 197 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ 198 199 /* This data structure is not used anymore and will be removed in subsequent 200 release */ 201 typedef struct phHal_sDepFlags 202 { 203 unsigned int MetaChaining : 1; 204 unsigned int NADPresent : 1; 205 } phHal_sDepFlags_t; 206 207 /* This data structure is not used anymore and will be removed in subsequent 208 release */ 209 210 typedef struct phHal_sDepAdditionalInfo 211 { 212 phHal_sDepFlags_t DepFlags; 213 uint8_t NAD; 214 } phHal_sDepAdditionalInfo_t; 215 216 217 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ 218 219 220 221 /** \ingroup grp_hal_common 222 * 223 * \if hal 224 * \brief Enumerated MIFARE Commands 225 * \else 226 * \brief HAL-Specific 227 * \endif 228 * 229 * The <em> Mifare Command List Enumerator </em> lists all available Mifare native commands. 230 * 231 * \note None. 232 * 233 */ 234 235 typedef phNfc_eMifareCmdList_t phHal_eMifareCmdList_t; 236 237 #define phHal_eMifareRaw phNfc_eMifareRaw 238 #define phHal_eMifareAuthentA phNfc_eMifareAuthentA 239 #define phHal_eMifareAuthentB phNfc_eMifareAuthentB 240 #define phHal_eMifareRead16 phNfc_eMifareRead16 241 #define phHal_eMifareRead phNfc_eMifareRead 242 #define phHal_eMifareWrite16 phNfc_eMifareWrite16 243 #define phHal_eMifareWrite4 phNfc_eMifareWrite4 244 #define phHal_eMifareInc phNfc_eMifareInc 245 #define phHal_eMifareDec phNfc_eMifareDec 246 #define phHal_eMifareTransfer phNfc_eMifareTransfer 247 #define phHal_eMifareRestore phNfc_eMifareRestore 248 #define phHal_eMifareReadSector phNfc_eMifareReadSector 249 #define phHal_eMifareWriteSector phNfc_eMifareWriteSector 250 #define phHal_eMifareInvalidCmd phNfc_eMifareInvalidCmd 251 252 253 /** \ingroup grp_hal_common 254 * 255 * The <em> T=Cl Command List Enumerator </em> lists all available T=Cl Commands. 256 * 257 * \note None. 258 * 259 */ 260 typedef phNfc_eIso14443_4_CmdList_t phHal_eIso14443_4_CmdList_t; 261 262 #define phHal_eIso14443_4_Raw phNfc_eIso14443_4_Raw 263 264 265 /** \ingroup grp_hal_common 266 * 267 * The <em> NFCIP1 Command List Enumerator </em> lists all available NFCIP1 Commands. 268 * 269 * \note None. 270 * 271 */ 272 typedef phNfc_eNfcIP1CmdList_t phHal_eNfcIP1CmdList_t; 273 274 #define phHal_eNfcIP1_Raw phNfc_eNfcIP1_Raw 275 276 277 /** \ingroup grp_hal_common 278 * 279 * The <em> ISO15693 Command List Enumerator </em> lists all available ISO15693 Commands. 280 * 281 * \note None. 282 * 283 */ 284 285 typedef phNfc_eIso15693_CmdList_t phHal_eIso15693_CmdList_t; 286 287 #if 0 288 #define phHal_eIso15693_Raw phNfc_eIso15693_Raw 289 #endif 290 #define phHal_eIso15693_Cmd phNfc_eIso15693_Cmd 291 #define phHal_eIso15693_Invalid phNfc_eIso15693_Invalid 292 293 /** \ingroup grp_hal_common 294 * 295 * The <em> Felica Command List Enumerator </em> lists all available Felica Commands. 296 * 297 * \note None. 298 * 299 */ 300 301 typedef enum phHal_eFelicaCmdList 302 { 303 phHal_eFelica_Raw = 0xF0U, /**< Felica Raw command:\n 304 - This command sends the data buffer directly 305 to the remote device */ 306 phHal_eFelica_Check = 0x00, /**< Felica Check command:\n 307 - This command checks the data from the Felica 308 remote device */ 309 phHal_eFelica_Update = 0x01, /**< Felica Update command:\n 310 - This command updates the data onto the Felica 311 remote device */ 312 phHal_eFelica_Invalid = 0xFFU /**< Invalid Command */ 313 } phHal_eFelicaCmdList_t; 314 315 316 typedef enum phHal_eJewelCmdList 317 { 318 phHal_eJewel_Raw = 0x00U, /**< Jewel command:\n 319 - This command sends the data buffer directly 320 to the remote device */ 321 phHal_eJewel_Invalid = 0xFFU /**< Invalid jewel command */ 322 }phHal_eJewelCmdList_t; 323 324 325 326 /** \ingroup grp_hal_nfci 327 * 328 * \if hal 329 * \brief Remote Device Reader A RF Gate Information Container 330 * \else 331 * \brief HAL-Specific 332 * \endif 333 * 334 * The <em> Reader A structure </em> includes the available information 335 * related to the discovered ISO14443A remote device. This information 336 * is updated for every device discovery. 337 * \note None. 338 * 339 */ 340 typedef phNfc_sIso14443AInfo_t phHal_sIso14443AInfo_t; 341 342 /** \ingroup grp_hal_nfci 343 * 344 * \if hal 345 * \brief Remote Device Reader B RF Gate Information Container 346 * \else 347 * \brief HAL-Specific 348 * \endif 349 * 350 * The <em> Reader B structure </em> includes the available information 351 * related to the discovered ISO14443B remote device. This information 352 * is updated for every device discovery. 353 * \note None. 354 * 355 */ 356 357 typedef phNfc_sIso14443BInfo_t phHal_sIso14443BInfo_t; 358 359 typedef phNfc_sIso14443BPrimeInfo_t phHal_sIso14443BPrimeInfo; 360 361 362 /** \ingroup grp_hal_nfci 363 * 364 * \if hal 365 * \brief Remote Device Jewel Reader RF Gate Information Container 366 * \else 367 * \brief HAL-Specific 368 * \endif 369 * 370 * The <em> Jewel Reader structure </em> includes the available information 371 * related to the discovered Jewel remote device. This information 372 * is updated for every device discovery. 373 * \note None. 374 * 375 */ 376 377 378 typedef phNfc_sJewelInfo_t phHal_sJewelInfo_t; 379 380 /** \ingroup grp_hal_nfci 381 * 382 * \if hal 383 * \brief Remote Device Felica Reader RF Gate Information Container 384 * \else 385 * \brief HAL-Specific 386 * \endif 387 * 388 * The <em> Felica Reader structure </em> includes the available information 389 * related to the discovered Felica remote device. This information 390 * is updated for every device discovery. 391 * \note None. 392 * 393 */ 394 395 typedef phNfc_sFelicaInfo_t phHal_sFelicaInfo_t; 396 397 398 /** \ingroup grp_hal_nfci 399 * 400 * \if hal 401 * \brief Remote Device Reader 15693 RF Gate Information Container 402 * \else 403 * \brief HAL-Specific 404 * \endif 405 * 406 * The <em> Reader A structure </em> includes the available information 407 * related to the discovered ISO15693 remote device. This information 408 * is updated for every device discovery. 409 * \note None. 410 * 411 */ 412 413 typedef phNfc_sIso15693Info_t phHal_sIso15693Info_t; 414 415 416 /** \ingroup grp_hal_nfci 417 * 418 * \if hal 419 * \brief NFC Data Rate Supported between the Reader and the Target 420 * \else 421 * \brief HAL-Specific 422 * \endif 423 * 424 * The <em> \ref phHalNfc_eDataRate enum </em> lists all the Data Rate 425 * values to be used to determine the rate at which the data is transmitted 426 * to the target. 427 * 428 * \note None. 429 */ 430 431 432 typedef phNfc_eDataRate_t phHalNfc_eDataRate_t; 433 434 435 /** \ingroup grp_hal_nfci 436 * 437 * \if hal 438 * \brief NFCIP1 Gate Information Container 439 * \else 440 * \brief HAL-Specific 441 * \endif 442 * 443 * The <em> NFCIP1 structure </em> includes the available information 444 * related to the discovered NFCIP1 remote device. This information 445 * is updated for every device discovery. 446 * \note None. 447 * 448 */ 449 450 typedef phNfc_sNfcIPInfo_t phHal_sNfcIPInfo_t; 451 452 453 /** \ingroup grp_hal_nfci 454 * 455 * \if hal 456 * \brief Remote Device Specific Information Container 457 * \else 458 * \brief HAL-Specific 459 * \endif 460 * 461 * The <em> Remote Device Information Union </em> includes the available Remote Device Information 462 * structures. Following the device detected, the corresponding data structure is used. 463 * 464 * \note None. 465 * 466 */ 467 468 typedef phNfc_uRemoteDevInfo_t phHal_uRemoteDevInfo_t; 469 470 /** \ingroup grp_hal_nfci 471 * 472 * \if hal 473 * \brief RF Device Type Listing 474 * \else 475 * \brief HAL-Specific 476 * \endif 477 * 478 * The <em> RF Device Type List </em> is used to identify the type of 479 * remote device that is discovered/connected. There seperate 480 * types to identify a Remote Reader (denoted by _PCD) and 481 * Remote Tag (denoted by _PICC) 482 * \note None. 483 * 484 */ 485 486 typedef phNfc_eRFDevType_t phHal_eRFDevType_t; 487 488 #define phHal_eUnknown_DevType phNfc_eUnknown_DevType 489 490 /* Specific PCD Devices */ 491 #define phHal_eISO14443_A_PCD phNfc_eISO14443_A_PCD 492 #define phHal_eISO14443_B_PCD phNfc_eISO14443_B_PCD 493 #define phHal_eISO14443_BPrime_PCD phNfc_eISO14443_BPrime_PCD 494 #define phHal_eFelica_PCD phNfc_eFelica_PCD 495 #define phHal_eJewel_PCD phNfc_eJewel_PCD 496 #define phHal_eISO15693_PCD phNfc_eISO15693_PCD 497 /* Generic PCD Type */ 498 #define phHal_ePCD_DevType phNfc_ePCD_DevType 499 500 /* Generic PICC Type */ 501 #define phHal_ePICC_DevType phNfc_ePICC_DevType 502 /* Specific PICC Devices */ 503 #define phHal_eISO14443_A_PICC phNfc_eISO14443_A_PICC 504 #define phHal_eISO14443_4A_PICC phNfc_eISO14443_4A_PICC 505 #define phHal_eISO14443_3A_PICC phNfc_eISO14443_3A_PICC 506 #define phHal_eMifare_PICC phNfc_eMifare_PICC 507 #define phHal_eISO14443_B_PICC phNfc_eISO14443_B_PICC 508 #define phHal_eISO14443_4B_PICC phNfc_eISO14443_4B_PICC 509 #define phHal_eISO14443_BPrime_PICC phNfc_eISO14443_BPrime_PICC 510 #define phHal_eFelica_PICC phNfc_eFelica_PICC 511 #define phHal_eJewel_PICC phNfc_eJewel_PICC 512 #define phHal_eISO15693_PICC phNfc_eISO15693_PICC 513 514 /* NFC-IP1 Device Types */ 515 #define phHal_eNfcIP1_Target phNfc_eNfcIP1_Target 516 #define phHal_eNfcIP1_Initiator phNfc_eNfcIP1_Initiator 517 518 /* Other Sources */ 519 #define phHal_eInvalid_DevType phNfc_eInvalid_DevType 520 521 /** \ingroup grp_hal_nfci 522 * 523 * \if hal 524 * \brief Remote Device Type Listing 525 * \else 526 * \brief HAL-Specific 527 * \endif 528 * 529 * The <em> Remote Device Type List </em> is used to identify the type of 530 * remote device that is discovered/connected 531 * \note This is same as RF Device Type List. 532 * 533 */ 534 typedef phNfc_eRemDevType_t phHal_eRemDevType_t; 535 536 /** \ingroup grp_hal_common 537 * 538 * 539 * \if hal 540 * \brief Common Command Attribute 541 * \else 542 * \brief HAL-Specific 543 * \endif 544 * 545 * The <em> Hal Command Union </em> includes each available type of Commands. 546 * 547 * \note None. 548 * 549 */ 550 551 typedef phNfc_uCmdList_t phHal_uCmdList_t; 552 553 554 /** \ingroup grp_hal_nfci 555 * 556 * \if hal 557 * \brief Remote Device Information Structure 558 * \else 559 * \brief HAL-Specific 560 * \endif 561 * 562 * The <em> Remote Device Information Structure </em> holds information about one single Remote 563 * Device detected by the polling function .\n 564 * It lists parameters common to all supported remote devices. 565 * 566 * \note 567 * 568 * \if hal 569 * \sa \ref phHal4Nfc_ConfigureDiscovery and \ref phHal4Nfc_Connect 570 * \else 571 * \sa 572 * \endif 573 * 574 */ 575 576 typedef phNfc_sRemoteDevInformation_t phHal_sRemoteDevInformation_t; 577 578 579 580 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ 581 582 /* This data structure is not used anymore and will be removed in subsequent 583 release */ 584 585 typedef struct phHal_sDevInputParam 586 { 587 uint8_t FelicaPollPayload[5]; 588 589 590 uint8_t NfcPollPayload[5]; 591 592 593 uint8_t NFCIDAuto; 594 595 596 uint8_t NFCID3i[PHHAL_NFCID_LENGTH]; 597 598 599 600 uint8_t DIDiUsed; 601 602 uint8_t CIDiUsed; 603 604 uint8_t NfcNADiUsed; 605 606 /*+ MantisId : 31 - JP - 09-01-2006 */ 607 /*uint8_t TClNADiUsed; */ 608 609 /*- MantisId : 31 - JP - 09-01-2006 */ 610 uint8_t GeneralByte[48]; 611 612 613 uint8_t GeneralByteLength; 614 615 616 uint8_t ISO14443_4B_AFI; 617 618 } phHal_sDevInputParam_t; 619 620 621 622 623 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ 624 625 626 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ 627 /* TARGET STRUCTURES */ 628 629 630 /** \ingroup grp_hal_common 631 * 632 * \if hal 633 * \brief Transceive Information Data Structure for sending commands/response 634 * to the remote device 635 * \else 636 * \brief HAL-Specific 637 * \endif 638 * 639 * The <em> Transceive Information Data Structure </em> is used to pass the 640 * Command, Address (only required for MIFARE) and the send and receive data 641 * data structure (buffer and length) for communication with remote device 642 * 643 * 644 */ 645 646 typedef phNfc_sTransceiveInfo_t phHal_sTransceiveInfo_t; 647 648 649 /** \ingroup grp_hal_nfci 650 * 651 * \if hal 652 * \brief Input information for the Type A tags 653 * \else 654 * \brief HAL-Specific 655 * \endif 656 * 657 * The <em> \ref phHal_sIso14443ACfg structure </em> holds the information 658 * required for the NFC device to be used during ISO14443A target discovery 659 * 660 * \note None. 661 */ 662 typedef struct phHal_sIso14443ACfg 663 { 664 uint8_t Auto_Activation; /**< Enable Auto Activation for 665 Technology A \n 666 If set to 0, the activation procedure will stop 667 after Select (SAK has been received). 668 The host could evaluate SAK value and then decide: 669 - to start communicating with the remote card 670 using proprietary commands (see NXP_MIFARE_RAW 671 and NXP_MIFARE_CMD) 672 or 673 - to activate the remote card up to ISO14443-4 674 level (RATS and PPS) using 675 CONTINUE ACTIVATION command 676 If set to 1, activation follows the flow described in 677 ETSI HCI specification (restrict detection to 678 ISO14443-4 compliant cards). 679 */ 680 }phHal_sIso14443ACfg_t; 681 682 683 /** \ingroup grp_hal_nfci 684 * 685 * \if hal 686 * \brief Input information for the Type B tags 687 * \else 688 * \brief HAL-Specific 689 * \endif 690 * 691 * The <em> \ref phHal_sIso14443BCfg structure </em> holds the information 692 * required for the NFC device to be used during ISO14443B target discovery 693 * 694 * \note None. 695 */ 696 typedef struct phHal_sIso14443BCfg 697 { 698 uint8_t AppFamily_ID; /**< Application Family Identifier for 699 Technology B, 0x00 means all application */ 700 }phHal_sIso14443BCfg_t; 701 702 /** \ingroup grp_hal_nfci 703 * 704 * \if hal 705 * \brief Input information for the Felica tags 706 * \else 707 * \brief HAL-Specific 708 * \endif 709 * 710 * The <em> \ref phHal_sFelicaCfg_t structure </em> holds the information 711 * required for the NFC device to be used during Felica target discovery 712 * 713 * \note None. 714 */ 715 716 typedef struct phHal_sFelicaCfg 717 { 718 uint8_t SystemCode[PHHAL_FEL_SYS_CODE_LEN]; /**< System code for Felica tags */ 719 720 }phHal_sFelicaCfg_t; 721 722 723 /** \ingroup grp_hal_nfci 724 * 725 * \if hal 726 * \brief Poll Device Information for conifiguring the discovery wheel 727 Reader and Card Emulation Phases 728 * \else 729 * \brief HAL-Specific 730 * \endif 731 * 732 * The <em> \ref phHal_sPollDevInfo_t enum </em> is used to enable/disable 733 * phases of the discovery wheel related to specific reader types and 734 * card emulation phase 735 * \note Enabling specific Reader technology when NFCIP1 speed is set in the 736 * phNfc_sADD_Cfg_t is implicitly done in HAL. Use this structure to only 737 * enable/disable Card Reader Functionality 738 */ 739 typedef phNfc_sPollDevInfo_t phHal_sPollDevInfo_t; 740 741 742 /** \ingroup grp_hal_common 743 * 744 * \if hal 745 * \brief Identifies Type of Host 746 * \else 747 * \brief HAL-Specific 748 * \endif 749 * 750 * This enumeration is used to identify the type of the host providing the 751 * information or the notification to the Terminal host. 752 * \note None. 753 */ 754 755 typedef enum phHal_HostType { 756 /* 757 * This type identifies the host controller 758 * in the NFC device 759 */ 760 phHal_eHostController = 0x00U, 761 /* 762 * This type identifies the Host Device 763 * controlling the NFC device. 764 */ 765 phHal_eTerminalHost = 0x01U, 766 /* 767 * This type identifies the uicc host 768 * connnected to the NFC device 769 */ 770 phHal_eUICCHost = 0x02U, 771 /* Host type is unknown */ 772 phHal_eUnknownHost = 0xFFU 773 }phHal_HostType_t; 774 775 776 /** \ingroup grp_hal_nfci 777 * 778 * \if hal 779 * \brief P2P speed for the Initiator 780 * \else 781 * \brief HAL-Specific 782 * \endif 783 * 784 * The <em> \ref phHal_eP2PMode enum </em> lists all the NFCIP1 speeds 785 * to be used for configuring the NFCIP1 discovery 786 * 787 * \note None. 788 */ 789 790 #define phHal_eDefaultP2PMode phNfc_eDefaultP2PMode 791 #define phHal_ePassive106 phNfc_ePassive106 792 #define phHal_ePassive212 phNfc_ePassive212 793 #define phHal_ePassive424 phNfc_ePassive424 794 #define phHal_eActive phNfc_eActive 795 #define phHal_eP2P_ALL phNfc_eP2P_ALL 796 #define phHal_eInvalidP2PMode phNfc_eInvalidP2PMode 797 798 799 /** \ingroup grp_hal_common 800 * 801 * \if hal 802 * \brief Identities the type of Notification 803 * \else 804 * \brief HAL-Specific 805 * \endif 806 * 807 * This enumeration is used to specify the type of notification notified 808 * to the upper layer. This classifies the notification into two types 809 * one for the discovery notifications and the other for all the remaining 810 * event notifications 811 * \note None. 812 */ 813 814 815 typedef phNfc_eNotificationType_t phHal_eNotificationType_t; 816 817 818 /** \ingroup grp_hal_common 819 * 820 * \if hal 821 * \brief Identifies the type of event notification 822 * \else 823 * \brief HAL-Specific 824 * \endif 825 * 826 * This enumeration is used to identify the type of the event notified 827 * to the Terminal host. 828 * \note None. 829 */ 830 831 typedef enum phHal_Event { 832 833 834 /* Transaction Events */ 835 NFC_EVT_END_OF_TRANSACTION = 0x11U , 836 NFC_EVT_TRANSACTION = 0x12U , 837 NFC_EVT_START_OF_TRANSACTION = 0x20U , 838 839 /* Field Events */ 840 NFC_EVT_FIELD_ON = 0x31U, 841 NFC_EVT_FIELD_OFF = 0x34U, 842 843 /* Card/Target Activation Events */ 844 NFC_EVT_ACTIVATED = 0x33U, 845 NFC_EVT_DEACTIVATED = 0x32U, 846 847 NFC_EVT_PROTECTED = 0x24U , 848 849 /* Reader Phases configuration request by UICC */ 850 NFC_UICC_RDPHASES_ACTIVATE_REQ = 0x43U, 851 NFC_UICC_RDPHASES_DEACTIVATE_REQ = 0x44U, 852 853 /* Connectivity and Triggering Events - Future Use */ 854 NFC_EVT_CONNECTIVITY = 0x10U , 855 NFC_EVT_OPERATION_ENDED = 0x13U , 856 857 /* NXP Specific System Information Events */ 858 NFC_INFO_TXLDO_OVERCUR = 0x71U, 859 NFC_INFO_MEM_VIOLATION = 0x73U, 860 NFC_INFO_TEMP_OVERHEAT = 0x74U, 861 NFC_INFO_LLC_ERROR = 0x75U, 862 863 /* NXP EVENTS */ 864 NFC_EVT_MIFARE_ACCESS = 0x35, 865 NFC_EVT_APDU_RECEIVED = 0x36, 866 NFC_EVT_EMV_CARD_REMOVAL = 0x37 867 868 }phHal_Event_t; 869 870 typedef phNfc_sUiccInfo_t phHal_sUiccInfo_t; 871 872 /** \ingroup grp_hal_common 873 * 874 * \if hal 875 * \brief Event notification Information 876 * \else 877 * \brief HAL-Specific 878 * \endif 879 * 880 * This structure provides the information about the event notified 881 * to the terminal host. 882 * \note None. 883 */ 884 885 typedef struct phHal_sEventInfo 886 { 887 /* Type of the host issuing the event */ 888 phHal_HostType_t eventHost; 889 /* Type of the source issuing the event */ 890 phHal_eRFDevType_t eventSource; 891 /* Type of the source issuing the event */ 892 phHal_Event_t eventType; 893 union uEventInfo 894 { 895 /* Parameter information Information is obtained if the eventType is 896 * NFC_EVT_TRANSACTION for UICC. 897 */ 898 phHal_sUiccInfo_t uicc_info; 899 /* AID Information is obtained if the eventType is 900 * NFC_EVT_TRANSACTION. 901 */ 902 phNfc_sData_t aid; 903 /* Overheat Status Information is obtained if the eventType is 904 * NFC_INFO_TEMP_OVERHEAT. 905 */ 906 uint8_t overheat_status; 907 /* rd_phases Information is obtained if the eventType is 908 * NFC_UICC_RDPHASES_ACTIVATE_REQ. 909 */ 910 uint8_t rd_phases; 911 /* Remote Device Information is obtained if the eventType is 912 * NFC_EVT_ACTIVATED. 913 */ 914 phHal_sRemoteDevInformation_t *pRemoteDevInfo; 915 }eventInfo; 916 }phHal_sEventInfo_t; 917 918 919 /** \ingroup grp_hal_common 920 * 921 * \if hal 922 * \brief Information for the Host/Uicc Emulation Support 923 * \else 924 * \brief HAL-Specific 925 * \endif 926 * 927 * The <em> \ref phHal_sEmuSupport structure </em> holds the type 928 * of the target emulation supported. 929 * 930 * \note None. 931 */ 932 933 typedef struct phHal_sEmuSupport 934 { 935 unsigned int TypeA:1; 936 unsigned int TypeB:1; 937 unsigned int TypeBPrime:1; 938 unsigned int TypeFelica:1; 939 unsigned int TypeMifare:1; 940 unsigned int TypeNfcIP1:1; 941 unsigned int RFU:2; 942 943 }phHal_sEmuSupport_t; 944 945 946 /** \ingroup grp_hal_nfci 947 * 948 * \if hal 949 * \brief P2P Information for the Initiator 950 * \else 951 * \brief HAL-Specific 952 * \endif 953 * 954 * The <em> \ref phHal_sNfcIPCfg </em> holds the P2P related information 955 * use by the NFC Device during P2P Discovery and connection 956 * 957 * \note None. 958 */ 959 960 typedef phNfc_sNfcIPCfg_t phHal_sNfcIPCfg_t; 961 962 /** \ingroup grp_hal_common 963 * 964 * \if hal 965 * \brief Enumeration used to choose which type of parameters 966 * are to be configured 967 * \else 968 * \brief HAL-Specific 969 * \endif 970 * 971 * 972 * \note None. 973 */ 974 typedef enum phHal_eConfigType 975 { 976 NFC_INVALID_CONFIG = 0x00U, /**< Invalid Configuration */ 977 NFC_RF_READER_CONFIG, /**< Reader Parmaeters */ 978 NFC_P2P_CONFIG, /**< NFCIP1 Parameters */ 979 NFC_SE_PROTECTION_CONFIG, /**< Secure Element 980 Protection Cofiguration */ 981 NFC_EMULATION_CONFIG /**< Emulation Parameters */ 982 }phHal_eConfigType_t; 983 984 /** \ingroup grp_hal_common 985 * 986 * \if hal 987 * \brief Discovery Configuration Mode 988 * \else 989 * \brief HAL-Specific 990 * \endif 991 * 992 * This enumeration is used to choose the Discovery Configuration 993 * Mode :- Configure and Start, Stop or Start with last set 994 * configuration 995 * \note None. 996 */ 997 998 typedef phNfc_eDiscoveryConfigMode_t phHal_eDiscoveryConfigMode_t; 999 1000 1001 /** \ingroup grp_hal_common 1002 * 1003 * \if hal 1004 * \brief Target or Tag Release Mode 1005 * \else 1006 * \brief HAL-Specific 1007 * \endif 1008 * 1009 * This enumeration defines various modes of releasing an acquired target 1010 * or tag. 1011 * \note None. 1012 */ 1013 typedef phNfc_eReleaseType_t phHal_eReleaseType_t; 1014 1015 1016 /** \ingroup grp_hal_common 1017 * 1018 * \if hal 1019 * \brief Configuration of specific Emulation Feature 1020 * \else 1021 * \brief HAL-Specific 1022 * \endif 1023 * 1024 * This enumeration is used to choose configuration for a specific 1025 * emulation feature. 1026 * \note None. 1027 */ 1028 1029 typedef enum phHal_eEmulationType 1030 { 1031 NFC_UNKNOWN_EMULATION = 0x00U, /**< Invalid Configuration */ 1032 NFC_HOST_CE_A_EMULATION = 0x01U, /**< Configure parameters for Type A 1033 card emulation from host */ 1034 NFC_HOST_CE_B_EMULATION = 0x02U, /**< Configure parameters for Type B 1035 card emulation from host */ 1036 NFC_B_PRIME_EMULATION = 0x03U, /**< Configure parameters for Type B' 1037 card emulation from host */ 1038 NFC_FELICA_EMULATION = 0x04U, /**< Configure parameters for Type F 1039 card emulation from host */ 1040 NFC_MIFARE_EMULATION = 0x06U, /**< Configure parameters for MIFARE 1041 card emulation - For Future Use */ 1042 NFC_SMARTMX_EMULATION = 0x07U, /**< Configure parameters for SmartMX 1043 */ 1044 NFC_UICC_EMULATION = 0x08U /**< Configure parameters for UICC 1045 emulation */ 1046 }phHal_eEmulationType_t; 1047 1048 #if 0 1049 /** \ingroup grp_hal_nfct 1050 * 1051 * \if hal 1052 * \brief Information for Target Mode Start-Up 1053 * \else 1054 * \brief HAL-Specific 1055 * \endif 1056 * 1057 * The <em> Target Information Structure </em> required to start Target mode. 1058 * It contains all the information for the Target mode. 1059 * 1060 * \note None. 1061 * 1062 */ 1063 1064 typedef struct phHal_sTargetInfo 1065 { 1066 uint8_t enableEmulation; 1067 phHal_sNfcIPCfg_t targetConfig; 1068 } phHal_sTargetInfo_t; 1069 #endif 1070 1071 1072 /** \ingroup grp_hal_common 1073 * 1074 * \if hal 1075 * \brief Mode of operation for SmartMX 1076 * \else 1077 * \brief HAL-Specific 1078 * \endif 1079 * 1080 * This enumeration is used to choose the mode of operation for the SmartMx Module. 1081 * Default static configuration at initialization time. 1082 * \note None. 1083 */ 1084 1085 typedef enum phHal_eSmartMX_Mode{ 1086 eSmartMx_Wired = 0x00U, /* SmartMX is in Wired Mode */ 1087 eSmartMx_Default, /* SmartMX is in Default Configuration Mode */ 1088 eSmartMx_Virtual, /* SmartMx in the Virutal Mode */ 1089 eSmartMx_Off /* SmartMx Feature is Switched off */ 1090 } phHal_eSmartMX_Mode_t; 1091 1092 1093 /** \ingroup grp_hal_common 1094 * 1095 * \if hal 1096 * \brief Mode of operation for SWP 1097 * \else 1098 * \brief HAL-Specific 1099 * \endif 1100 * 1101 * This enumeration is used to choose the mode of operation for the SWP Link 1102 * for UICC Module. Default static configuration at initialization time. 1103 * \note None. 1104 */ 1105 1106 typedef enum phHal_eSWP_Mode{ 1107 eSWP_Switch_Off = 0x00U, /* SWP Link is Switched off */ 1108 eSWP_Switch_Default, /* SWP is in Default Configuration Mode */ 1109 eSWP_Switch_On /* SWP Link is Switched on */ 1110 } phHal_eSWP_Mode_t; 1111 1112 1113 /** \ingroup grp_hal_common 1114 * 1115 * \if hal 1116 * \brief Information for the Configuring the SmartMX 1117 * \else 1118 * \brief HAL-Specific 1119 * \endif 1120 * 1121 * The <em> \ref phHal_sSmartMX_Cfg structure </em> holds the information 1122 * to configure the SmartMX Module in the NFC Device. 1123 * 1124 * \note None. 1125 */ 1126 1127 1128 typedef struct phHal_sSmartMX_Cfg 1129 { 1130 uint8_t enableEmulation; 1131 uint8_t lowPowerMode; 1132 phHal_eSmartMX_Mode_t smxMode; 1133 }phHal_sSmartMX_Cfg_t; 1134 1135 1136 /** \ingroup grp_hal_common 1137 * 1138 * \if hal 1139 * \brief Information for the Configuring the UICC 1140 * \else 1141 * \brief HAL-Specific 1142 * \endif 1143 * 1144 * The <em> \ref phHal_sUiccEmuCfg structure </em> holds the information 1145 * to configure the UICC Host. 1146 * 1147 * \note None. 1148 */ 1149 1150 1151 typedef struct phHal_sUiccEmuCfg 1152 { 1153 uint8_t enableUicc; 1154 uint8_t uiccEmuSupport; 1155 uint8_t uiccReaderSupport; 1156 uint8_t lowPowerMode; 1157 /* TODO: This will be updated later */ 1158 }phHal_sUiccEmuCfg_t; 1159 1160 /** \ingroup grp_hal_common 1161 * 1162 * \if hal 1163 * \brief Information for the Configuring the Type A Host Emulation Feature 1164 * \else 1165 * \brief HAL-Specific 1166 * \endif 1167 * 1168 * The <em> \ref phHal_sHostEmuCfg_A structure </em> holds the information 1169 * to configure the Host Emulation for Type A. 1170 * 1171 * \note None. 1172 */ 1173 1174 typedef struct phHal_sHostEmuCfg_A 1175 { 1176 uint8_t enableEmulation; 1177 phNfc_sIso14443AInfo_t hostEmuCfgInfo; 1178 uint8_t enableCID; 1179 }phHal_sHostEmuCfg_A_t; 1180 1181 1182 /** \ingroup grp_hal_common 1183 * 1184 * \if hal 1185 * \brief Information for the Configuring the Type B Host Emulation Feature 1186 * \else 1187 * \brief HAL-Specific 1188 * \endif 1189 * 1190 * The <em> \ref phHal_sHostEmuCfg_B structure </em> holds the information 1191 * to configure the Host Emulation for Type B. 1192 * 1193 * \note None. 1194 */ 1195 1196 typedef struct phHal_sHostEmuCfg_B 1197 { 1198 uint8_t enableEmulation; 1199 phNfc_sIso14443BInfo_t hostEmuCfgInfo; 1200 }phHal_sHostEmuCfg_B_t; 1201 1202 /** \ingroup grp_hal_common 1203 * 1204 * \if hal 1205 * \brief Information for the Configuring the Felica Host Emulation Feature 1206 * \else 1207 * \brief HAL-Specific 1208 * \endif 1209 * 1210 * The <em> \ref phHal_sHostEmuCfg_F structure </em> holds the information 1211 * to configure the Felica Host Emulation. 1212 * 1213 * \note None. 1214 */ 1215 1216 1217 typedef struct phHal_sHostEmuCfg_F 1218 { 1219 uint8_t enableEmulation; 1220 }phHal_sHostEmuCfg_F_t; 1221 1222 1223 /** \ingroup grp_hal_common 1224 * 1225 * \if hal 1226 * \brief Information for the Configuring the Emulation 1227 * \else 1228 * \brief HAL-Specific 1229 * \endif 1230 * 1231 * The <em> \ref phHal_sEmulationCfg structure </em> holds the information 1232 * required for the device to act as a Tag or NFCIP1 Target. 1233 * 1234 * \note phHal_sHostEmuCfg_F_t Type F emulation is not presently supported 1235 * is reserved for future use. 1236 */ 1237 1238 typedef struct phHal_sEmulationCfg 1239 { 1240 phHal_HostType_t hostType; 1241 phHal_eEmulationType_t emuType; 1242 union phHal_uEmuConfig 1243 { 1244 phHal_sSmartMX_Cfg_t smartMxCfg; 1245 phHal_sHostEmuCfg_A_t hostEmuCfg_A; 1246 phHal_sHostEmuCfg_B_t hostEmuCfg_B; 1247 phHal_sHostEmuCfg_F_t hostEmuCfg_F; 1248 phHal_sUiccEmuCfg_t uiccEmuCfg; 1249 }config; 1250 }phHal_sEmulationCfg_t; 1251 1252 /** \ingroup grp_hal_common 1253 * 1254 * \if hal 1255 * \brief Information for the Configuring the Reader parameters 1256 * \else 1257 * \brief HAL-Specific 1258 * \endif 1259 * 1260 * The <em> \ref phHal_sReaderCfg structure </em> holds the information 1261 * to configure the Reader A or Reader B parameters. 1262 * 1263 * \note None. 1264 */ 1265 1266 typedef struct phHal_sReaderCfg 1267 { 1268 phHal_eRFDevType_t readerType; 1269 union phHal_uReaderCfg 1270 { 1271 phHal_sIso14443ACfg_t Iso14443ACfg; 1272 phHal_sIso14443BCfg_t Iso14443BCfg; 1273 }config; 1274 }phHal_sReaderCfg_t; 1275 1276 1277 /** \ingroup grp_hal_common 1278 * 1279 * \if hal 1280 * \brief Information for Configuring the Protected Mode for 1281 * the Secure Elements. 1282 * \else 1283 * \brief HAL-Specific 1284 * \endif 1285 * 1286 * The <em> \ref phHal_sSEProtectionCfg structure </em> holds the 1287 * information to configure the Secure Element Protection configuration. 1288 * 1289 * \note None. 1290 */ 1291 1292 typedef struct phHal_sSEProtectionCfg 1293 { 1294 uint8_t mode; 1295 }phHal_sSEProtectionCfg_t; 1296 1297 1298 /** \ingroup grp_hal_common 1299 * 1300 * \if hal 1301 * \brief Poll configuration structure 1302 * \else 1303 * \brief HAL-Specific 1304 * \endif 1305 * 1306 * The <em> Poll configuration structure </em> holds information about the 1307 * enabling the the type of discovery required by the application. This 1308 * structure is the input parameter for the discovery call 1309 * 1310 * \note All members of this structure are input parameters [out]. 1311 * 1312 * \if hal 1313 * \sa \ref phHal4Nfc_Connect, \ref phHal4Nfc_ConfigParameters, 1314 * \ref phHal_eP2PMode_t and \ref phHal4Nfc_Disconnect. 1315 * \endif 1316 * 1317 */ 1318 1319 typedef phNfc_sADD_Cfg_t phHal_sADD_Cfg_t; 1320 1321 1322 /** \ingroup grp_hal_common 1323 * 1324 * \if hal 1325 * \brief Configuration information. 1326 * \else 1327 * \brief HAL-Specific 1328 * \endif 1329 * 1330 * The <em> \ref phHal_uConfig structure </em> holds the information 1331 * required for Configuring the Device. 1332 * 1333 * \note None. 1334 */ 1335 1336 1337 typedef union phHal_uConfig 1338 { 1339 phHal_sEmulationCfg_t emuConfig; 1340 phHal_sNfcIPCfg_t nfcIPConfig; /**< Gives the information about 1341 * the General Bytes for NFC-IP 1342 * Communication. 1343 */ 1344 phHal_sReaderCfg_t readerConfig; 1345 phHal_sSEProtectionCfg_t protectionConfig; 1346 }phHal_uConfig_t; 1347 1348 1349 #endif 1350 1351 /* EOF */ 1352