| /* |
| * Copyright (C) 2010 NXP Semiconductors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * \file phNfcHalTypes.h |
| * \brief Structure declarations/type definitions belonging to the HAL subsystem. |
| * |
| * Project: NFC MW / HAL |
| * |
| * $Date: Thu Apr 8 17:11:39 2010 $ |
| * $Author: ing04880 $ |
| * $Revision: 1.106 $ |
| * $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 $ |
| * |
| */ |
| |
| |
| #ifndef PHNFCHALTYPES_H /* */ |
| #define PHNFCHALTYPES_H /* */ |
| |
| /** |
| * \name HAL Types |
| * |
| * File: \ref phNfcHalTypes.h |
| * |
| */ |
| |
| /*@{*/ |
| #define PHNFCHALTYPES_FILEREVISION "$Revision: 1.106 $" /**< \ingroup grp_file_attributes */ |
| #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 */ |
| /*@}*/ |
| |
| #include <phNfcTypes.h> |
| #include <phNfcCompId.h> |
| #include <phNfcConfig.h> |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Protocol Support Information |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Supported Protocols Structure </em> holds all protocol supported by the current NFC |
| * device. |
| * |
| * \note All members of this structure are output parameters [out]. |
| * |
| */ |
| typedef phNfc_sSupProtocol_t phHal_sSupProtocol_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * |
| * \if hal |
| * \brief Information related to the NFC Device |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Device Information Structure </em> holds information |
| * related to the NFC IC read during initialization time. |
| * It allows the caller firware, hardware version, the model id, |
| * HCI verison supported and vendor name. Refer to the NFC Device |
| * User Manual on how to interpret each of the values. In addition |
| * it also contains capabilities of the NFC Device such as the |
| * protocols supported in Reader and emulation mode |
| * |
| */ |
| |
| typedef phNfc_sDeviceCapabilities_t phHal_sDeviceCapabilities_t; |
| |
| |
| /** |
| * \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Hardware Reference - The Peripheral Representation |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The Hardware Reference structure is filled as part of the open function and |
| * contains information regarding connected peripheral NFC device. It also |
| * stores the refernce to the communication driver passed by the HAL client |
| * for usage during communication with the NFC Device |
| * |
| * \note The caller can consider this structure atomic, no interpretation is required |
| * for HAL operation. |
| * |
| * \sa phHal4Nfc_Open . |
| * |
| */ |
| |
| /** |
| * \ingroup grp_hal_common |
| * |
| * \brief Hardware Reference - The Peripheral Representation |
| * |
| * The Hardware Reference structure is filled as part of the open function and |
| * contains information regarding connected peripheral NFC device. It also |
| * stores the refernce to the communication driver passed by the HAL client |
| * for usage during communication with the NFC Device |
| * |
| * \note The caller can consider this structure atomic, no interpretation is required |
| * for HAL operation. |
| * |
| */ |
| typedef struct phHal_sHwReference |
| { |
| /**< Will be usable/valid after the Open function. */ |
| void *p_board_driver; |
| /**< Session Identifier for the established session */ |
| uint8_t session_id[SESSIONID_SIZE]; |
| /**< SMX Connected TRUE/FALSE */ |
| uint8_t smx_connected; |
| /**< UICC Connected TRUE/FALSE */ |
| uint8_t uicc_connected; |
| /**< UICC Reader Mode is Active TRUE/FALSE */ |
| uint8_t uicc_rdr_active; |
| /**< Device information. */ |
| phNfc_sDeviceCapabilities_t device_info; |
| /**< Context of the HAL Layer */ |
| void *hal_context; |
| /**< Context of the DAL Layer */ |
| void *dal_context; |
| } phHal_sHwReference_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Hardware configuration - Configuration Parameters for the NFC Device |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The parameters used to configure the device during the initialisation. |
| * This structure is used internally by the HAL implementation and is filled |
| * up based on various configuration parameters from the config file |
| * \note None. |
| * |
| */ |
| |
| typedef struct phHal_sHwConfig |
| { |
| |
| uint8_t session_id[SESSIONID_SIZE]; /**< Session Identifier for |
| the established session */ |
| |
| uint8_t clk_req; /**< Clock Request Setting */ |
| |
| uint8_t input_clk; /**< Input Clock Setting */ |
| |
| } phHal_sHwConfig_t; |
| |
| |
| |
| /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ |
| |
| /* This data structure is not used anymore and will be removed in subsequent |
| release */ |
| typedef struct phHal_sDepFlags |
| { |
| unsigned int MetaChaining : 1; |
| unsigned int NADPresent : 1; |
| } phHal_sDepFlags_t; |
| |
| /* This data structure is not used anymore and will be removed in subsequent |
| release */ |
| |
| typedef struct phHal_sDepAdditionalInfo |
| { |
| phHal_sDepFlags_t DepFlags; |
| uint8_t NAD; |
| } phHal_sDepAdditionalInfo_t; |
| |
| |
| /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ |
| |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Enumerated MIFARE Commands |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Mifare Command List Enumerator </em> lists all available Mifare native commands. |
| * |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_eMifareCmdList_t phHal_eMifareCmdList_t; |
| |
| #define phHal_eMifareRaw phNfc_eMifareRaw |
| #define phHal_eMifareAuthentA phNfc_eMifareAuthentA |
| #define phHal_eMifareAuthentB phNfc_eMifareAuthentB |
| #define phHal_eMifareRead16 phNfc_eMifareRead16 |
| #define phHal_eMifareRead phNfc_eMifareRead |
| #define phHal_eMifareWrite16 phNfc_eMifareWrite16 |
| #define phHal_eMifareWrite4 phNfc_eMifareWrite4 |
| #define phHal_eMifareInc phNfc_eMifareInc |
| #define phHal_eMifareDec phNfc_eMifareDec |
| #define phHal_eMifareTransfer phNfc_eMifareTransfer |
| #define phHal_eMifareRestore phNfc_eMifareRestore |
| #define phHal_eMifareReadSector phNfc_eMifareReadSector |
| #define phHal_eMifareWriteSector phNfc_eMifareWriteSector |
| #define phHal_eMifareInvalidCmd phNfc_eMifareInvalidCmd |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * The <em> T=Cl Command List Enumerator </em> lists all available T=Cl Commands. |
| * |
| * \note None. |
| * |
| */ |
| typedef phNfc_eIso14443_4_CmdList_t phHal_eIso14443_4_CmdList_t; |
| |
| #define phHal_eIso14443_4_Raw phNfc_eIso14443_4_Raw |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * The <em> NFCIP1 Command List Enumerator </em> lists all available NFCIP1 Commands. |
| * |
| * \note None. |
| * |
| */ |
| typedef phNfc_eNfcIP1CmdList_t phHal_eNfcIP1CmdList_t; |
| |
| #define phHal_eNfcIP1_Raw phNfc_eNfcIP1_Raw |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * The <em> ISO15693 Command List Enumerator </em> lists all available ISO15693 Commands. |
| * |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_eIso15693_CmdList_t phHal_eIso15693_CmdList_t; |
| |
| #if 0 |
| #define phHal_eIso15693_Raw phNfc_eIso15693_Raw |
| #endif |
| #define phHal_eIso15693_Cmd phNfc_eIso15693_Cmd |
| #define phHal_eIso15693_Invalid phNfc_eIso15693_Invalid |
| |
| /** \ingroup grp_hal_common |
| * |
| * The <em> Felica Command List Enumerator </em> lists all available Felica Commands. |
| * |
| * \note None. |
| * |
| */ |
| |
| typedef enum phHal_eFelicaCmdList |
| { |
| phHal_eFelica_Raw = 0xF0U, /**< Felica Raw command:\n |
| - This command sends the data buffer directly |
| to the remote device */ |
| phHal_eFelica_Check = 0x00, /**< Felica Check command:\n |
| - This command checks the data from the Felica |
| remote device */ |
| phHal_eFelica_Update = 0x01, /**< Felica Update command:\n |
| - This command updates the data onto the Felica |
| remote device */ |
| phHal_eFelica_Invalid = 0xFFU /**< Invalid Command */ |
| } phHal_eFelicaCmdList_t; |
| |
| |
| typedef enum phHal_eJewelCmdList |
| { |
| phHal_eJewel_Raw = 0x00U, /**< Jewel command:\n |
| - This command sends the data buffer directly |
| to the remote device */ |
| phHal_eJewel_Invalid = 0xFFU /**< Invalid jewel command */ |
| }phHal_eJewelCmdList_t; |
| |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Reader A RF Gate Information Container |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Reader A structure </em> includes the available information |
| * related to the discovered ISO14443A remote device. This information |
| * is updated for every device discovery. |
| * \note None. |
| * |
| */ |
| typedef phNfc_sIso14443AInfo_t phHal_sIso14443AInfo_t; |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Reader B RF Gate Information Container |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Reader B structure </em> includes the available information |
| * related to the discovered ISO14443B remote device. This information |
| * is updated for every device discovery. |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_sIso14443BInfo_t phHal_sIso14443BInfo_t; |
| |
| typedef phNfc_sIso14443BPrimeInfo_t phHal_sIso14443BPrimeInfo; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Jewel Reader RF Gate Information Container |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Jewel Reader structure </em> includes the available information |
| * related to the discovered Jewel remote device. This information |
| * is updated for every device discovery. |
| * \note None. |
| * |
| */ |
| |
| |
| typedef phNfc_sJewelInfo_t phHal_sJewelInfo_t; |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Felica Reader RF Gate Information Container |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Felica Reader structure </em> includes the available information |
| * related to the discovered Felica remote device. This information |
| * is updated for every device discovery. |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_sFelicaInfo_t phHal_sFelicaInfo_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Reader 15693 RF Gate Information Container |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Reader A structure </em> includes the available information |
| * related to the discovered ISO15693 remote device. This information |
| * is updated for every device discovery. |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_sIso15693Info_t phHal_sIso15693Info_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief NFC Data Rate Supported between the Reader and the Target |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHalNfc_eDataRate enum </em> lists all the Data Rate |
| * values to be used to determine the rate at which the data is transmitted |
| * to the target. |
| * |
| * \note None. |
| */ |
| |
| |
| typedef phNfc_eDataRate_t phHalNfc_eDataRate_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief NFCIP1 Gate Information Container |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> NFCIP1 structure </em> includes the available information |
| * related to the discovered NFCIP1 remote device. This information |
| * is updated for every device discovery. |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_sNfcIPInfo_t phHal_sNfcIPInfo_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Specific Information Container |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Remote Device Information Union </em> includes the available Remote Device Information |
| * structures. Following the device detected, the corresponding data structure is used. |
| * |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_uRemoteDevInfo_t phHal_uRemoteDevInfo_t; |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief RF Device Type Listing |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> RF Device Type List </em> is used to identify the type of |
| * remote device that is discovered/connected. There seperate |
| * types to identify a Remote Reader (denoted by _PCD) and |
| * Remote Tag (denoted by _PICC) |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_eRFDevType_t phHal_eRFDevType_t; |
| |
| #define phHal_eUnknown_DevType phNfc_eUnknown_DevType |
| |
| /* Specific PCD Devices */ |
| #define phHal_eISO14443_A_PCD phNfc_eISO14443_A_PCD |
| #define phHal_eISO14443_B_PCD phNfc_eISO14443_B_PCD |
| #define phHal_eISO14443_BPrime_PCD phNfc_eISO14443_BPrime_PCD |
| #define phHal_eFelica_PCD phNfc_eFelica_PCD |
| #define phHal_eJewel_PCD phNfc_eJewel_PCD |
| #define phHal_eISO15693_PCD phNfc_eISO15693_PCD |
| /* Generic PCD Type */ |
| #define phHal_ePCD_DevType phNfc_ePCD_DevType |
| |
| /* Generic PICC Type */ |
| #define phHal_ePICC_DevType phNfc_ePICC_DevType |
| /* Specific PICC Devices */ |
| #define phHal_eISO14443_A_PICC phNfc_eISO14443_A_PICC |
| #define phHal_eISO14443_4A_PICC phNfc_eISO14443_4A_PICC |
| #define phHal_eISO14443_3A_PICC phNfc_eISO14443_3A_PICC |
| #define phHal_eMifare_PICC phNfc_eMifare_PICC |
| #define phHal_eISO14443_B_PICC phNfc_eISO14443_B_PICC |
| #define phHal_eISO14443_4B_PICC phNfc_eISO14443_4B_PICC |
| #define phHal_eISO14443_BPrime_PICC phNfc_eISO14443_BPrime_PICC |
| #define phHal_eFelica_PICC phNfc_eFelica_PICC |
| #define phHal_eJewel_PICC phNfc_eJewel_PICC |
| #define phHal_eISO15693_PICC phNfc_eISO15693_PICC |
| |
| /* NFC-IP1 Device Types */ |
| #define phHal_eNfcIP1_Target phNfc_eNfcIP1_Target |
| #define phHal_eNfcIP1_Initiator phNfc_eNfcIP1_Initiator |
| |
| /* Other Sources */ |
| #define phHal_eInvalid_DevType phNfc_eInvalid_DevType |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Type Listing |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Remote Device Type List </em> is used to identify the type of |
| * remote device that is discovered/connected |
| * \note This is same as RF Device Type List. |
| * |
| */ |
| typedef phNfc_eRemDevType_t phHal_eRemDevType_t; |
| |
| /** \ingroup grp_hal_common |
| * |
| * |
| * \if hal |
| * \brief Common Command Attribute |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Hal Command Union </em> includes each available type of Commands. |
| * |
| * \note None. |
| * |
| */ |
| |
| typedef phNfc_uCmdList_t phHal_uCmdList_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Remote Device Information Structure |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Remote Device Information Structure </em> holds information about one single Remote |
| * Device detected by the polling function .\n |
| * It lists parameters common to all supported remote devices. |
| * |
| * \note |
| * |
| * \if hal |
| * \sa \ref phHal4Nfc_ConfigureDiscovery and \ref phHal4Nfc_Connect |
| * \else |
| * \sa |
| * \endif |
| * |
| */ |
| |
| typedef phNfc_sRemoteDevInformation_t phHal_sRemoteDevInformation_t; |
| |
| |
| |
| /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ |
| |
| /* This data structure is not used anymore and will be removed in subsequent |
| release */ |
| |
| typedef struct phHal_sDevInputParam |
| { |
| uint8_t FelicaPollPayload[5]; |
| |
| |
| uint8_t NfcPollPayload[5]; |
| |
| |
| uint8_t NFCIDAuto; |
| |
| |
| uint8_t NFCID3i[PHHAL_NFCID_LENGTH]; |
| |
| |
| |
| uint8_t DIDiUsed; |
| |
| uint8_t CIDiUsed; |
| |
| uint8_t NfcNADiUsed; |
| |
| /*+ MantisId : 31 - JP - 09-01-2006 */ |
| /*uint8_t TClNADiUsed; */ |
| |
| /*- MantisId : 31 - JP - 09-01-2006 */ |
| uint8_t GeneralByte[48]; |
| |
| |
| uint8_t GeneralByteLength; |
| |
| |
| uint8_t ISO14443_4B_AFI; |
| |
| } phHal_sDevInputParam_t; |
| |
| |
| |
| |
| /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ |
| |
| |
| /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ |
| /* TARGET STRUCTURES */ |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Transceive Information Data Structure for sending commands/response |
| * to the remote device |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Transceive Information Data Structure </em> is used to pass the |
| * Command, Address (only required for MIFARE) and the send and receive data |
| * data structure (buffer and length) for communication with remote device |
| * |
| * |
| */ |
| |
| typedef phNfc_sTransceiveInfo_t phHal_sTransceiveInfo_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Input information for the Type A tags |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sIso14443ACfg structure </em> holds the information |
| * required for the NFC device to be used during ISO14443A target discovery |
| * |
| * \note None. |
| */ |
| typedef struct phHal_sIso14443ACfg |
| { |
| uint8_t Auto_Activation; /**< Enable Auto Activation for |
| Technology A \n |
| If set to 0, the activation procedure will stop |
| after Select (SAK has been received). |
| The host could evaluate SAK value and then decide: |
| - to start communicating with the remote card |
| using proprietary commands (see NXP_MIFARE_RAW |
| and NXP_MIFARE_CMD) |
| or |
| - to activate the remote card up to ISO14443-4 |
| level (RATS and PPS) using |
| CONTINUE ACTIVATION command |
| If set to 1, activation follows the flow described in |
| ETSI HCI specification (restrict detection to |
| ISO14443-4 compliant cards). |
| */ |
| }phHal_sIso14443ACfg_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Input information for the Type B tags |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sIso14443BCfg structure </em> holds the information |
| * required for the NFC device to be used during ISO14443B target discovery |
| * |
| * \note None. |
| */ |
| typedef struct phHal_sIso14443BCfg |
| { |
| uint8_t AppFamily_ID; /**< Application Family Identifier for |
| Technology B, 0x00 means all application */ |
| }phHal_sIso14443BCfg_t; |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Input information for the Felica tags |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sFelicaCfg_t structure </em> holds the information |
| * required for the NFC device to be used during Felica target discovery |
| * |
| * \note None. |
| */ |
| |
| typedef struct phHal_sFelicaCfg |
| { |
| uint8_t SystemCode[PHHAL_FEL_SYS_CODE_LEN]; /**< System code for Felica tags */ |
| |
| }phHal_sFelicaCfg_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief Poll Device Information for conifiguring the discovery wheel |
| Reader and Card Emulation Phases |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sPollDevInfo_t enum </em> is used to enable/disable |
| * phases of the discovery wheel related to specific reader types and |
| * card emulation phase |
| * \note Enabling specific Reader technology when NFCIP1 speed is set in the |
| * phNfc_sADD_Cfg_t is implicitly done in HAL. Use this structure to only |
| * enable/disable Card Reader Functionality |
| */ |
| typedef phNfc_sPollDevInfo_t phHal_sPollDevInfo_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Identifies Type of Host |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration is used to identify the type of the host providing the |
| * information or the notification to the Terminal host. |
| * \note None. |
| */ |
| |
| typedef enum phHal_HostType { |
| /* |
| * This type identifies the host controller |
| * in the NFC device |
| */ |
| phHal_eHostController = 0x00U, |
| /* |
| * This type identifies the Host Device |
| * controlling the NFC device. |
| */ |
| phHal_eTerminalHost = 0x01U, |
| /* |
| * This type identifies the uicc host |
| * connnected to the NFC device |
| */ |
| phHal_eUICCHost = 0x02U, |
| /* Host type is unknown */ |
| phHal_eUnknownHost = 0xFFU |
| }phHal_HostType_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief P2P speed for the Initiator |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_eP2PMode enum </em> lists all the NFCIP1 speeds |
| * to be used for configuring the NFCIP1 discovery |
| * |
| * \note None. |
| */ |
| |
| #define phHal_eDefaultP2PMode phNfc_eDefaultP2PMode |
| #define phHal_ePassive106 phNfc_ePassive106 |
| #define phHal_ePassive212 phNfc_ePassive212 |
| #define phHal_ePassive424 phNfc_ePassive424 |
| #define phHal_eActive phNfc_eActive |
| #define phHal_eP2P_ALL phNfc_eP2P_ALL |
| #define phHal_eInvalidP2PMode phNfc_eInvalidP2PMode |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Identities the type of Notification |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration is used to specify the type of notification notified |
| * to the upper layer. This classifies the notification into two types |
| * one for the discovery notifications and the other for all the remaining |
| * event notifications |
| * \note None. |
| */ |
| |
| |
| typedef phNfc_eNotificationType_t phHal_eNotificationType_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Identifies the type of event notification |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration is used to identify the type of the event notified |
| * to the Terminal host. |
| * \note None. |
| */ |
| |
| typedef enum phHal_Event { |
| |
| |
| /* Transaction Events */ |
| NFC_EVT_END_OF_TRANSACTION = 0x11U , |
| NFC_EVT_TRANSACTION = 0x12U , |
| NFC_EVT_START_OF_TRANSACTION = 0x20U , |
| |
| /* Field Events */ |
| NFC_EVT_FIELD_ON = 0x31U, |
| NFC_EVT_FIELD_OFF = 0x34U, |
| |
| /* Card/Target Activation Events */ |
| NFC_EVT_ACTIVATED = 0x33U, |
| NFC_EVT_DEACTIVATED = 0x32U, |
| |
| NFC_EVT_PROTECTED = 0x24U , |
| |
| /* Reader Phases configuration request by UICC */ |
| NFC_UICC_RDPHASES_ACTIVATE_REQ = 0x43U, |
| NFC_UICC_RDPHASES_DEACTIVATE_REQ = 0x44U, |
| |
| /* Connectivity and Triggering Events - Future Use */ |
| NFC_EVT_CONNECTIVITY = 0x10U , |
| NFC_EVT_OPERATION_ENDED = 0x13U , |
| |
| /* NXP Specific System Information Events */ |
| NFC_INFO_TXLDO_OVERCUR = 0x71U, |
| NFC_INFO_MEM_VIOLATION = 0x73U, |
| NFC_INFO_TEMP_OVERHEAT = 0x74U |
| |
| }phHal_Event_t; |
| |
| typedef phNfc_sUiccInfo_t phHal_sUiccInfo_t; |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Event notification Information |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This structure provides the information about the event notified |
| * to the terminal host. |
| * \note None. |
| */ |
| |
| typedef struct phHal_sEventInfo |
| { |
| /* Type of the host issuing the event */ |
| phHal_HostType_t eventHost; |
| /* Type of the source issuing the event */ |
| phHal_eRFDevType_t eventSource; |
| /* Type of the source issuing the event */ |
| phHal_Event_t eventType; |
| union uEventInfo |
| { |
| /* Parameter information Information is obtained if the eventType is |
| * NFC_EVT_TRANSACTION for UICC. |
| */ |
| phHal_sUiccInfo_t uicc_info; |
| /* AID Information is obtained if the eventType is |
| * NFC_EVT_TRANSACTION. |
| */ |
| phNfc_sData_t aid; |
| /* Overheat Status Information is obtained if the eventType is |
| * NFC_INFO_TEMP_OVERHEAT. |
| */ |
| uint8_t overheat_status; |
| /* rd_phases Information is obtained if the eventType is |
| * NFC_UICC_RDPHASES_ACTIVATE_REQ. |
| */ |
| uint8_t rd_phases; |
| /* Remote Device Information is obtained if the eventType is |
| * NFC_EVT_ACTIVATED. |
| */ |
| phHal_sRemoteDevInformation_t *pRemoteDevInfo; |
| }eventInfo; |
| }phHal_sEventInfo_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Host/Uicc Emulation Support |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sEmuSupport structure </em> holds the type |
| * of the target emulation supported. |
| * |
| * \note None. |
| */ |
| |
| typedef struct phHal_sEmuSupport |
| { |
| unsigned int TypeA:1; |
| unsigned int TypeB:1; |
| unsigned int TypeBPrime:1; |
| unsigned int TypeFelica:1; |
| unsigned int TypeMifare:1; |
| unsigned int TypeNfcIP1:1; |
| unsigned int RFU:2; |
| |
| }phHal_sEmuSupport_t; |
| |
| |
| /** \ingroup grp_hal_nfci |
| * |
| * \if hal |
| * \brief P2P Information for the Initiator |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sNfcIPCfg </em> holds the P2P related information |
| * use by the NFC Device during P2P Discovery and connection |
| * |
| * \note None. |
| */ |
| |
| typedef phNfc_sNfcIPCfg_t phHal_sNfcIPCfg_t; |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Enumeration used to choose which type of parameters |
| * are to be configured |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * |
| * \note None. |
| */ |
| typedef enum phHal_eConfigType |
| { |
| NFC_INVALID_CONFIG = 0x00U, /**< Invalid Configuration */ |
| NFC_RF_READER_CONFIG, /**< Reader Parmaeters */ |
| NFC_P2P_CONFIG, /**< NFCIP1 Parameters */ |
| NFC_SE_PROTECTION_CONFIG, /**< Secure Element |
| Protection Cofiguration */ |
| NFC_EMULATION_CONFIG /**< Emulation Parameters */ |
| }phHal_eConfigType_t; |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Discovery Configuration Mode |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration is used to choose the Discovery Configuration |
| * Mode :- Configure and Start, Stop or Start with last set |
| * configuration |
| * \note None. |
| */ |
| |
| typedef phNfc_eDiscoveryConfigMode_t phHal_eDiscoveryConfigMode_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Target or Tag Release Mode |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration defines various modes of releasing an acquired target |
| * or tag. |
| * \note None. |
| */ |
| typedef phNfc_eReleaseType_t phHal_eReleaseType_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Configuration of specific Emulation Feature |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration is used to choose configuration for a specific |
| * emulation feature. |
| * \note None. |
| */ |
| |
| typedef enum phHal_eEmulationType |
| { |
| NFC_UNKNOWN_EMULATION = 0x00U, /**< Invalid Configuration */ |
| NFC_HOST_CE_A_EMULATION = 0x01U, /**< Configure parameters for Type A |
| card emulation from host */ |
| NFC_HOST_CE_B_EMULATION = 0x02U, /**< Configure parameters for Type B |
| card emulation from host */ |
| NFC_B_PRIME_EMULATION = 0x03U, /**< Configure parameters for Type B' |
| card emulation from host */ |
| NFC_FELICA_EMULATION = 0x04U, /**< Configure parameters for Type F |
| card emulation from host */ |
| NFC_MIFARE_EMULATION = 0x06U, /**< Configure parameters for MIFARE |
| card emulation - For Future Use */ |
| NFC_SMARTMX_EMULATION = 0x07U, /**< Configure parameters for SmartMX |
| */ |
| NFC_UICC_EMULATION = 0x08U /**< Configure parameters for UICC |
| emulation */ |
| }phHal_eEmulationType_t; |
| |
| #if 0 |
| /** \ingroup grp_hal_nfct |
| * |
| * \if hal |
| * \brief Information for Target Mode Start-Up |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Target Information Structure </em> required to start Target mode. |
| * It contains all the information for the Target mode. |
| * |
| * \note None. |
| * |
| */ |
| |
| typedef struct phHal_sTargetInfo |
| { |
| uint8_t enableEmulation; |
| phHal_sNfcIPCfg_t targetConfig; |
| } phHal_sTargetInfo_t; |
| #endif |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Mode of operation for SmartMX |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration is used to choose the mode of operation for the SmartMx Module. |
| * Default static configuration at initialization time. |
| * \note None. |
| */ |
| |
| typedef enum phHal_eSmartMX_Mode{ |
| eSmartMx_Wired = 0x00U, /* SmartMX is in Wired Mode */ |
| eSmartMx_Default, /* SmartMX is in Default Configuration Mode */ |
| eSmartMx_Virtual, /* SmartMx in the Virutal Mode */ |
| eSmartMx_Off /* SmartMx Feature is Switched off */ |
| } phHal_eSmartMX_Mode_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Mode of operation for SWP |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * This enumeration is used to choose the mode of operation for the SWP Link |
| * for UICC Module. Default static configuration at initialization time. |
| * \note None. |
| */ |
| |
| typedef enum phHal_eSWP_Mode{ |
| eSWP_Switch_Off = 0x00U, /* SWP Link is Switched off */ |
| eSWP_Switch_Default, /* SWP is in Default Configuration Mode */ |
| eSWP_Switch_On /* SWP Link is Switched on */ |
| } phHal_eSWP_Mode_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Configuring the SmartMX |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sSmartMX_Cfg structure </em> holds the information |
| * to configure the SmartMX Module in the NFC Device. |
| * |
| * \note None. |
| */ |
| |
| |
| typedef struct phHal_sSmartMX_Cfg |
| { |
| uint8_t enableEmulation; |
| uint8_t lowPowerMode; |
| phHal_eSmartMX_Mode_t smxMode; |
| }phHal_sSmartMX_Cfg_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Configuring the UICC |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sUiccEmuCfg structure </em> holds the information |
| * to configure the UICC Host. |
| * |
| * \note None. |
| */ |
| |
| |
| typedef struct phHal_sUiccEmuCfg |
| { |
| uint8_t enableUicc; |
| uint8_t uiccEmuSupport; |
| uint8_t uiccReaderSupport; |
| uint8_t lowPowerMode; |
| /* TODO: This will be updated later */ |
| }phHal_sUiccEmuCfg_t; |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Configuring the Type A Host Emulation Feature |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sHostEmuCfg_A structure </em> holds the information |
| * to configure the Host Emulation for Type A. |
| * |
| * \note None. |
| */ |
| |
| typedef struct phHal_sHostEmuCfg_A |
| { |
| uint8_t enableEmulation; |
| phNfc_sIso14443AInfo_t hostEmuCfgInfo; |
| uint8_t enableCID; |
| }phHal_sHostEmuCfg_A_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Configuring the Type B Host Emulation Feature |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sHostEmuCfg_B structure </em> holds the information |
| * to configure the Host Emulation for Type B. |
| * |
| * \note None. |
| */ |
| |
| typedef struct phHal_sHostEmuCfg_B |
| { |
| uint8_t enableEmulation; |
| phNfc_sIso14443BInfo_t hostEmuCfgInfo; |
| }phHal_sHostEmuCfg_B_t; |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Configuring the Felica Host Emulation Feature |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sHostEmuCfg_F structure </em> holds the information |
| * to configure the Felica Host Emulation. |
| * |
| * \note None. |
| */ |
| |
| |
| typedef struct phHal_sHostEmuCfg_F |
| { |
| uint8_t enableEmulation; |
| }phHal_sHostEmuCfg_F_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Configuring the Emulation |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sEmulationCfg structure </em> holds the information |
| * required for the device to act as a Tag or NFCIP1 Target. |
| * |
| * \note phHal_sHostEmuCfg_F_t Type F emulation is not presently supported |
| * is reserved for future use. |
| */ |
| |
| typedef struct phHal_sEmulationCfg |
| { |
| phHal_HostType_t hostType; |
| phHal_eEmulationType_t emuType; |
| union phHal_uEmuConfig |
| { |
| phHal_sSmartMX_Cfg_t smartMxCfg; |
| phHal_sHostEmuCfg_A_t hostEmuCfg_A; |
| phHal_sHostEmuCfg_B_t hostEmuCfg_B; |
| phHal_sHostEmuCfg_F_t hostEmuCfg_F; |
| phHal_sUiccEmuCfg_t uiccEmuCfg; |
| }config; |
| }phHal_sEmulationCfg_t; |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for the Configuring the Reader parameters |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sReaderCfg structure </em> holds the information |
| * to configure the Reader A or Reader B parameters. |
| * |
| * \note None. |
| */ |
| |
| typedef struct phHal_sReaderCfg |
| { |
| phHal_eRFDevType_t readerType; |
| union phHal_uReaderCfg |
| { |
| phHal_sIso14443ACfg_t Iso14443ACfg; |
| phHal_sIso14443BCfg_t Iso14443BCfg; |
| }config; |
| }phHal_sReaderCfg_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Information for Configuring the Protected Mode for |
| * the Secure Elements. |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_sSEProtectionCfg structure </em> holds the |
| * information to configure the Secure Element Protection configuration. |
| * |
| * \note None. |
| */ |
| |
| typedef struct phHal_sSEProtectionCfg |
| { |
| uint8_t mode; |
| }phHal_sSEProtectionCfg_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Poll configuration structure |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> Poll configuration structure </em> holds information about the |
| * enabling the the type of discovery required by the application. This |
| * structure is the input parameter for the discovery call |
| * |
| * \note All members of this structure are input parameters [out]. |
| * |
| * \if hal |
| * \sa \ref phHal4Nfc_Connect, \ref phHal4Nfc_ConfigParameters, |
| * \ref phHal_eP2PMode_t and \ref phHal4Nfc_Disconnect. |
| * \endif |
| * |
| */ |
| |
| typedef phNfc_sADD_Cfg_t phHal_sADD_Cfg_t; |
| |
| |
| /** \ingroup grp_hal_common |
| * |
| * \if hal |
| * \brief Configuration information. |
| * \else |
| * \brief HAL-Specific |
| * \endif |
| * |
| * The <em> \ref phHal_uConfig structure </em> holds the information |
| * required for Configuring the Device. |
| * |
| * \note None. |
| */ |
| |
| |
| typedef union phHal_uConfig |
| { |
| phHal_sEmulationCfg_t emuConfig; |
| phHal_sNfcIPCfg_t nfcIPConfig; /**< Gives the information about |
| * the General Bytes for NFC-IP |
| * Communication. |
| */ |
| phHal_sReaderCfg_t readerConfig; |
| phHal_sSEProtectionCfg_t protectionConfig; |
| }phHal_uConfig_t; |
| |
| |
| #endif |
| |
| /* EOF */ |