blob: 522df6ddfb92326391c64dc3d41daf5d13371e1d [file] [log] [blame]
/*
* 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>
#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 <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,
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 <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 */