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