From 5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a Mon Sep 17 00:00:00 2001 From: Nick Pelly Date: Thu, 23 Sep 2010 12:47:58 -0700 Subject: Initial libnfc checkin Source: Trusted_NFC_Device_Host_AA03.01e02_google.zip code drop (23-Sep-2010) Change-Id: Ie47f18423f949a8d3e0815d13f55c814312add24 Signed-off-by: Nick Pelly --- inc/phNfcHalTypes.h | 1323 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1323 insertions(+) create mode 100644 inc/phNfcHalTypes.h (limited to 'inc/phNfcHalTypes.h') diff --git a/inc/phNfcHalTypes.h b/inc/phNfcHalTypes.h new file mode 100644 index 0000000..748f01b --- /dev/null +++ b/inc/phNfcHalTypes.h @@ -0,0 +1,1323 @@ +/* + * 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 + + +/** \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 + +}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 */ -- cgit v1.1