| /* |
| * 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 phHal4Nfc.h |
| * \brief HAL Function Prototypes |
| * The HAL4.0 API provides the user to have a interface for PN544(PN54x)/PN65N |
| * NFC device.The API is a non-blocking API, asynchronous API. This means that |
| * when ever an API function call results in waiting for a response from the |
| * NFC device, the API function will return immediately with status 'PENDING' |
| * and the actual result will be returned through specific callback functions |
| * on receiving the response from the NFC device |
| * |
| * \note This is the representative header file of the HAL 4.0. The release |
| * TAG or label is representing the release TAG (alias) of the entire |
| * library.A mechanism (see documentation \ref hal_release_label near |
| * the include guards of this file) is used to propagate the alias to |
| * the main documentation page. |
| * |
| * Project: NFC-FRI-1.1 / HAL4.0 |
| * |
| * $Date: Mon Jun 14 11:36:12 2010 $ |
| * $Author: ing07385 $ |
| * $Revision: 1.171 $ |
| * $Aliases: NFC_FRI1.1_WK1023_R35_2,NFC_FRI1.1_WK1023_R35_1 $ |
| * |
| */ |
| |
| /** page hal_release_label HAL 4.0 Release Label |
| * SDK_HAL_4.0 v 0.1 Draft |
| * \note This is the TAG (label, alias) of the HAL. If the string is empty,the |
| * current documentation has not been generated from an official release. |
| */ |
| /*@{*/ |
| #ifndef PHHAL4NFC_H |
| #define PHHAL4NFC_H |
| /*@}*/ |
| |
| |
| /** |
| * \name HAL4 |
| * |
| * File: \ref phHal4Nfc.h |
| *\def hal |
| */ |
| |
| /*@{*/ |
| #define PH_HAL4NFC_FILEREVISION "$Revision: 1.171 $" /**< \ingroup grp_file_attributes */ |
| #define PH_HAL4NFC_FILEALIASES "$Aliases: NFC_FRI1.1_WK1023_R35_2,NFC_FRI1.1_WK1023_R35_1 $" /**< \ingroup grp_file_attributes */ |
| /*@}*/ |
| |
| /* -----------------Include files ---------------------------------------*/ |
| #include <phNfcStatus.h> |
| #include <phNfcCompId.h> |
| #include <phNfcHalTypes.h> |
| #include <phNfcInterface.h> |
| #include <phNfcIoctlCode.h> |
| #include <phNfcConfig.h> |
| #include <phDbgTrace.h> |
| #ifdef ANDROID |
| #include <string.h> |
| #endif |
| |
| /*************************** Includes *******************************/ |
| /** \defgroup grp_mw_external_hal_funcs NFC HAL4.0 |
| * |
| * |
| * |
| */ |
| /* ---------------- Macros ----------------------------------------------*/ |
| |
| /** HAL Implementation Version Macros : Updated for every feature release of |
| HAL functionality */ |
| #define PH_HAL4NFC_VERSION 8 |
| #define PH_HAL4NFC_REVISION 21 |
| #define PH_HAL4NFC_PATCH 1 |
| #define PH_HAL4NFC_BUILD 0 |
| |
| /** HAL Interface Version Macros : Updated for every external release of |
| HAL Interface */ |
| #define PH_HAL4NFC_INTERFACE_VERSION 0 |
| #define PH_HAL4NFC_INTERFACE_REVISION 6 |
| #define PH_HAL4NFC_INTERFACE_PATCH 0 |
| #define PH_HAL4NFC_INTERAFECE_BUILD 0 |
| |
| /**Maximum length of receive buffer maintained by HAL*/ |
| #define PH_HAL4NFC_MAX_RECEIVE_BUFFER 4096U |
| |
| /**Send length used for Transceive*/ |
| #define PH_HAL4NFC_MAX_SEND_LEN PHHAL_MAX_DATASIZE |
| |
| /* -----------------Structures and Enumerations -------------------------*/ |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Structure containing information about discovered remote device, like |
| * the number of remote devices found, device specific information |
| * like type of device (eg: ISO14443-4A/4B, NFCIP1 target etc) and |
| * the type sepcific information (eg: UID, SAK etc). This structure is |
| * returned as part of the disocvery notification. For more info refer |
| * \ref phHal4Nfc_ConfigureDiscovery, |
| * \ref phHal4Nfc_RegisterNotification, |
| * \ref pphHal4Nfc_Notification_t, |
| * phHal4Nfc_NotificationInfo_t |
| * |
| * |
| */ |
| typedef struct phHal4Nfc_DiscoveryInfo |
| { |
| uint32_t NumberOfDevices;/**< Number of devices found */ |
| phHal_sRemoteDevInformation_t **ppRemoteDevInfo;/**< Pointer to Remote |
| device info list*/ |
| }phHal4Nfc_DiscoveryInfo_t; |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * This is a union returned as part of the \ref pphHal4Nfc_Notification_t |
| * callback. It contains either discovery information or other event |
| * information for which the client has registered using the |
| * \ref phHal4Nfc_RegisterNotification. |
| */ |
| typedef union |
| { |
| phHal4Nfc_DiscoveryInfo_t *psDiscoveryInfo; |
| phHal_sEventInfo_t *psEventInfo; |
| }phHal4Nfc_NotificationInfo_t; |
| |
| |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Prototype for Generic callback type provided by upper layer. This is used |
| * to return the success or failure status an asynchronous API function which |
| * does not have any other additional information to be returned. Refer |
| * specific function for applicable status codes. |
| */ |
| typedef void (*pphHal4Nfc_GenCallback_t)( |
| void *context, |
| NFCSTATUS status |
| ); |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Disconnect callback type provided by upper layer to called on completion |
| * of disconnect call \ref phHal4Nfc_Disconnect. |
| * |
| */ |
| typedef void (*pphHal4Nfc_DiscntCallback_t)( |
| void *context, |
| phHal_sRemoteDevInformation_t *psDisconnectDevInfo, |
| NFCSTATUS status |
| ); |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Notification callback type used by HAL to provide a Discovery or |
| * Event notification to the upper layer. |
| * |
| */ |
| typedef void (*pphHal4Nfc_Notification_t) ( |
| void *context, |
| phHal_eNotificationType_t type, |
| phHal4Nfc_NotificationInfo_t info, |
| NFCSTATUS status |
| ); |
| |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Callback type used to provide a Connect Success or Failure indication to |
| * the upper layer as a result of \ref phHal4Nfc_Connect call used to connect |
| * to discovered remote device. |
| * |
| */ |
| typedef void (*pphHal4Nfc_ConnectCallback_t)( |
| void *context, |
| phHal_sRemoteDevInformation_t *psRemoteDevInfo, |
| NFCSTATUS status |
| ); |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * This callback type is used to provide received data and it's size to the |
| * upper layer in \ref phNfc_sData_t format ,when the upper layer has performed |
| * a Transceive operation on a tag or when the Device acts as an Initiator in a |
| * P2P transaction. |
| * |
| * |
| */ |
| typedef void (*pphHal4Nfc_TransceiveCallback_t) ( |
| void *context, |
| phHal_sRemoteDevInformation_t *ConnectedDevice, |
| phNfc_sData_t *pRecvdata, |
| NFCSTATUS status |
| ); |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * This callback type is used to provide received data and it's size to the |
| * upper layer in \ref phNfc_sData_t structure, when the upper layer when the |
| * Device acts as a Target in a P2P transaction. |
| * |
| * |
| */ |
| typedef void (*pphHal4Nfc_ReceiveCallback_t) ( |
| void *context, |
| phNfc_sData_t *pDataInfo, |
| NFCSTATUS status |
| ); |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Callback type to inform success or failure of the Ioctl calls |
| * made by upper layer. It may optionally contain response data |
| * depending on the Ioctl command issued. |
| * |
| */ |
| typedef void (*pphHal4Nfc_IoctlCallback_t) (void *context, |
| phNfc_sData_t *pOutData, |
| NFCSTATUS status ); |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| *\if hal |
| * \sa \ref pphHal4Nfc_GenCallback_t |
| * \endif |
| * |
| */ |
| |
| /** Same as general callback type, used to inform the completion of |
| * \ref phHal4Nfc_Send call done by when in NFCIP1 Target mode |
| */ |
| typedef pphHal4Nfc_GenCallback_t pphHal4Nfc_SendCallback_t; |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Enum type to distinguish between normal init and test mode init |
| * to be done as part of phHal4Nfc_Open |
| * In test mode init only minimal initialization of the NFC Device |
| * sufficient to run the self test is performed. |
| * |
| * \note Note: No functional features can be accessed when |
| * phHal4Nfc_Open is called with TestModeOn |
| * \ref phHal4Nfc_Open |
| * |
| */ |
| typedef enum{ |
| eInitDefault = 0x00, /**<Complete initialization for normal |
| firmware operation*/ |
| eInitTestModeOn, /**<Limited Initialization used for running self |
| tests */ |
| eInitCustom /**<Reserved for Future Use */ |
| } phHal4Nfc_InitType_t; |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Type to select the type of notification registration |
| * for Tags, P2P and SecureElement and Host Card Emulation events |
| * |
| * \if hal |
| * \ref phHal4Nfc_RegisterNotification,phHal4Nfc_UnregisterNotification |
| * \endif |
| * |
| */ |
| typedef enum{ |
| eRegisterDefault = 0x00, /**<For All other generic notifications |
| like Host Wakeup Notification */ |
| eRegisterTagDiscovery, /**<For Tag Discovery notification*/ |
| eRegisterP2PDiscovery, /**<For P2P Discovery notification*/ |
| eRegisterSecureElement, /**<For Secure Element notification*/ |
| eRegisterHostCardEmulation /**<For notification related to Virtual |
| Card Emulation from host */ |
| } phHal4Nfc_RegisterType_t; |
| |
| /** |
| * \ingroup grp_mw_external_hal_funcs |
| * |
| * Specifies the Remote Reader type,either initiator or ISO A/B or Felica |
| * |
| */ |
| typedef struct phHal4Nfc_TransactInfo{ |
| phHal_eRFDevType_t remotePCDType; |
| }phHal4Nfc_TransactInfo_t; |
| |
| /*preliminary definitions end*/ |
| |
| /* -----------------Exported Functions----------------------------------*/ |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This function initializes and establishes a link to the NFC Device. This is |
| * a asynchronous call as it requires a series of setup calls with the NFC |
| * device. The open is complete when the status response callback <em> |
| * pOpenCallback </em> is called. It uses a Hardware Reference |
| * \ref phHal_sHwReference, allocated by the upper layer and the p_board_driver |
| * member initialized with the dal_instance (handle to the communication driver) |
| * and other members initialized to zero or NULL. |
| * |
| * \note |
| * - The device is in initialized state after the command has completed |
| * successfully. |
| * |
| * |
| * \param[in,out] psHwReference Hardware Reference, pre-initialized by upper |
| * layer. Members of this structure are made valid if |
| * this function is successful. \n |
| * |
| * \param[in] InitType Initialization type, used to differentiate between |
| * test mode limited initialization and normal init. |
| * |
| * \param[in] pOpenCallback The open callback function called by the HAL |
| * when open (initialization) sequence is completed or if there |
| * is an error in initialization. \n |
| * |
| * \param[in] pContext Upper layer context which will be included in the |
| * call back when request is completed. \n |
| * |
| * \retval NFCSTATUS_PENDING Open sequence has been successfully |
| * started and result will be conveyed |
| * via the pOpenCallback function. |
| * \retval NFCSTATUS_ALREADY_INITIALISED Device initialization already in |
| * progress. |
| * \retval NFCSTATUS_INVALID_PARAMETER The parameter could not be properly |
| * interpreted (structure uninitialized?). |
| * \retval NFCSTATUS_INSUFFICIENT_RESOURCES Insufficient resources for |
| * completing the request. |
| * \retval Others Errors related to the lower layers. |
| * |
| * \if hal |
| * \sa \ref phHal4Nfc_Close, |
| * \endif |
| */ |
| extern NFCSTATUS phHal4Nfc_Open( |
| phHal_sHwReference_t *psHwReference, |
| phHal4Nfc_InitType_t InitType, |
| pphHal4Nfc_GenCallback_t pOpenCallback, |
| void *pContext |
| ); |
| |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * Retrieves the capabilities of the device represented by the Hardware |
| * Reference parameter.The HW, FW versions,model-id and other capability |
| * information are located inside the pDevCapabilities parameter. |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized |
| * by upper layer. \n |
| * \param[out] psDevCapabilities Pointer to the device capabilities structure |
| * where all relevant capabilities of the |
| * peripheral are stored. \n |
| * \param[in] pContext Upper layer context which will be included in |
| * the call back when request is completed. \n |
| * |
| * \retval NFCSTATUS_SUCCESS Success and the psDevCapabilities is |
| * updated with info. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * \retval NFCSTATUS_NOT_INITIALISED Hal is not yet initialized. |
| * \retval Others Errors related to the lower layers. |
| * |
| */ |
| extern NFCSTATUS phHal4Nfc_GetDeviceCapabilities( |
| phHal_sHwReference_t *psHwReference, |
| phHal_sDeviceCapabilities_t *psDevCapabilities, |
| void *pContext |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This function is used to Configure discovery wheel (and start if |
| * required) based on the discovery configuration passed. |
| * This includes enabling/disabling of the Reader phases (A, B, F), |
| * NFCIP1 Initiator Speed and duration of the Emulation phase. |
| * Additional optional parameters for each of the features i.e. Reader, |
| * Emulation and Peer2Peer can be set using the |
| * \ref phHal4Nfc_ConfigParameters function |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] discoveryMode Discovery Mode allows to choose between: |
| * discovery configuration and start, stop |
| * discovery and start discovery (with last |
| * set configuration). |
| * \ref phHal_eDiscoveryConfigMode_t |
| * \note Note: Presently only NFC_DISCOVERY_CONFIG is supported, other values |
| * are for future use. When in Reader/Initiator mode it mandatory |
| * to call phHal4Nfc_Connect before any transaction can be performed |
| * with the discovered device. |
| * |
| * \param[in] discoveryCfg Discovery configuration parameters. |
| * Reader A/Reader B, Felica 212, Felica 424, |
| * NFCIP1 Speed, Emulation Enable and Duration. |
| * |
| * |
| * \param[in] pConfigCallback This callback has to be called once Hal |
| * completes the Configuration. |
| * |
| * \param[in] pContext Upper layer context to be returned in the |
| * callback. |
| * |
| * \retval NFCSTATUS_INVALID_PARAMETER Wrong Parameter values. |
| * |
| * \retval NFCSTATUS_NOT_INITIALISED Hal is not initialized. |
| * |
| * \retval NFCSTATUS_BUSY Cannot Configure Hal in |
| * Current state. |
| * |
| * \retval NFCSTATUS_INSUFFICIENT_RESOURCES System Resources insufficient. |
| * |
| * \retval NFCSTATUS_PENDING Configuration request accepted |
| * and Configuration is in progress. |
| * |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied |
| * parameters could not be properly |
| * interpreted. |
| * \retval Others Errors related to the lower layers |
| * |
| * \note Note: When in Reader/Initiator mode it mandatory |
| * to call phHal4Nfc_Connect before any transaction can be performed |
| * with the discovered device. Even if the HAL client is not |
| * interested in using any of the discovered phHal4Nfc_Connect and |
| * phHal4Nfc_Disconnect should be called to restart the Discovery |
| * wheel |
| * |
| * \ref phHal4Nfc_Connect, phHal4Nfc_Disconnect |
| * |
| */ |
| extern NFCSTATUS phHal4Nfc_ConfigureDiscovery( |
| phHal_sHwReference_t *psHwReference, |
| phHal_eDiscoveryConfigMode_t discoveryMode, |
| phHal_sADD_Cfg_t *discoveryCfg, |
| pphHal4Nfc_GenCallback_t pConfigCallback, |
| void *pContext |
| ); |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This function is used to set parameters of various features of the Hal, |
| * based on the CfgType parameter. Presently following configuration |
| * types are supported :- |
| * \n 1. NFC_RF_READER_CONFIG (optional)-> Configure parameters for Reader A |
| * or Reader B based on the configuration passed |
| * \n 2. NFC_P2P_CONFIG (optional)-> Congfigure P2P parameters like |
| * 'General bytes', 'PSL Request' etc. |
| * \n 3. NFC_EMULATION_CONFIG -> Enable and configure the emulation mode |
| * parameters for either NFC Target, SmartMX, UICC and |
| * \n Card Emulation from Host (A, B, F) |
| * All the configuration modes can be called independent of each other. The |
| * setting will typically take effect for the next cycle of the relevant |
| * phase of discovery. For optional configuration internal defaults will be |
| * used in case the configuration is not set. |
| * \note Card emulation from Host and Card Emulation from UICC are mutually |
| * exclusive modes, i.e: only one can be enabled at a time. Using |
| * this function to enable one of the emulation modes implicitly disables the |
| * the other. eg. Setting Type A (or Type B) Emulation from Host disables |
| * card emulation from UICC and vice versa. |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] eCfgType Configuration type which can take one of the |
| * enum values of \ref phHal_eConfigType_t. Each |
| * config type is associated with its corresponding |
| * information which is passed using the uCfg structure. |
| * |
| * |
| * \param[in] uCfg Union containing configuration information, |
| * which will be interpreted based on eCfgType |
| * parameter. |
| * |
| * |
| * \param[in] pConfigCallback This callback has to be called once Hal |
| * completes the Configuration. |
| * |
| * \param[in] pContext Upper layer context to be returned in the |
| * callback. |
| * |
| * \retval NFCSTATUS_INVALID_PARAMETER Wrong Parameter values. |
| * |
| * \retval NFCSTATUS_NOT_INITIALISED Hal is not initialized. |
| * |
| * \retval NFCSTATUS_BUSY Cannot Configure Hal in |
| * Current state. |
| * |
| * \retval NFCSTATUS_INSUFFICIENT_RESOURCES System Resources insufficient. |
| * |
| * \retval NFCSTATUS_PENDING Configuration request accepted |
| * and Configuration is in progress. |
| * |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied |
| * parameters could not be properly |
| * interpreted. |
| * \retval Others Errors related to the lower layers |
| */ |
| |
| extern NFCSTATUS phHal4Nfc_ConfigParameters( |
| phHal_sHwReference_t *psHwReference, |
| phHal_eConfigType_t eCfgType, |
| phHal_uConfig_t *uCfg, |
| pphHal4Nfc_GenCallback_t pConfigCallback, |
| void *pContext |
| ); |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_nfci |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This function is called to connect to a one (out of many if multiple |
| * devices are discovered) already discovered Remote Device notified |
| * through register notification. The Remote Device Information structure is |
| * already pre-initialized with data (e.g. from Discovery Notificaiton |
| * Callback) A new session is started after the connect function returns |
| * successfully. The session ends with a successful disconnect |
| * (see \ref phHal4Nfc_Disconnect). |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in,out] psRemoteDevInfo Points to the Remote Device Information |
| * structure. The members of it can be |
| * re-used from a previous session. |
| * |
| * \param[in] pNotifyConnectCb Upper layer callback to be called for |
| * notifying Connect Success/Failure |
| * |
| * \param[in] pContext Upper layer context to be returned in |
| * pNotifyConnectCb. |
| * |
| * \retval NFCSTATUS_PENDING Request initiated, result will |
| * be informed through the callback. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied |
| * parameters could not be |
| * properly interpreted. |
| * \retval NFCSTATUS_FAILED More than one phHal4Nfc_Connect |
| * is not allowed during a session |
| * on the same remote device. The |
| * session has to be closed before |
| * (see\ref phHal4Nfc_Disconnect). |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval NFCSTATUS_FEATURE_NOT_SUPPORTED Reactivation is not supported for |
| * NfcIp target and Jewel/Topaz |
| * remote device types. |
| * \retval NFCSTATUS_INVALID_REMOTE_DEVICE The Remote Device Identifier is |
| * not valid. |
| * \retval Others Errors related to the lower layers. |
| * |
| * \if hal |
| * \sa \ref phHal4Nfc_Disconnect |
| * \endif |
| */ |
| extern NFCSTATUS phHal4Nfc_Connect( |
| phHal_sHwReference_t *psHwReference, |
| phHal_sRemoteDevInformation_t *psRemoteDevInfo, |
| pphHal4Nfc_ConnectCallback_t pNotifyConnectCb, |
| void *pContext |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_nfci |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * The phHal4Nfc_Transceive function allows to send data to and receive data |
| * from the Remote Device selected by the caller.It is also used by the |
| * NFCIP1 Initiator while performing a transaction with the NFCIP1 target. |
| * The caller has to provide the Remote Device Information structure and the |
| * command in order to communicate with the selected remote device.For P2P |
| * transactions the command type will not be used. |
| * |
| * |
| * \note the RecvData should be valid until the pTrcvCallback has been called. |
| * |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in,out] psTransceiveInfo Information required by transceive is |
| * concealed in this structure.It contains |
| * the send,receive buffers and their |
| * lengths. |
| * |
| * \param[in] psRemoteDevInfo Points to the Remote Device Information |
| * structure which identifies the selected |
| * Remote Device. |
| * |
| * \param[in] pTrcvCallback Callback function for returning the |
| * received response or error. |
| * |
| * \param[in] pContext Upper layer context to be returned in |
| * the callback. |
| * |
| * \retval NFCSTATUS_PENDING Transceive initiated.pTrcvCallback |
| * will return the response or error. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval NFCSTATUS_SUCCESS This status is used when send data |
| * length is zero and HAL contains |
| * previously more bytes from previous |
| * receive. \n |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied |
| * parameters could not be properly |
| * interpreted or are invalid. |
| * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or |
| * has been disconnected meanwhile. |
| * \retval NFCSTATUS_FEATURE_NOT_SUPPORTED Transaction on this Device type is |
| * not supported. |
| * \retval NFCSTATUS_BUSY Previous transaction is not |
| * completed. |
| * \retval NFCSTATUS_INSUFFICIENT_RESOURCES System resources are insufficient |
| * to complete the request at that |
| * point in time. |
| * \retval NFCSTATUS_MORE_INFORMATION Received number of bytes is greater |
| * than receive buffer provided by the |
| * upper layer.Extra bytes will be |
| * retained by Hal and returned on next |
| * call to transceive. |
| * \retval Others Errors related to the lower layers. |
| * |
| */ |
| extern NFCSTATUS phHal4Nfc_Transceive( |
| phHal_sHwReference_t *psHwReference, |
| phHal_sTransceiveInfo_t *psTransceiveInfo, |
| phHal_sRemoteDevInformation_t *psRemoteDevInfo, |
| pphHal4Nfc_TransceiveCallback_t pTrcvCallback, |
| void *pContext |
| ); |
| |
| |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_nfci |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * The function allows to disconnect from a specific Remote Device. This |
| * function closes the session opened with \ref phHal4Nfc_Connect "Connect".It |
| * is also used to switch from wired to virtual mode in case the discovered |
| * device is SmartMX in wired mode. The status of discovery wheel after |
| * disconnection is determined by the ReleaseType parameter. |
| * |
| * |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * \param[in,out] psRemoteDevInfo Points to the valid (connected) Remote |
| * Device Information structure. |
| * |
| * \param[in] ReleaseType Defines various modes of releasing an acquired |
| * target or tag |
| * |
| * \param[in] pDscntCallback Callback function to notify |
| * disconnect success/error. |
| * |
| * \param[in] pContext Upper layer context to be returned in |
| * the callback. |
| * |
| * |
| * \retval NFCSTATUS_PENDING Disconnect initiated.pDscntCallback |
| * will return the response or error. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied |
| * parameters could not be properly |
| * interpreted. |
| * \retval NFCSTATUS_INVALID_REMOTE_DEVICE The device has not been opened |
| * before or has already been closed. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval Others Errors related to the lower layers. |
| * |
| * \if hal |
| * \sa \ref phHal4Nfc_Connect |
| * \endif |
| */ |
| extern NFCSTATUS phHal4Nfc_Disconnect( |
| phHal_sHwReference_t *psHwReference, |
| phHal_sRemoteDevInformation_t *psRemoteDevInfo, |
| phHal_eReleaseType_t ReleaseType, |
| pphHal4Nfc_DiscntCallback_t pDscntCallback, |
| void *pContext |
| ); |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * The function allows to do a one time check on whether the connected target |
| * is still present in the field of the Reader. The call back returns the |
| * result of the presence check sequence indicating whether it is still present |
| * or moved out of the reader field. |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] pPresenceChkCb Callback function called on completion of the |
| * presence check sequence or in case an error |
| * has occurred.. |
| * |
| * \param[in] context Upper layer context to be returned in the |
| * callback. |
| * |
| * \retval NFCSTATUS_PENDING Call successfully issued to lower layer. |
| * Status will be returned in pPresenceChkCb. |
| * |
| * \retval NFCSTATUS_NOT_INITIALISED The device has not been opened or has |
| * been disconnected meanwhile. |
| * |
| * \retval NFCSTATUS_BUSY Previous presence check callback has not |
| * been received |
| * |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * |
| * \retval NFCSTATUS_RELEASED P2P target has been released by Initiator. |
| * \retval Others Errors related to the lower layers |
| * |
| */ |
| extern NFCSTATUS phHal4Nfc_PresenceCheck( |
| phHal_sHwReference_t *psHwReference, |
| pphHal4Nfc_GenCallback_t pPresenceChkCb, |
| void *context |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * The I/O Control function allows the caller to use (vendor-) specific |
| * functionality provided by the lower layer or by the hardware. Each feature |
| * is accessible via a specific IOCTL Code and has to be documented by the |
| * provider of the driver and the hardware. |
| * See "IOCTL Codes" for the definition of a standard command set.\n |
| * |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * \param[in] IoctlCode Control code for the operation. |
| * This value identifies the specific |
| * operation to be performed and are defined |
| * in \ref phNfcIoctlCode.h |
| * |
| * \param[in] pInParam Pointer to any input data structure |
| * containing data which is interpreted |
| * based on Ioctl code and the length of |
| * the data. |
| * |
| * \param[in] pOutParam Pointer to output data structure |
| * containing data which is returned as a |
| * result of the Ioctl operation and the |
| * length of the data. |
| * |
| * \param[in] pIoctlCallback callback function called in case an |
| * error has occurred while performing |
| * requested operation,or on successful |
| * completion of the request |
| * |
| * \param[in] pContext Upper layer context to be returned in |
| * the callback. |
| * |
| * \retval NFCSTATUS_SUCCESS Success. |
| * \retval NFCSTATUS_PENDING Call issued to lower layer.Status will |
| * be notified in pIoctlCallback. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval Others Errors related to the lower layers. |
| * |
| */ |
| extern NFCSTATUS phHal4Nfc_Ioctl( |
| phHal_sHwReference_t *psHwReference, |
| uint32_t IoctlCode, |
| phNfc_sData_t *pInParam, |
| phNfc_sData_t *pOutParam, |
| pphHal4Nfc_IoctlCallback_t pIoctlCallback, |
| void *pContext |
| ); |
| |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * Closes the link to the NFC device. All configurations/setups |
| * done until now are invalidated.To restart communication, phHal4Nfc_Open |
| * needs to be called. The pClosecallback is called when all steps |
| * in the close sequence are completed. |
| * |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] pCloseCallback Callback function called on completion of |
| * the close sequence or in case an error |
| * has occurred.. |
| * |
| * \param[in] pContext Upper layer context to be returned |
| * in the callback. |
| * |
| * \retval NFCSTATUS_SUCCESS Closing successful. |
| * \retval NFCSTATUS_NOT_INITIALIZED The device has not been opened or has |
| * been disconnected meanwhile. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * \retval NFCSTATUS_BUSY Configuration is in progress.Shutdown |
| * is not allowed until configure complete. |
| * \retval Others Errors related to the lower layers. |
| * |
| * \if hal |
| * \sa \ref phHal4Nfc_Open |
| * \endif |
| */ |
| extern NFCSTATUS phHal4Nfc_Close( |
| phHal_sHwReference_t *psHwReference, |
| pphHal4Nfc_GenCallback_t pCloseCallback, |
| void *pContext |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * Forcibly shutdown the HAl.This API makes a call to forcibly shutdown the |
| * lower layer and frees all resources in use by Hal before shutting down.The |
| * API always succeeds.It does not however reset the target. |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] pConfig Reserved for future use. |
| * |
| * |
| */ |
| extern void phHal4Nfc_Hal4Reset( |
| phHal_sHwReference_t *psHwReference, |
| void *pConfig |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * The function is used by the NFCIP1 Target to respond to packect received |
| * from NFCIP1 initiator. pSendCallback() |
| * is called , when all steps in the send sequence are completed. |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] psTransactInfo information required for transferring |
| * the data |
| * |
| * \param[in] sTransferData Data and the length of the data to be |
| * transferred |
| * |
| * \param[in] pSendCallback Callback function called on completion |
| * of the NfcIP sequence or in case an |
| * error has occurred. |
| * |
| * \param[in] pContext Upper layer context to be returned in |
| * the callback. |
| * |
| * \retval NFCSTATUS_PENDING Send is in progress. |
| * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has |
| * been disconnected meanwhile. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval Others Errors related to the lower layers. |
| * |
| * |
| */ |
| extern |
| NFCSTATUS |
| phHal4Nfc_Send( |
| phHal_sHwReference_t *psHwReference, |
| phHal4Nfc_TransactInfo_t *psTransactInfo, |
| phNfc_sData_t sTransferData, |
| pphHal4Nfc_SendCallback_t pSendCallback, |
| void *pContext |
| ); |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This function is called by the NfcIP Peer to wait for receiving data from |
| * the other peer.It is used only by the NfcIP Target. |
| * \note NOTE: After this function is called, its mandatory to wait for the |
| * pphHal4Nfc_ReceiveCallback_t callback, before calling any other function. |
| * Only functions allowed are phHal4Nfc_Close() and phHal4Nfc_Hal4Reset(). |
| * |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] psTransactInfo information required for transferring the |
| * data |
| * |
| * \param[in] pReceiveCallback Callback function called after receiving |
| * the data or in case an error has |
| * has occurred. |
| * |
| * \param[in] pContext Upper layer context to be returned |
| * in the callback. |
| * |
| * \retval NFCSTATUS_PENDING Receive is in progress. |
| * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or has |
| * been disconnected meanwhile. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval Others Errors related to the lower layers |
| * |
| */ |
| extern |
| NFCSTATUS |
| phHal4Nfc_Receive( |
| phHal_sHwReference_t *psHwReference, |
| phHal4Nfc_TransactInfo_t *psTransactInfo, |
| pphHal4Nfc_ReceiveCallback_t pReceiveCallback, |
| void *pContext |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This API is a synchronous call used to register a listener for either tag |
| * discovery, Secure element notification or P2P Notification or a general |
| * notification handler for all the three. |
| * |
| * |
| * \param[in] psHwRef Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] eRegisterType Type of Notification registered.Informs |
| * whether upper layer is interested in Tag |
| * Discovery,secure element or P2P notification. |
| * |
| * \param[in] pNotificationHandler Notification callback.If this parameter is |
| * NULL,any notification from Hci will be |
| * ignored and upper layer will not be notified |
| * of the event. |
| * |
| * \param[in] Context Upper layer context. |
| * |
| * \retval NFCSTATUS_SUCCESS Notification unregister successful. |
| * |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * |
| */ |
| extern NFCSTATUS phHal4Nfc_RegisterNotification( |
| phHal_sHwReference_t *psHwRef, |
| phHal4Nfc_RegisterType_t eRegisterType, |
| pphHal4Nfc_Notification_t pNotificationHandler, |
| void *Context |
| ); |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This API is a synchronous call used to unregister a listener for either tag |
| * discovery, Secure element notification or P2P Notification, previously |
| * registered using \ref phHal4Nfc_RegisterNotification. |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] eRegisterType Type of registration ,tells whether upper |
| * layer is interested in unregistering for |
| * Tag Discovery,Secure element or P2P. \n |
| * |
| * \param[in] Context Upper layer context. |
| * |
| * \retval NFCSTATUS_SUCCESS Notification unregister successful. |
| * |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters |
| * could not be properly interpreted. |
| * |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * |
| * |
| */ |
| extern NFCSTATUS phHal4Nfc_UnregisterNotification( |
| phHal_sHwReference_t *psHwReference, |
| phHal4Nfc_RegisterType_t eRegisterType, |
| void *Context |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This function is called to switch the SmartMX to Wired Mode. After switching |
| * to Wired mode the SmartMX can be discovered through Tag Discovery like a normal |
| * tag and used in the same manner as a tag. SmartMx returns to previous mode |
| * (Virtual or Off) when the tag is relased by phHal4Nfc_Disconnect |
| * |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] smx_mode Mode to which the switch should be made. |
| * |
| * \param[in] pSwitchModecb Callback for Switch mode complete |
| * with success/error notification. |
| * |
| * \param[in] pContext Upper layer context. |
| * |
| * \retval NFCSTATUS_PENDING Switch in progress.Status will be |
| * returned in pSwitchModecb. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied |
| * parameters could not be properly |
| * interpreted. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval NFCSTATUS_BUSY Configuration in Progress or |
| * remote device is connected. |
| * \retval NFCSTATUS_INSUFFICIENT_RESOURCES System resources are insufficient |
| * to complete the request at that |
| * point in time. |
| * \retval NFCSTATUS_FAILED No listener has been registered |
| * by the upper layer for Emulation |
| * before making this call. |
| * \retval Others Errors related to the lower |
| * layers. |
| */ |
| extern NFCSTATUS phHal4Nfc_Switch_SMX_Mode( |
| phHal_sHwReference_t *psHwReference, |
| phHal_eSmartMX_Mode_t smx_mode, |
| pphHal4Nfc_GenCallback_t pSwitchModecb, |
| void *pContext |
| ); |
| |
| |
| /** |
| * \if hal |
| * \ingroup grp_hal_common |
| * \else |
| * \ingroup grp_mw_external_hal_funcs |
| * \endif |
| * |
| * This function is called to switch the UICC on or Off. |
| * |
| * |
| * \param[in] psHwReference Hardware Reference, pre-initialized by |
| * upper layer. \n |
| * |
| * \param[in] smx_mode Mode to which the switch should be made. |
| * |
| * \param[in] pSwitchModecb Callback for Switch mode complete |
| * with success/error notification. |
| * |
| * \param[in] pContext Upper layer context. |
| * |
| * \retval NFCSTATUS_PENDING Switch in progress.Status will be |
| * returned in pSwitchModecb. |
| * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied |
| * parameters could not be properly |
| * interpreted. |
| * \retval NFCSTATUS_NOT_INITIALIZED Hal is not initialized. |
| * \retval NFCSTATUS_BUSY Configuration in Progress or |
| * remote device is connected. |
| * \retval NFCSTATUS_INSUFFICIENT_RESOURCES System resources are insufficient |
| * to complete the request at that |
| * point in time. |
| * \retval NFCSTATUS_FAILED No listener has been registered |
| * by the upper layer for Emulation |
| * before making this call. |
| * \retval Others Errors related to the lower |
| * layers. |
| */ |
| extern NFCSTATUS phHal4Nfc_Switch_Swp_Mode( |
| phHal_sHwReference_t *psHwReference, |
| phHal_eSWP_Mode_t swp_mode, |
| pphHal4Nfc_GenCallback_t pSwitchModecb, |
| void *pContext |
| ); |
| |
| #endif /* end of PHHAL4NFC_H */ |
| |
| |