/* * 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 #include #include #ifndef NXP_HAL_MEM_INFO_SIZE #define NXP_HAL_MEM_INFO_SIZE 0x01U #endif #if (NXP_HAL_MEM_INFO_SIZE > 0x01) #define NXP_FW_UPLOAD_PROGRESS 0x965AU #define NXP_FW_UPLOAD_SUCCESS 0x0000U #else #define NXP_FW_UPLOAD_PROGRESS 0x5AU #define NXP_FW_UPLOAD_SUCCESS 0x00U #endif typedef struct phHal_sMemInfo { uint16_t fw_magic; uint16_t fw_rfu; uint32_t hal_version; }phHal_sMemInfo_t; /** \ingroup grp_hal_common * * \if hal * \brief Protocol Support Information * \else * \brief HAL-Specific * \endif * * The Supported Protocols Structure 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 Device Information Structure 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 Mifare Command List Enumerator 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 T=Cl Command List Enumerator 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 NFCIP1 Command List Enumerator 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 ISO15693 Command List Enumerator 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 Felica Command List Enumerator 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 Reader A structure 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 Reader B structure 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 Jewel Reader structure 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 Felica Reader structure 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 Reader A structure 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 \ref phHalNfc_eDataRate enum 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 NFCIP1 structure 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 Remote Device Information Union 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 RF Device Type List 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 Remote Device Type List 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 Hal Command Union 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 Remote Device Information Structure 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 Transceive Information Data Structure 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 \ref phHal_sIso14443ACfg structure 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 \ref phHal_sIso14443BCfg structure 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 \ref phHal_sFelicaCfg_t structure 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 \ref phHal_sPollDevInfo_t enum 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 \ref phHal_eP2PMode enum 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, NFC_INFO_LLC_ERROR = 0x75U, /* NXP EVENTS */ NFC_EVT_MIFARE_ACCESS = 0x35, NFC_EVT_APDU_RECEIVED = 0x36, NFC_EVT_EMV_CARD_REMOVAL = 0x37 }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 \ref phHal_sEmuSupport structure 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 \ref phHal_sNfcIPCfg 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 Target Information Structure 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 \ref phHal_sSmartMX_Cfg structure 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 \ref phHal_sUiccEmuCfg structure 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 \ref phHal_sHostEmuCfg_A structure 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 \ref phHal_sHostEmuCfg_B structure 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 \ref phHal_sHostEmuCfg_F structure 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 \ref phHal_sEmulationCfg structure 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 \ref phHal_sReaderCfg structure 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 \ref phHal_sSEProtectionCfg structure 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 Poll configuration structure 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 \ref phHal_uConfig structure 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 */