summaryrefslogtreecommitdiffstats
path: root/src/phLibNfc.h
diff options
context:
space:
mode:
authorNick Pelly <npelly@google.com>2010-09-23 12:47:58 -0700
committerNick Pelly <npelly@google.com>2010-09-23 13:53:18 -0700
commit5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a (patch)
tree190f9251c6db03d3550ec7f30b51a2561c01d9cf /src/phLibNfc.h
parent4ff7c86a2c706b150078274455406f1b04966e1a (diff)
downloadexternal_libnfc-nxp-5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a.zip
external_libnfc-nxp-5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a.tar.gz
external_libnfc-nxp-5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a.tar.bz2
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 <npelly@google.com>
Diffstat (limited to 'src/phLibNfc.h')
-rw-r--r--src/phLibNfc.h2888
1 files changed, 2888 insertions, 0 deletions
diff --git a/src/phLibNfc.h b/src/phLibNfc.h
new file mode 100644
index 0000000..f63e510
--- /dev/null
+++ b/src/phLibNfc.h
@@ -0,0 +1,2888 @@
+/*
+ * 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 phLibNfc_1.1.h
+*\brief Contains FRI1.1 API details.
+*Project: NFC-FRI 1.1
+* $Workfile:: phLibNfc_1.1.h $
+* $Modtime:: $
+* $Author: ing07385 $
+* $Revision: 1.80 $
+* $Aliases: NFC_FRI1.1_WK1014_SDK,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1019_SDK,NFC_FRI1.1_WK1024_SDK $
+*\defgroup grp_lib_nfc LIBNFC Component
+*/
+/* \page LibNfc_release_label FRI1.1 API Release Label
+* $Aliases: NFC_FRI1.1_WK1014_SDK,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1019_SDK,NFC_FRI1.1_WK1024_SDK $
+*\note This is the TAG (label, alias) of the FRI1.1.
+*If the string is empty, the current documentation
+* has not been generated for official release.
+*/
+#ifndef PHLIBNFC_H
+#define PHLIBNFC_H
+#include <phNfcTypes.h>
+#include <phLibNfcStatus.h>
+#include <phFriNfc_NdefRecord.h>
+#include <phNfcLlcpTypes.h>
+#ifdef ANDROID
+#include <string.h>
+#endif
+/*!
+*\def PHLIBNFC_MAXNO_OF_SE
+*Defines maximum no of secured elements supported by PN544.
+*/
+#define PHLIBNFC_MAXNO_OF_SE (0x02)
+
+typedef uint32_t phLibNfc_Handle;
+
+
+/**
+*\ingroup grp_lib_nfc
+*
+*\brief Defines Testmode Init configuration values
+*/
+
+typedef enum
+{
+ phLibNfc_TstMode_Off = 0x00, /**< Test mode is off */
+ phLibNfc_TstMode_On /**< Testmode is on */
+
+} phLibNfc_Cfg_Testmode_t;
+
+
+/**
+*\ingroup grp_lib_nfc
+*
+*\brief Defines Secure Element configurable states
+*/
+
+typedef enum
+{
+ phLibNfc_SE_Active = 0x00, /**< state of the SE is active */
+ phLibNfc_SE_Inactive= 0x01 /**< state of the SE is In active*/
+
+} phLibNfc_SE_State_t;
+
+/**
+*\ingroup grp_lib_nfc
+*
+*\brief Defines Secure Element types.
+*/
+typedef enum
+{
+ phLibNfc_SE_Type_Invalid=0x00,/**< Indicates SE type is Invalid */
+ phLibNfc_SE_Type_SmartMX=0x01,/**< Indicates SE type is SmartMX */
+ phLibNfc_SE_Type_UICC =0x02,/**<Indicates SE type is UICC */
+ phLibNfc_SE_Type_Unknown=0x03/**< Indicates SE type is Unknown */
+}phLibNfc_SE_Type_t;
+
+/**
+*\ingroup grp_lib_nfc
+*
+*\brief Defines Ndef Card Offset.
+*/
+typedef enum
+{
+ phLibNfc_Ndef_EBegin = 0x01, /**< Start from Beginning position */
+ phLibNfc_Ndef_ECurrent /**< Start from Current position */
+
+} phLibNfc_Ndef_EOffset_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief This function allows to activate specific Secure element.
+
+*\b VirtualMode: Virtual mode is used to communicated with secure elements from external reader.
+* This mode is also called as card emulation mode.when secure element mode is set
+* to this mode,external reader can communicate with this SE.
+*
+*\b WiredMode: Wired mode is used to communicate with the Secure Element internally.
+* No RF field is generated. In this mode, PN544 acts as reader and discovers
+* SmartMX as MIFARE tag.External reader cannot access any of the SE's in this mode.
+* This mode is applicable to only SmartMX secure element.
+*
+*/
+typedef enum
+{
+ phLibNfc_SE_ActModeWired=0x00, /**< Enables Wired Mode communication.This mode shall
+ be applied to */
+ phLibNfc_SE_ActModeDefault = 0x01, /**< Enables Virtual Mode communication.
+ This can be applied to UICC as well as SmartMX*/
+ phLibNfc_SE_ActModeVirtual=0x02, /**< Enables Virtual Mode communication.
+ This can be applied to UICC as well as SmartMX*/
+ phLibNfc_SE_ActModeOff =0x03 /**< Inactivate SE.This means,put SE in in-active state */
+
+}phLibNfc_eSE_ActivationMode;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines SE low power mode types.
+*/
+typedef enum
+{
+ phLibNfc_SE_LowPowerMode_Off= 0x01, /**< Indicates no SE to be selected in low power mode */
+ phLibNfc_SE_LowPowerMode_On = 0x02 /**< Indicates requested SE to be selected in low power mode */
+
+} phLibNfc_SE_LowPowerMode_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines Secure element event info .
+*/
+typedef union phLibNfc_uSeEvtInfo
+{ phNfc_sUiccInfo_t UiccEvtInfo; /**< Indicates UICC event info for Evt_Transaction event */ }phLibNfc_uSeEvtInfo_t;
+ /**
+* \ingroup grp_lib_nfc
+*
+*\brief Types of SE transaction events sent to SE notification handler .
+*/
+typedef enum
+{
+ phLibNfc_eSE_EvtStartTransaction=0x00, /**< Indicates transaction started on
+ secure element */
+ phLibNfc_eSE_EvtEndTransaction=0x01, /**<Indicates transaction ended on secure
+ element*/
+ phLibNfc_eSE_EvtTypeTransaction=0x02, /**<Indicates external reader trying to access secure element */
+
+ phLibNfc_eSE_EvtConnectivity /**<This event notifies the terminal host that it shall
+ send a connectivity event from UICC as defined in
+ ETSI TS 102 622 V7.4.0 */
+} phLibNfc_eSE_EvtType_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines possible registration details for notifications.
+*/
+typedef phNfc_sSupProtocol_t phLibNfc_Registry_Info_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Generic Data buffer definition.
+*/
+typedef phNfc_sData_t phLibNfc_Data_t;
+/**
+* \ingroup grp_lib_nfc
+*
+* Application Identifier (phLibNfc_AID)
+*
+* The application identifier defines a specific application on a SE.
+*
+*/
+typedef phNfc_sData_t phLibNfc_AID;
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Remote Device Info definition .
+*/
+typedef phNfc_sRemoteDevInformation_t phLibNfc_sRemoteDevInformation_t;
+/**
+* \ingroup grp_lib_nfc
+*/
+typedef phNfc_eDiscoveryConfigMode_t phLibNfc_eDiscoveryConfigMode_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Transceive info definition.
+*/
+typedef phNfc_sTransceiveInfo_t phLibNfc_sTransceiveInfo_t;
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Automatic Device Discovery Definition.
+*/
+typedef phNfc_sADD_Cfg_t phLibNfc_sADD_Cfg_t;
+/**
+*\ingroup grp_lib_nfc
+*
+*\brief Release mode definition.
+*/
+typedef phNfc_eReleaseType_t phLibNfc_eReleaseType_t;
+
+/**
+*\ingroup grp_lib_nfc
+*
+*\brief device capabilities details.
+*/
+typedef phNfc_sDeviceCapabilities_t phLibNfc_sDeviceCapabilities_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines supported tag types for NDEF mapping and formatting feature.
+*/
+typedef struct SupportedTagInfo
+{
+ unsigned MifareUL:1; /**<TRUE indicates specified feature (mapping or formatting)for MIFARE UL tag supported else not supported.*/
+ unsigned MifareStd:1; /**<TRUE indicates specified feature (mapping or formatting)for Mifare Std tag supported else not supported.*/
+ unsigned MifareULC:1; /**<TRUE indicates specified feature (mapping or formatting)for MIFARE UL2 tag supported else not supported.*/
+ unsigned ISO14443_4A:1; /**<TRUE indicates specified feature (mapping or formatting)for ISO14443_4A tag supported else not supported.*/
+ unsigned ISO14443_4B:1; /**<TRUE indicates specified feature (mapping or formatting)for ISO14443_4B tag supported else not supported.*/
+ unsigned ISO15693:1; /**<TRUE indicates specified feature (mapping or formatting)for ISO15693 tag supported else not supported.*/
+ unsigned FeliCa:1; /**<TRUE indicates specified feature (mapping or formatting)for FeliCa tag supported else not supported.*/
+ unsigned Jewel:1; /**<TRUE indicates specified feature (mapping or formatting)for JEWEL tag supported else not supported.*/
+ unsigned Desfire:1; /**<TRUE indicates specified feature (mapping or formatting)for desfire tag supported else not supported.*/
+
+}phLibNfc_sSupportedTagInfo_t;
+
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines supported tag types for NDEF mapping feature.
+*/
+typedef phLibNfc_sSupportedTagInfo_t phLibNfc_sNDEFMappingInfo_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines supported tag types for NDEF formatting feature.
+*/
+
+typedef phLibNfc_sSupportedTagInfo_t phLibNfc_sTagFormattingInfo_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Stack capabilities details contains device capabilities and supported tags for NDEF mapping and formatting feature.
+*/
+
+typedef struct StackCapabilities
+{
+ phLibNfc_sDeviceCapabilities_t psDevCapabilities;
+ phLibNfc_sNDEFMappingInfo_t psMappingCapabilities;
+ phLibNfc_sTagFormattingInfo_t psFormatCapabilities;
+}phLibNfc_StackCapabilities_t;
+
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines Secure Element list type.
+*/
+typedef struct phLibNfc_SecureElementInfo
+{
+ phLibNfc_Handle hSecureElement; /**< handle to Secure Element */
+ phLibNfc_SE_Type_t eSE_Type; /**< type of Secure Element(SE)*/
+ phLibNfc_SE_State_t eSE_CurrentState;/**< state of the secure element indicates activated or not*/
+} phLibNfc_SE_List_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Defines target specific info obtained during device discovery.
+*/
+typedef struct phLibNfc_RemoteDev
+{
+ phLibNfc_Handle hTargetDev; /**< discovered Target handle */
+ phLibNfc_sRemoteDevInformation_t* psRemoteDevInfo; /**< discovered Target details */
+
+}phLibNfc_RemoteDevList_t;
+
+typedef phNfc_sNfcIPCfg_t phLibNfc_sNfcIPCfg_t;
+
+/**
+*\ingroup grp_lib_nfc
+*\brief NDEF registration structure definition.
+*/
+typedef struct phLibNfc_Ndef_SrchType
+{
+ uint8_t Tnf; /**< Type Name Format of this NDEF record */
+ uint8_t *Type; /**< Type field of this NDEF record */
+ uint8_t TypeLength; /**< Length of the Type field of this NDEF record */
+} phLibNfc_Ndef_SrchType_t;
+
+/**
+*\ingroup grp_lib_nfc
+* \brief NDEF information structure definition. \n
+*/
+typedef struct phLibNfc_Ndef_Info
+{
+ uint32_t NdefMessageLengthActual; /**< Actual length of the NDEF message */
+ uint32_t NdefMessageLengthMaximum; /**< Maximum length of the NDEF message */
+ uint8_t *pNdefMessage; /**< Pointer to raw NDEF Data buffer */
+ uint32_t NdefRecordCount; /**< Number of NDEF records pointed by pNdefRecord */
+ phFriNfc_NdefRecord_t *pNdefRecord; /**< Pointer to the NDEF Records contained within the NDEF message */
+
+} phLibNfc_Ndef_Info_t;
+
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Ndef Information Structure.
+*/
+typedef struct phLibNfc_ChkNdef_Info
+{
+ uint32_t ActualNdefMsgLength; /**< Indicates Actual length of NDEF Message in Tag */
+ uint32_t MaxNdefMsgLength; /**< Indicates Maximum Ndef Message length that Tag can hold*/
+} phLibNfc_ChkNdef_Info_t;
+
+/**
+*\ingroup grp_lib_nfc
+*
+*\brief LLCP link status. Refer to \ref phFriNfc_LlcpMac_eLinkStatus_t
+*
+*/
+typedef phFriNfc_LlcpMac_eLinkStatus_t phLibNfc_Llcp_eLinkStatus_t;
+
+typedef phFriNfc_Llcp_sLinkParameters_t phLibNfc_Llcp_sLinkParameters_t;
+
+typedef phFriNfc_LlcpTransport_eSocketType_t phLibNfc_Llcp_eSocketType_t;
+
+typedef phFriNfc_LlcpTransport_sSocketOptions_t phLibNfc_Llcp_sSocketOptions_t;
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Response callback for connect request.
+*
+* Callback type used to indicate a Connect request Successful or Failure indication to
+* LibNfc client.
+*
+* \param[in] pContext Context passed in the connect request before.
+* \param[in] hRemoteDev Handle to remote device on which connect was requested.
+* \param[in] psRemoteDevInfo contains updated remote device details.For few tags
+* like ISO-14443A details like historical bytes gets updated
+* only after connecting to target.Once connect is successful
+* \b psRemoteDevInfo gets updated.
+*
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Connect operation successful.
+* \param NFCSTATUS_TARGET_LOST Connect operation failed because target is lost.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+*
+*/
+
+typedef void (*pphLibNfc_ConnectCallback_t) (void* pContext,
+ phLibNfc_Handle hRemoteDev,
+ phLibNfc_sRemoteDevInformation_t* psRemoteDevInfo,
+ NFCSTATUS Status
+ );
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Response callback for disconnect request.
+*
+* Callback type used to provide a disconnect Success or Failure indication to
+* LibNfc client.
+*
+* \param[in] pContext Context passed in the disconnect request before.
+* \param[in] hRemoteDev Handle to remote device on which disconnect is requested.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Disconnect operation successful.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+*
+*/
+typedef void (*pphLibNfc_DisconnectCallback_t)(void* pContext,
+ phLibNfc_Handle hRemoteDev,
+ NFCSTATUS Status
+ );
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Response callback for IOCTL request.
+*
+* Callback type to inform success or failure of the Ioctl request
+* made by LibNfc client. It may optionally contain response data
+* depending on the Ioctl command type issued.
+
+*
+* \param[in] pContext Context passed in the connect request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Ioctl operation successful.
+* \param NFCSTATUS_TARGET_LOST Ioctl operation failed because target is lost.
+* \param NFCSTATUS_SHUTDOWN Ioctl operation failed because Shutdown in progress.
+*
+*\param[in,out] pOutParam contains Ioctl command specific response buffer and size
+* of the buffer.This buffer address will be same as
+* pOutParam sent in \ref phLibNfc_Mgt_IoCtl.
+*
+*/
+
+
+typedef void (*pphLibNfc_IoctlCallback_t) (void* pContext,
+ phNfc_sData_t* pOutParam,
+ NFCSTATUS Status
+ );
+
+
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Response callback for Transceive request.
+*
+* This callback type is used to provide received data and it's size to the
+* LibNfc client in \ref phNfc_sData_t format ,when LibNfc client has performed
+* a Transceive operation on a tag or when the device acts as an Initiator during a
+* P2P transactions.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] hRemoteDev Handle to remote device on transceive is performed.
+* \param[in] pResBuffer Response buffer of type \ref phNfc_sData_t.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Transceive operation successful.
+* \param NFCSTATUS_TARGET_LOST Transceive operation failed because target is lost.
+* \param NFCSTATUS_SHUTDOWN Transceive operation failed because Shutdown in progress.
+* \param NFCSTATUS_ABORTED Aborted due to disconnect request in between.
+*
+*/
+typedef void (*pphLibNfc_TransceiveCallback_t)( void* pContext,
+ phLibNfc_Handle hRemoteDev,
+ phNfc_sData_t* pResBuffer,
+ NFCSTATUS Status
+ );
+
+/**
+* \ingroup grp_lib_nfc
+*
+* \brief Generic Response Callback definition.
+*
+* Generic callback definition used as callback type in few APIs below.
+*
+* \note : Status and error codes for this type of callback are documented in respective APIs
+* wherever it is used.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request
+* before.
+* \param[in] status Status of the response callback.
+*/
+typedef void(*pphLibNfc_RspCb_t) (void* pContext,NFCSTATUS Status);
+/**
+* \ingroup grp_lib_nfc
+*
+* \brief Check NDEF Callback definition.
+*
+* This call back is used by check ndef api.
+*
+* \note : Status and error codes for this type of callback are documented in API
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request
+* before.
+* \param[in] Ndef_Info Ndef message length and the container size.
+* \param[in] status Status of the response callback.
+*/
+typedef void(*pphLibNfc_ChkNdefRspCb_t)(void* pContext,
+ phLibNfc_ChkNdef_Info_t Ndef_Info,
+ NFCSTATUS Status);
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief Notification handler callback definition.
+*
+*This callback type is used to provide information on discovered targets to LibNfcClient.
+*Discovered targets will be notified in \ref phLibNfc_RemoteDevList_t format.
+*In case multiple targets discovered ,remote device list contains these targets one after another.
+*
+*\note List will be exported as memory block,based on \b uNofRemoteDev
+* parameter application has to access remote devices accordingly.
+*
+*\b Ex: Multiple targets discovered can be referred as phLibNfc_RemoteDevList_t[0]
+*and phLibNfc_RemoteDevList_t[1].
+*
+*Subsequent operations on discovered target shall be performed using target specific handle
+*\b hTargetDev.
+*
+* \param[in] pContext Client context passed in the corresponding
+* request before.The context is handled by client
+* only.
+*
+* \param[in] psRemoteDevList Remote Device list contains discovered target details.
+* Refer to \ref phLibNfc_RemoteDevList_t .
+* List size depends on no of remote devices discovered.
+*
+* \param[in] uNofRemoteDev Indicates no of remote devices discovered .
+* In case more than one target discovered,\b psRemoteDevList contains
+* multiple target details.
+*
+* \param[in] Status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Discovered single target successfully.
+* \param NFCSTATUS_MULTIPLE_TARGETS multiple targets found.
+* \param NFCSTATUS_MULTI_PROTOCOLS Target found supports multiple protocols.
+* \param NFCSTATUS_SHUTDOWN Registration failed because shutdown in progress.
+* \param NFCSTATUS_DESELECTED initiator issued disconnect or intiator
+* physically removed from the RF field.
+*
+*\note: multiple tag detection is possible only within same technology but not across
+* different technologies.
+*/
+typedef void (*phLibNfc_NtfRegister_RspCb_t)(
+ void* pContext,
+ phLibNfc_RemoteDevList_t* psRemoteDevList,
+ uint8_t uNofRemoteDev,
+ NFCSTATUS Status
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief Response Callback for secure element mode settings.
+*
+* This callback type is used to provide information on requested secure element is
+* activated or not to LibNfcClient.
+*
+* \param[in] pContext LibNfc client context passed in the activation request.
+*
+* \param[in] hSecureElement Handle to secure element.
+*
+* \param[in] Status Indicates API status.
+* \param NFCSTATUS_SUCCESS Secure element activated successfully.
+* \param NFCSTATUS_SHUTDOWN Activation failed because shutdown in progress.
+* \param NFCSTATUS_FAILED Activation failed.
+*
+*/
+typedef void(*pphLibNfc_SE_SetModeRspCb_t)(
+ void* pContext,
+ phLibNfc_Handle hSecureElement,
+ NFCSTATUS Status
+ );
+/**
+* \ingroup grp_lib_nfc
+* \brief Notification callback for \ref phLibNfc_SE_NtfRegister().
+*
+* A function of this type is called when external reader tries to access SE.
+*
+*\param[in] pContext LibNfc client context passed in the SE notification register request.
+* The context is Handled by client only.
+* \param[in] EventType Event type of secure element transaction
+* \param[in] hSecureElement handle to Secures Element.
+*
+*\param[in] pAppID Application identifier to be accessed on SE .
+* Sent when available from SE otherwise empty.
+*
+*\param[in] Status Indicates API status.
+* \param NFCSTATUS_SUCCESS Notification handler registered sucessfully.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_FAILED set mode operation failed.
+*
+*
+*/
+typedef void (*pphLibNfc_SE_NotificationCb_t) (void* pContext,
+ phLibNfc_eSE_EvtType_t EventType,
+ phLibNfc_Handle hSecureElement,
+ phLibNfc_uSeEvtInfo_t* pSeEvtInfo,
+ NFCSTATUS Status
+ );
+
+
+/**
+*\ingroup grp_lib_nfc
+*\brief Receive callback definition.
+*
+* This callback type is used to provide received data and it's size to the
+* LibNfc client in \ref phNfc_sData_t format ,when LibNfc client has performed
+* when the device acts as a Target during P2P communication
+*
+* \param[in] pContext LibNfc client context passed in the corresponding
+* request before.
+* \param[in] pRecvBufferInfo Response buffer of type \ref phNfc_sData_t.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Receive operation successful.
+* \param NFCSTATUS_SHUTDOWN Receive operation failed because
+* Shutdown in progress.
+* \param NFCSTATUS_ABORTED Aborted due to initiator issued disconnect request.
+* This status code reported,to indicate P2P session
+* closed and send and receive requests not allowed any more
+* unless new session is started.
+*/
+typedef void (*pphLibNfc_Receive_RspCb_t)(void* pContext,
+ phNfc_sData_t* pRecvBufferInfo,
+ NFCSTATUS status
+ );
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief NDEF Response callback definition
+*
+* A function of this type is notified when registered NDEF type detected.
+*
+* \b Note :Once this type callback is notified,discovery wheel is stopped.
+*In order to restart discovery process again it is important to disconnect
+*from current tag.LibNfc client shall disconnect explicitly using
+*\ref phLibNfc_RemoteDev_Disconnect() interface.
+*
+*\param[in] pContext Pointer to context previously provided by the user
+*\param[in] psNdefInfo All Ndef specific details of the remote device discovered.
+*\param[in] hRemoteDevice handle to remote device on which NDEF detection is done.
+*
+*\param[in] Status Indicates callback status.
+*
+* \param NFCSTATUS_SUCCESS Indicates registered tnf type detected. .
+* \param NFCSTATUS_SHUTDOWN Indicates shutdown in progress.
+* \param NFCSTATUS_FAILED status failed.
+* \param NFCSTATUS_ABORTED Aborted due to disconnect operation in between.
+
+
+*/
+typedef void (*pphLibNfc_Ndef_Search_RspCb_t) ( void* pContext,
+ phLibNfc_Ndef_Info_t* psNdefInfo,
+ phLibNfc_Handle hRemoteDevice,
+ NFCSTATUS Status
+ );
+
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP check response callback definition
+*/
+typedef void (*pphLibNfc_ChkLlcpRspCb_t) ( void* pContext,
+ NFCSTATUS status
+ );
+
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP check response callback definition
+*/
+typedef void (*pphLibNfc_LlcpLinkStatusCb_t) ( void* pContext,
+ phLibNfc_Llcp_eLinkStatus_t eLinkStatus
+ );
+
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket error notification callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketErrCb_t) ( void* pContext,
+ uint8_t nErrCode
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief Incoming connection on a listening LLCP socket callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketListenCb_t) ( void* pContext,
+ phLibNfc_Handle hIncomingSocket
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket connect callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketConnectCb_t) ( void* pContext,
+ uint8_t nErrCode,
+ NFCSTATUS status
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket disconnect callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketDisconnectCb_t) ( void* pContext,
+ NFCSTATUS status
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket Accept callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketAcceptCb_t) ( void* pContext,
+ NFCSTATUS status
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket Reject callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketRejectCb_t) ( void* pContext,
+ NFCSTATUS status
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket reception callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketRecvCb_t) ( void* pContext,
+ NFCSTATUS status
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket reception with SSAP callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketRecvFromCb_t) ( void* pContext,
+ uint8_t ssap,
+ NFCSTATUS status
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*
+* \brief LLCP socket emission callback definition
+*/
+typedef void (*pphLibNfc_LlcpSocketSendCb_t) ( void* pContext,
+ NFCSTATUS status
+ );
+
+
+/* FUNCTION PROTOTYPES */
+/**
+ * \ingroup grp_lib_nfc
+ *
+ * \brief Driver configuration function
+ * This synchronous function configures the given driver Interface and
+ * sends the HANDLE to the caller.
+ *
+ * \param[in] psConfig Driver configuration details as provided
+ * by the upper layer.
+ * \param[in,out] ppDriverHandle pointer to which valid Handle to driver
+ * interface is assigned.
+ *
+ * \retval NFCSTATUS_SUCCESS Configuration happened successfully.
+ * \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function
+ * is invalid.
+ * \retval NFCSTATUS_FAILED Configuration failed(example.unable to
+ * open HW Interface).
+ * \retval NFCSTATUS_INVALID_DEVICE The device has not been opened or
+ * has been disconnected meanwhile
+ * \retval NFCSTATUS_BOARD_COMMUNICATION_ERROR A board communication error occurred
+ (e.g. configuration went wrong).
+ *\msc
+*LibNfcClient,LibNfc;
+*--- [label="Before initializing Nfc LIB,Configure Driver layer"];
+*LibNfcClient=>LibNfc[label="phLibNfc_Mgt_ConfigureDriver()",URL="\ref phLibNfc_Mgt_ConfigureDriver"];
+*LibNfcClient<<LibNfc[label="NFCSTATUS_SUCCESS"];
+ *\endmsc
+ */
+NFCSTATUS phLibNfc_Mgt_ConfigureDriver (pphLibNfc_sConfig_t psConfig,
+ void ** ppDriverHandle
+ );
+ /**
+ * \ingroup grp_lib_nfc
+ *
+ * \brief Release configuration for the given driver Interface.
+ *
+ * \copydoc page_reg Release all that has been
+ * initialised in \b phLibNfc_Mgt_ConfigureDriver function (Synchronous function).
+ *
+ * \param[in] pDriverHandle Link information of the hardware
+ *
+ * \retval NFCSTATUS_SUCCESS Driver Configuration Released successfully.
+ * \retval NFCSTATUS_FAILED Configuration release failed(example: Unable to close Com port).
+ *
+ *\msc
+ *LibNfcClient,LibNfc;
+ *LibNfcClient=>LibNfc [label="phLibNfc_Mgt_ConfigureDriver()",URL="\ref phLibNfc_Mgt_ConfigureDriver"];
+ *LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+ *LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+ *LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+ *LibNfcClient<-LibNfc [label="pInitCb"];
+ *--- [label="Perform feature operations "];
+ *LibNfcClient=>LibNfc [label="phLibNfc_Mgt_DeInitialize()",URL="\ref phLibNfc_Mgt_DeInitialize"];
+ *LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+ *LibNfcClient<-LibNfc [label="pDeInitCb"];
+ *LibNfcClient=>LibNfc [label="phLibNfc_Mgt_UnConfigureDriver()",URL="\ref phLibNfc_Mgt_UnConfigureDriver"];
+ *LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+ *\endmsc
+ */
+NFCSTATUS phLibNfc_Mgt_UnConfigureDriver (void * pDriverHandle
+ );
+
+/**
+* \ingroup grp_lib_nfc
+*
+* \brief Initializes the NFC library .
+*
+*
+*\brief This function initializes NFC library and its underlying layers.
+* As part of this interface underlying modules gets initialized.
+* A session with NFC hardware will be established.
+* Once initialization is successful ,NFC library ready for use.
+*\note It is must to initialize prior usage of the stack .
+*
+* \param[in] pDriverHandle Driver Handle currently application is using.
+* \param[in] pInitCb The init callback is called by the LibNfc when init is
+* completed or there is an error in initialization.
+*
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \retval NFCSTATUS_ALREADY_INITIALISED Stack is already initialized.
+* \retval NFCSTATUS_PENDING Init sequence has been successfully
+* started and result will be conveyed via
+* callback notification.
+* \retval NFCSTATUS_INVALID_PARAMETER The parameter could not be properly
+* interpreted.
+*\retval NFCSTATUS_INSUFFICIENT_RESOURCES Insufficient resource.(Ex: insufficient memory)
+*
+*\msc
+*LibNfcClient,LibNfc;
+*--- [label="Before initializing Nfc LIB,Configure Driver layer"];
+*LibNfcClient=>LibNfc[label="phLibNfc_Mgt_ConfigureDriver()",URL="\ref phLibNfc_Mgt_ConfigureDriver"];
+*LibNfcClient<<LibNfc[label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pInitCb"];
+*\endmsc
+*/
+NFCSTATUS phLibNfc_Mgt_Initialize (void * pDriverHandle,
+ pphLibNfc_RspCb_t pInitCb,
+ void* pContext
+ );
+/**
+* \ingroup grp_lib_nfc
+*
+* \brief De-Initializes NFC library.
+*
+*
+* This function de-initializes and closes the current session with PN544 NFC hardware.
+* All configurations and setups done until now are invalidated to restart
+* communication. Resources currently used by stack gets released during De-initialization.
+*\ref phLibNfc_Mgt_Initialize needs to be called once stack is
+* De-initialized before using the stack again.
+*
+* \param[in] pHwHandle Hardware context currently application is using.
+*
+* \param[in] pDeInitCb De-initialization callback is called by the LibNfc when init
+* completed or there is an error in initialization.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \retval NFCSTATUS_SUCCESS Device stack is already De-Initialized.
+* \retval NFCSTATUS_PENDING De-Initialization sequence has been successfully
+* started and result is conveyed via callback
+* notification.
+*
+* \retval NFCSTATUS_INVALID_PARAMETER The parameter could not be properly
+* interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+* \retval NFCSTATUS_FAILED Request failed.
+
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pInitCb"];
+*--- [label="Perform feature operations "];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_DeInitialize()",URL="\ref phLibNfc_Mgt_DeInitialize"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pDeInitCb"];
+*\endmsc
+*/
+NFCSTATUS phLibNfc_Mgt_DeInitialize(void * pDriverHandle,
+ pphLibNfc_RspCb_t pDeInitCb,
+ void* pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief Get list of available Secure Elements.
+*
+* This function retrieves list of secure elements locally connected.
+* during LibNfc initialization these SEs enumerated from lower stack and maintained
+* in LibNfc library.Once libNfc client queries using this interface,
+* same details exposed to LibNfc client.
+* LibNfc client shall pass empty list of size \ref PHLIBNFC_MAXNO_OF_SE .
+* Once SE list is available, libNfc client can perform operation on specific SE
+* using SE handle.
+* The handle given in the \ref phLibNfc_SE_List_t structure stays valid until
+* shutdown is called.
+*
+*\note In case no SE's found, API still returns \ref NFCSTATUS_SUCCESS with \b uSE_count
+set to zero.Value zero indicates none of the SE's connected to PN544 hardware.
+
+* \param[in,out] pSE_List contains list of SEs with SE details in \ref phLibNfc_SE_List_t format.
+* \param[in,out] uSE_count contains no of SEs in the list.
+*
+*\note LibNfc client has to interpret no of secure elements in \b pSE_List based on this
+*count.
+*
+*\retval NFCSTATUS_SUCCESS Indicates operation is sucessfull.
+*\retval NFCSTATUS_SHUTDOWN Operation failed because shutdown in progress.
+*\retval NFCSTATUS_NOT_INITIALISED Operation failed because stack is not yet initialized.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pInitCb"];
+*--- [label="Now SE list can be retrieved"];
+*\endmsc
+*/
+
+NFCSTATUS phLibNfc_SE_GetSecureElementList(phLibNfc_SE_List_t* pSE_List,
+ uint8_t* uSE_count
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+*
+*\brief Sets secure element mode.
+*
+* This function configures SE to specific mode based on activation mode type.
+* Effect of different modes on SE is as below.
+*
+*\b a)If mode is \ref phLibNfc_SE_ActModeVirtual then external reader can communicate
+* with this SE.
+*\note This mode is applicable to both UICC and SmartMX.
+*
+\b b)If mode is \ref phLibNfc_SE_ActModeWired then internal reader can communicate with
+* this SE.In this mode PN544 can act as reader and communicate with SE as normal Tag.
+*In this mode mode external reader ca not communicate with any of the SEs since RF filed is off.
+*
+*\note 1.Wired Mode is applicable to only SmartMX not to UICC.
+* 2.When SmartMX SE configured in Wired Mode ,LibNfc client shall restart discovery process.
+* SmartMX gets detected as MIFARE tag.
+* 3.To exit wired mode ,LibNfc client has to disconnect with release type as "NFC_SMARTMX_RELEASE".
+*
+*
+*\b c)If mode is \ref phLibNfc_SE_ActModeOff
+*This means SE is off mode .It can not be accessed any more in wired or virtual mode.
+*internal reader any more.communicate with internal reader and only
+*PN544 can communicate in reader mode and external reader can not
+*communicate with it.This mode is applicable both SE types ( UICC and SmartMX)
+*
+* \param[in] hSE_Handle Secure Element Handle .
+* \param[in] eActivation_mode Indicates SE mode to be configured.
+*
+*
+*
+* \param[in] pphLibNfc_SE_setModeRspCb_t pointer to response callback.
+*
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+*
+* \retval NFCSTATUS_PENDING Activation transaction started.
+* \retval NFSCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_INVALID_HANDLE Invalid Handle.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_REJECTED Invalid request.(Ex: If wired mode settings called using
+* UICC SE handle ,this error code seen).
+* \retval NFCSTATUS_FAILED Request failed.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pInitCb"];
+*--- [label="Now query for available SE's"];
+*LibNfcClient=>LibNfc [label="phLibNfc_SE_GetSecureElementList()",URL="\ref phLibNfc_SE_GetSecureElementList"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*--- [label="Now configure specific SE"];
+*LibNfcClient=>LibNfc [label="phLibNfc_SE_SetMode(hSE_Handle,)",URL="\ref phLibNfc_SE_SetMode"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pSE_SetMode_Rsp_cb"];
+*\endmsc
+*/
+NFCSTATUS phLibNfc_SE_SetMode ( phLibNfc_Handle hSE_Handle,
+ phLibNfc_eSE_ActivationMode eActivation_mode,
+ pphLibNfc_SE_SetModeRspCb_t pSE_SetMode_Rsp_cb,
+ void * pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief Registers notification handler to handle secure element specific events.
+*
+* This function registers handler to report SE specific transaction events.
+* Possible different types of events are as defined in \ref phLibNfc_eSE_EvtType_t.
+
+* \param[in] pSE_NotificationCb pointer to notification callback.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+*\retval NFCSTATUS_SUCCESS Registration Sucessful.
+*\retval NFSCSTATUS_SHUTDOWN Shutdown in progress.
+*\retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+*\retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+*\retval NFCSTATUS_FAILED Request failed.
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pInitCb"];
+*--- [label="Perform feature operations "];
+*
+*LibNfcClient=>LibNfc [label="phLibNfc_SE_NtfRegister()",URL="\ref phLibNfc_SE_NtfRegister"];
+LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*--- [label="Registration sucessfull"];
+*
+*--- [label="In case external reader performs transactions,callback is notified as shown below"];
+*LibNfcClient<-LibNfc [label="pSE_NotificationCb"];
+*\endmsc
+*/
+
+NFCSTATUS phLibNfc_SE_NtfRegister (pphLibNfc_SE_NotificationCb_t pSE_NotificationCb,
+ void * pContext
+ );
+/**
+* \ingroup grp_lib_nfc
+*\brief This function unregister the registered listener for SE event.
+* This function unregisters the listener which has been registered with \ref
+* phLibNfc_SE_NtfRegister.
+*
+*\retval NFCSTATUS_SUCCESS Unregistration successful.
+*\retval NFSCSTATUS_SHUTDOWN Shutdown in progress.
+*\retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+*\retval NFCSTATUS_FAILED Request failed.
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pInitCb"];
+*--- [label="Perform feature operations "];
+*LibNfcClient=>LibNfc [label="phLibNfc_SE_NtfRegister()",URL="\ref phLibNfc_SE_NtfRegister"];
+LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*--- [label="Registration sucessfull"];
+*
+*--- [label="In case external reader performs transactions,callback is notified as shown below"];
+*
+*LibNfcClient<-LibNfc [label="pSE_NotificationCb"];
+*--- [label="Unregister SE notification handler in case required "];
+*LibNfcClient=>LibNfc [label="phLibNfc_SE_NtfUnregister()",URL="\ref phLibNfc_SE_NtfUnregister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+
+*\endmsc
+*/
+NFCSTATUS phLibNfc_SE_NtfUnregister(void);
+
+/**
+*\ingroup grp_lib_nfc
+* \brief IOCTL interface.
+*
+* The I/O Control function allows the caller to configure specific
+* functionality provided by the lower layer.Each feature is accessible via a
+* specific IOCTL Code.
+*
+* \param[in] pDriverHandle Interface handle.This parameter is valid only for firmware download feature.
+* for other IOCTL features this parameter is not relevent.
+*
+* \param[in] IoctlCode Control code for the operation.
+* This value identifies the specific
+* operation to be performed.For more details on supported
+* IOCTL codes refer to \ref grp_lib_ioctl.
+*\param[in,out] pInParam Pointer to any input data structure
+* containing data which is interpreted
+* based on IoCtl code and the length of
+* the data.
+*
+*\param[in,out] pOutParam Pointer to output buffer details to hold
+* Ioctl specific response buffer and size of
+* the buffer.This buffer will be updated and
+* sent back as part of of callback details.
+*
+*\param[in] pIoCtl_Rsp_cb Response callback registered by the caller.
+*
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+*
+*\retval NFCSTATUS_PENDING Update in pending state. RspCB will be
+* called later.
+*\retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+*
+\retval NFCSTATUS_BUFFER_TOO_SMALL The buffer supplied by the caller is to
+*\retval NFSCSTATUS_SHUTDOWN Shutdown in progress.
+*\retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+*\retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*--- [label="Firmware download Scenario"];
+
+*--- [label="Intialise Driver"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_IoCtl(pDriverHandle,)",URL="\ref phLibNfc_Mgt_IoCtl"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pIoCtl_Rsp_cb()",URL="\ref pphLibNfc_IoctlCallback_t"];
+**--- [label="requested IoCtl processed sucessfully "];
+*
+*\endmsc
+*/
+NFCSTATUS phLibNfc_Mgt_IoCtl (void* pDriverHandle,
+ uint16_t IoctlCode,
+ phNfc_sData_t* pInParam,
+ phNfc_sData_t* pOutParam,
+ pphLibNfc_IoctlCallback_t pIoCtl_Rsp_cb,
+ void* pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief This interface registers notification handler for target discovery.
+*
+* This function allows libNfc client to register for notifications based technology
+* type it is interested to discover. In case application is interested in multiples technology
+* discovery,it can enable respective bits in \b pRegistryInfo . when Registered type target
+* is discovered in RF field ,LibNfc notifies registered notification callback.
+*
+* \note In case this API is called multiple times ,most recent request registry details will be used
+*for registration.
+*
+*\param[in] pRegistryInfo structure contains bitwise registry information.
+* Specific technology type discovery can be registered if
+* corresponding bit is enabled.In case bit is disabled
+* it indicates specific technology type unregistered.
+*
+*\param[in] pNotificationHandler Notification callback.This callback will
+* be notified once registered target is discovered.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \retval NFCSTATUS_SUCCESS Indicates registration successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters could
+* not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFSCSTATUS_SHUTDOWN Shutdown in progress.
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*--- [label="Register for technology type.Ex: MIFARE UL"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*
+*\endmsc
+*/
+
+NFCSTATUS phLibNfc_RemoteDev_NtfRegister(
+ phLibNfc_Registry_Info_t* pRegistryInfo,
+ phLibNfc_NtfRegister_RspCb_t pNotificationHandler,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief Configure Discovery Modes.
+*
+*This function is used to configure ,start and stop the discovery wheel.
+*Configuration includes
+*<br><br>a)Enabling/disabling of Reader phases for A,B and F technologies.
+*<br>b)Configuring NFC-IP1 Initiator Speed and duration of the Emulation phase .
+*
+*Discovery wheel configuration based on discovery mode selected is as below.
+*<br><br>1.If discovery Mode is set as \ref NFC_DISCOVERY_CONFIG then previous configurations
+* over written by new configurations passed in \ref phLibNfc_sADD_Cfg_t and Discovery wheel
+*restarts with new configurations.
+*<br><br>2.If discovery Mode is set as \ref NFC_DISCOVERY_START or \ref NFC_DISCOVERY_STOP then
+* discovery parameters passed in \ref phLibNfc_sADD_Cfg_t will not be considered and previous
+*configurations still holds good.
+*<br><br>3.If discovery Mode is set as \ref NFC_DISCOVERY_RESUME discovery mode starts the discovery
+*wheel from where it is stopped previously.
+*
+*\b Note: Config types \b NFC_DISCOVERY_START, \b NFC_DISCOVERY_STOP and \b NFC_DISCOVERY_RESUME
+* are not supported currently. It is for future use.
+*
+* \param[in] DiscoveryMode Discovery Mode allows to choose between:
+* discovery configuration and start, stop
+* discovery and start discovery (with last
+* set configuration).For mode details refer to
+\ref phNfc_eDiscoveryConfigMode_t.
+* \param[in] sADDSetup Includes Enable/Disable discovery for
+* each protocol A,B and F.
+* Details refer to \ref phNfc_sADD_Cfg_t.
+* \param[in] pConfigDiscovery_RspCb is called once the discovery wheel
+* configuration is complete.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+*
+*\retval NFCSTATUS_PENDING Discovery request is in progress and result
+* will be notified via callback later.
+*\retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+*\retval NFCSTATUS_NOT_INITIALISED Indicates stack is not initialized.
+*\retval NFCSTATUS_INSUFFICIENT_RESOURCES Insufficient resource.(Ex: insufficient memory)
+*\retval NFCSTATUS_BUSY already discovery in progress
+* or it is already discovered Target and
+* connected.
+*\retval NFSCSTATUS_SHUTDOWN Shutdown in progress.
+*\retval NFCSTATUS_FAILED Request failed.
+
+*
+* \note : During Reader/Initiator mode it is mandatory
+* to call \ref phLibNfc_RemoteDev_Connect before any transaction can be performed
+* with the discovered target. Even if the LibNfc client is not
+* interested in using any of the discovered targets \ref phLibNfc_RemoteDev_Connect
+* and \ref phLibNfc_RemoteDev_Disconnect should be called to restart the Discovery
+* wheel.
+* \sa \ref phLibNfc_RemoteDev_Connect, phLibNfc_RemoteDev_Disconnect.
+
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref
+phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_ConfigureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now discovery wheel configured as requested"];
+*
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Discovery Configuration successful.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_FAILED Request failed.
+*/
+
+NFCSTATUS phLibNfc_Mgt_ConfigureDiscovery (phLibNfc_eDiscoveryConfigMode_t DiscoveryMode,
+ phLibNfc_sADD_Cfg_t sADDSetup,
+ pphLibNfc_RspCb_t pConfigDiscovery_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief This function is used to to connect to a single Remote Device.
+*
+* This function is called to connect to discovered target.
+* Once notification handler notified sucessfully discovered targets will be available in
+* \ref phLibNfc_RemoteDevList_t .Remote device list contains valid handles for discovered
+* targets .Using this interface LibNfc client can connect to one out of 'n' discovered targets.
+* A new session is started after connect operation is successful.The session ends with a
+* successful disconnect operation.Connect operation on an already connected tag Reactivates
+* the Tag.This Feature is not Valid for Jewel/Topaz Tags ,and hence a second connect if issued
+* without disconnecting a Jewel/Topaz tag always Fails.
+*
+* \note :In case multiple targets discovered LibNfc client can connect to only one target.
+*
+* \param[in] hRemoteDevice Handle of the target device obtained during discovery process.
+*
+* \param[in] pNotifyConnect_RspCb Client response callback to be to be
+* notified to indicate status of the request.
+*
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+*\retval NFCSTATUS_PENDING Request initiated, result will be informed via
+* callback.
+*\retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+*\retval NFCSTATUS_TARGET_LOST Indicates target is lost.
+*\retval NFSCSTATUS_SHUTDOWN shutdown in progress.
+*\retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+*\retval NFCSTATUS_INVALID_HANDLE Target handle is invalid.
+*
+*\retval NFCSTATUS_FAILED Request failed.
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present Tag to be discovered"];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_ConnectCallback_t"];
+*
+*\endmsc
+*/
+
+NFCSTATUS phLibNfc_RemoteDev_Connect(phLibNfc_Handle hRemoteDevice,
+ pphLibNfc_ConnectCallback_t pNotifyConnect_RspCb,
+ void* pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief This interface allows to perform Read/write operation on remote device.
+*
+* This function allows to send data to and receive data
+* from the target selected by libNfc client.It is also used by the
+* NFCIP1 Initiator while performing a transaction with the NFCIP1 target.
+* The LibNfc client has to provide the handle of the target and the
+* command in order to communicate with the selected remote device.
+*
+*
+*\param[in] hRemoteDevice handle of the remote device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+* \param[in] psTransceiveInfo Information required by transceive is concealed in
+* this structure.It contains send,receive buffers
+* and command specific details.
+*
+*
+* \param[in] pTransceive_RspCb Callback function for returning the received response
+* or error.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \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 or invalid.
+* \retval NFCSTATUS_COMMAND_NOT_SUPPORTED The command is not supported.
+* \retval NFSCSTATUS_SHUTDOWN shutdown in progress.
+* \retval NFCSTATUS_TARGET_LOST Indicates target is lost.
+* \retval NFCSTATUS_TARGET_NOT_CONNECTED The Remote Device is not connected.
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_REJECTED Indicates invalid request.
+* \retval NFCSTATUS_FAILED Request failed.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present Tag to be discovered"];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_ConnectCallback_t"];
+*--- [label="Now perform transceive operation"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Transceive()",URL="\ref phLibNfc_RemoteDev_Transceive "];
+*LibNfcClient<-LibNfc [label="pTransceive_RspCb",URL="\ref pphLibNfc_TransceiveCallback_t"];
+*
+*\endmsc
+*/
+
+NFCSTATUS phLibNfc_RemoteDev_Transceive(phLibNfc_Handle hRemoteDevice,
+ phLibNfc_sTransceiveInfo_t* psTransceiveInfo,
+ pphLibNfc_TransceiveCallback_t pTransceive_RspCb,
+ void* pContext
+ );
+
+/**
+*\ingroup grp_lib_nfc
+*\brief Allows to disconnect from already connected target.
+*
+* The function allows to disconnect from from already connected target. This
+* function closes the session opened during connect operation.The status of discovery
+* wheel after disconnection is determined by the \ref phLibNfc_eReleaseType_t parameter.
+* it is also used to switch from wired to virtual mode in case the discovered
+* device is SmartMX in wired mode.
+*
+*\param[in] hRemoteDevice handle of the target device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+* \param[in] ReleaseType Release mode to be used while
+* disconnecting from target.Refer \ref phLibNfc_eReleaseType_t
+* for possible release types.
+*\param[in] pDscntCallback Client response callback to be to be notified
+to indicate status of the request.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+
+*\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_TARGET_NOT_CONNECTED The Remote Device is not connected.
+*\retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid.
+*\retval NFSCSTATUS_SHUTDOWN Shutdown in progress.
+*\retval NFCSTATUS_REJECTED Indicates previous disconnect in progress.
+* \retval NFCSTATUS_BUSY Indicates can not disconnect due to outstanding transaction in progress.
+* \retval NFCSTATUS_FAILED Request failed.
+
+*
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present Tag to be discovered"];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_ConnectCallback_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Transceive()",URL="\ref phLibNfc_RemoteDev_Transceive"];
+*LibNfcClient<-LibNfc [label="pTransceive_RspCb",URL="\ref pphLibNfc_TransceiveCallback_t"];
+*--- [label="Once transceive is completed Now disconnect"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Disconnect()",URL="\ref phLibNfc_RemoteDev_Disconnect"];
+*LibNfcClient<-LibNfc [label="pDscntCallback",URL="\ref pphLibNfc_RspCb_t"];
+*
+*\endmsc
+*/
+NFCSTATUS phLibNfc_RemoteDev_Disconnect( phLibNfc_Handle hRemoteDevice,
+ phLibNfc_eReleaseType_t ReleaseType,
+ pphLibNfc_DisconnectCallback_t pDscntCallback,
+ void* pContext
+ );
+
+
+
+/**
+* \ingroup grp_lib_nfc
+*\brief This interface unregisters notification handler for target discovery.
+*
+* This function unregisters the listener which has been registered with
+* phLibNfc_RemoteDev_NtfUnregister() before. After this call the callback
+* function won't be called anymore. If nothing is registered the
+* function still succeeds
+* \retval NFCSTATUS_SUCCESS callback unregistered.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+*\retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*--- [label="Perform operations"];
+*--- [label="In case required unregister now"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfUnregister()",URL="\ref phLibNfc_RemoteDev_NtfUnregister"];
+*
+*\endmsc
+*/
+
+NFCSTATUS phLibNfc_RemoteDev_NtfUnregister(void);
+
+/**
+* \ingroup grp_lib_nfc
+* \brief Check for target presence.
+* This function checks ,given target is present in RF filed or not.
+* Client can make use of this API to check periodically discovered
+* tag is present in RF field or not.
+*
+*
+*\param[in] hRemoteDevice handle of the target device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+* \param[in] pPresenceChk_RspCb callback function called on completion of the
+* presence check or in case an error has occurred.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \retval NFCSTATUS_PENDING presence check started. Status will be notified
+* via callback.
+*
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not initialized.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters could
+* not be properly interpreted.
+* \retval NFCSTATUS_TARGET_NOT_CONNECTED The Remote Device is not connected.
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Request failed.
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present Tag to be discovered"];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_CheckPresence()",URL="\ref phLibNfc_RemoteDev_CheckPresence"];
+*LibNfcClient<-LibNfc [label="pPresenceChk_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Successful,indicates tag is present in RF field.
+* \param NFCSTATUS_TARGET_LOST Indicates target is lost.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_FAILED Request failed.
+*
+*/
+NFCSTATUS phLibNfc_RemoteDev_CheckPresence( phLibNfc_Handle hRemoteDevice,
+ pphLibNfc_RspCb_t pPresenceChk_RspCb,
+ void* pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+*\brief Allows to check connected tag is NDEF compliant or not.
+* This function allows to validate connected tag is NDEF compliant or not.
+*
+*\param[in] hRemoteDevice handle of the remote device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+*\param[in] pCheckNdef_RspCb Response callback defined by the caller.
+*\param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \retval NFCSTATUS_PENDING The action has been successfully triggered.
+* \retval NFCSTATUS_INVALID_PARAMETER At least one parameter of the function
+* is invalid.
+* \retval NFCSTATUS_TARGET_LOST Indicates target is lost
+* \retval NFCSTATUS_TARGET_NOT_CONNECTED The Remote Device is not connected.
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Request failed.
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present NDEF complaint Tag Type"];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_CheckNdef()",URL="\ref phLibNfc_Ndef_CheckNdef "];
+*LibNfcClient<-LibNfc [label="pCheckNdef_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Successful and tag is NDEF compliant .
+* \param NFCSTATUS_TARGET_LOST NDEF check operation is failed because of target is ** lost.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_ABORTED Aborted due to disconnect operation in between.
+* \param NFCSTATUS_FAILED Request failed.
+*/
+
+NFCSTATUS phLibNfc_Ndef_CheckNdef(phLibNfc_Handle hRemoteDevice,
+ pphLibNfc_ChkNdefRspCb_t pCheckNdef_RspCb,
+ void* pContext);
+
+/**
+* \ingroup grp_lib_nfc
+* \brief Read NDEF message from a Tag.
+* This function reads an NDEF message from already connected tag.
+* the NDEF message is read starting after the position of the last read operation
+* of the same tag during current session.
+* If it's FALSE the NDEF message is read from starting of the NDEF message.
+* If the call returns with NFCSTATUS_PENDING , a response callback pNdefRead_RspCb is
+* called ,when the read operation is complete.
+*
+*\note Before issuing NDEF read operation LibNfc client should perform NDEF check operation
+* using \ref phLibNfc_Ndef_CheckNdef interface.
+* If the call back error code is NFCSTATUS_FAILED then the LIBNFC client has to do the
+* phLibNfc_RemoteDev_CheckPresence to find , its communication error or target lost.
+*
+*\param[in] hRemoteDevice handle of the remote device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+* \param[in] psRd Pointer to the read buffer info.
+* \param[in] Offset Reading Offset : phLibNfc_Ndef_EBegin means from the
+* beginning, phLibNfc_Ndef_ECurrent means from the
+* current offset.
+* \param[in] pNdefRead_RspCb Response callback defined by the caller.
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \retval NFCSTATUS_SUCCESS NDEF read operation successful.
+* \retval NFCSTATUS_PENDING Request accepted and started
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters could not
+* be properly interpreted.
+* \retval NFCSTATUS_TARGET_NOT_CONNECTED The Remote Device is not connected.
+* \retval NFCSTATUS_FAILED Read operation failed since tag does not contain NDEF data.
+* \retval NFCSTATUS_NON_NDEF_COMPLIANT Tag is not Ndef Compliant.
+* \param NFCSTATUS_REJECTED Rejected due to NDEF read issued on non
+* ,or Ndef check has not been performed
+* before the readNDEF tag.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present NDEF complaint Tag Type"];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_CheckNdef()",URL="\ref phLibNfc_Ndef_CheckNdef "];
+*LibNfcClient<-LibNfc [label="pCheckNdef_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_Read()",URL="\ref phLibNfc_Ndef_Read "];
+*LibNfcClient<-LibNfc [label="pNdefRead_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS NDEF read operation successful.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_ABORTED Aborted due to disconnect operation in between.
+* \param NFCSTATUS_FAILED Request failed.
+*/
+NFCSTATUS phLibNfc_Ndef_Read(phLibNfc_Handle hRemoteDevice,
+ phNfc_sData_t* psRd,
+ phLibNfc_Ndef_EOffset_t Offset,
+ pphLibNfc_RspCb_t pNdefRead_RspCb,
+ void* pContext
+ );
+/**
+** \ingroup grp_lib_nfc
+*
+* \brief Write NDEF data to NFC tag.
+*
+* This function allows the client to write a NDEF data to already connected NFC tag.
+* Function writes a complete NDEF message to a tag. If a NDEF message already
+* exists in the tag, it will be overwritten. When the transaction is complete,
+* a notification callback is notified.
+*
+*\note Before issuing NDEF write operation LibNfc client should perform NDEF check operation
+* using \ref phLibNfc_Ndef_CheckNdef interface.
+*
+*\param[in] hRemoteDevice handle of the remote device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+*\param[in] psWr Ndef Buffer to write. If NdefMessageLen is set to 0
+* and pNdefMessage = NULL, the NFC library will erase
+* tag internally.
+*\param[in] pNdefWrite_RspCb Response callback defined by the caller.
+*\param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+*\note If \ref phNfc_sData_t.NdefMessageLen is 0 bytes, this function will erase all
+*current NDEF data present in the tag. Any non-zero length buffer size
+*will attempt to write NEDF data onto the tag.
+* If the call back error code is NFCSTATUS_FAILED then the LIBNFC client has to do the
+* phLibNfc_RemoteDev_CheckPresence to find , its communication error or target lost.
+*
+*
+* \retval NFCSTATUS_PENDING Request accepted and started.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters could not
+* be properly interpreted.
+* \retval NFCSTATUS_NON_NDEF_COMPLIANT Tag is not Ndef Compliant.
+* \retval NFCSTATUS_TARGET_NOT_CONNECTED The Remote Device is not connected.
+* \retval NFCSTATUS_REJECTED Rejected due to NDEF write issued without
+* performing a CheckNdef().
+* \retval NFCSTATUS_FAILED operation failed.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present NDEF Tag "];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_CheckNdef()",URL="\ref phLibNfc_Ndef_CheckNdef "];
+*LibNfcClient<-LibNfc [label="pCheckNdef_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_Write()",URL="\ref phLibNfc_Ndef_Write "];
+*LibNfcClient<-LibNfc [label="pNdefWrite_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS NDEF write operation is successful.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_ABORTED, Aborted due to disconnect operation in between.
+* \param NFCSTATUS_NOT_ENOUGH_MEMORY Requested no of bytes to be writen exceeds size of the memory available on the tag.
+* \param NFCSTATUS_FAILED Request failed.
+*/
+
+NFCSTATUS phLibNfc_Ndef_Write (phLibNfc_Handle hRemoteDevice,
+ phNfc_sData_t* psWr,
+ pphLibNfc_RspCb_t pNdefWrite_RspCb,
+ void* pContext
+ );
+
+
+
+/**
+* \ingroup grp_lib_nfc
+*
+* \brief Format target.
+*
+* This function allows the LibNfc client to perform NDEF formating operation on discovered target.
+This function formats given target
+*
+*\note
+* <br>1. Prior to formating it is recommended to perform NDEF check using \ref phLibNfc_Ndef_CheckNdef interface.
+* <br>2. formatting feature supported only for MIFARE Std,MIFARE UL and Desfire tag types.
+* If the call back error code is NFCSTATUS_FAILED then the LIBNFC client has to do the
+* phLibNfc_RemoteDev_CheckPresence to find , its communication error or target lost.
+*
+*\param[in] hRemoteDevice handle of the remote device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+*\param[in] pScrtKey info containing the secret key data
+* and Secret key buffer length.
+*
+*\param[in] pNdefformat_RspCb Response callback defined by the caller.
+*\param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+*
+* \retval NFCSTATUS_PENDING Request accepted and started.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters could not
+* be properly interpreted.
+* \retval NFCSTATUS_TARGET_NOT_CONNECTED The Remote Device is not connected.
+* \retval NFCSTATUS_FAILED operation failed.
+* \retval NFCSTATUS_REJECTED Tag is already formatted one.
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present non NDEF Tag "];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_CheckNdef()",URL="\ref phLibNfc_Ndef_CheckNdef "];
+*LibNfcClient<-LibNfc [label="pCheckNdef_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Tag found to be non NDEF compliant ,now format it"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_FormatNdef()",URL="\ref phLibNfc_RemoteDev_FormatNdef "];
+*LibNfcClient<-LibNfc [label="pNdefformat_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS NDEF formatting operation is successful.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_ABORTED, Aborted due to disconnect operation in between.
+* \param NFCSTATUS_FAILED Request failed.
+*/
+
+NFCSTATUS phLibNfc_RemoteDev_FormatNdef(phLibNfc_Handle hRemoteDevice,
+ phNfc_sData_t* pScrtKey,
+ pphLibNfc_RspCb_t pNdefformat_RspCb,
+ void* pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Search for NDEF Record type</b>.
+*
+* This function allows LibNfc client to search NDEF content based on TNF value and type \n
+*
+*This API allows to find NDEF records based on RTD (Record Type Descriptor) info.
+*LibNfc internally parses NDEF content based registration type registered.
+*In case there is match LibNfc notifies LibNfc client with NDEF information details.
+*LibNfc client can search a new NDEF registration type once the previous call is handled.
+*
+*\param[in] hRemoteDevice Handle of the remote device.This handle to be
+* same as as handle obtained for specific remote device
+* during device discovery.
+*\param[in] psSrchTypeList List of NDEF records to be looked in based on TNF value and type.
+* For NDEF search type refer to \ref phLibNfc_Ndef_SrchType.
+* If this set to NULL then it means that libNfc client interested in
+* all possible NDEF records.
+*
+*\param[in] uNoSrchRecords Indicates no of NDEF records in requested list as mentioned
+* in psSrchTypeList.
+*\param[in] pNdefNtfRspCb Response callback defined by the caller.
+*\param[in] pContext Client context which will be included in
+* callback when callback is notified.
+*
+*
+* \retval NFCSTATUS_SUCCESS Indicates NDEF notification registration successful.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_INVALID_HANDLE Target handle is invalid.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters could not
+* be properly interpreted.
+* \retval NFCSTATUS_TARGET_NOT_CONNECTED The Remote Device is not connected.
+* \retval NFCSTATUS_FAILED operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*
+* \retval NFCSTATUS_ABORTED Aborted due to disconnect request in between.
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_configureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*LibNfcClient<-LibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Now Present NDEF Tag "];
+*LibNfcClient<-LibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*LibNfcClient<-LibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_CheckNdef()",URL="\ref phLibNfc_Ndef_CheckNdef "];
+*LibNfcClient<-LibNfc [label="pCheckNdef_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Ndef_SearchNdefContent()",URL="\ref phLibNfc_Ndef_SearchNdefContent"];
+*LibNfcClient<-LibNfc [label="pNdefNtfRspCb",URL="\ref pphLibNfc_Ndef_Search_RspCb_t()"];
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+*/
+NFCSTATUS phLibNfc_Ndef_SearchNdefContent(
+ phLibNfc_Handle hRemoteDevice,
+ phLibNfc_Ndef_SrchType_t* psSrchTypeList,
+ uint8_t uNoSrchRecords,
+ pphLibNfc_Ndef_Search_RspCb_t pNdefNtfRspCb,
+ void * pContext
+ );
+
+
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b> Interface used to receive data from initiator at target side during P2P communication</b>.
+*
+*This function Allows the NFC-IP1 target to retrieve data/commands coming from the
+*Initiator.Once this function is called by LibNfc client on target side it waits for
+*receiving data from initiator.It is used by libNfc client which acts as target during P2P
+*communication.
+*
+*\note : Once this API is called,its mandatory to wait for receive
+*\ref pphLibNfc_Receive_RspCb_t callback notification,before calling any other
+*API.Only function allowed is \ref phLibNfc_Mgt_DeInitialize.
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+*
+* \param[in] pReceiveRspCb 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 operation is in progress.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_INVALID_DEVICE The device has been disconnected meanwhile.
+* \retval NFCSTATUS_DESELECTED Receive operation is not possible due to
+* initiator issued disconnect or intiator
+* physically removed from the RF field.
+*
+*\retval NFCSTATUS_REJECTED Indicates invalid request.
+*\retval NFCSTATUS_FAILED Request failed.
+*
+*\msc
+*P2PInitiatorClient,InitiatorLibNfc,P2PTargetLibNfc,P2PTargetClient;
+*--- [label="stack is intialised and P2P notification handler registered alredy"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_Mgt_SetP2P_ConfigParams()",URL="\ref phLibNfc_Mgt_SetP2P_ConfigParams"];
+*P2PTargetClient<<P2PTargetLibNfc [label="NFCSTATUS_PENDING"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pConfigRspCb()",URL="\ref pphLibNfc_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_Mgt_SetP2P_ConfigParams()",URL="\ref phLibNfc_Mgt_SetP2P_ConfigParams"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pConfigRspCb()",URL="\ref pphLibNfc_RspCb_t"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_Mgt_ConfigureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*P2PTargetClient<<P2PTargetLibNfc [label="NFCSTATUS_PENDING"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_Mgt_ConfigureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Place Initiator and target closely"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_ConnectCallback_t"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*--- [label="On connect target must be immediately ready to receive data from initiator"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_RemoteDev_Receive()",URL="\ref phLibNfc_RemoteDev_Receive"];
+*--- [label="Now target waits to receive data from intiator"];
+*--- [label="Send data from initiator now"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_RemoteDev_Transceive()",URL="\ref phLibNfc_RemoteDev_Transceive "];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pTransceive_RspCb",URL="\ref pphLibNfc_TransceiveCallback_t"];
+*--- [label="Now data arrived at target side"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pReceiveRspCb",URL="\ref pphLibNfc_Receive_RspCb_t"];
+\endmsc
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Receive operation successful.
+* \param NFCSTATUS_SHUTDOWN Receive operation failed because Shutdown in progress.
+* \param NFCSTATUS_ABORTED Aborted due to initiator issued disconnect request.
+* or intiator removed physically from the RF field.
+* This status code reported,to indicate P2P session
+* closed and send and receive requests not allowed
+* any more unless new session is started.
+* \param NFCSTATUS_DESELECTED Receive operation is not possible due to
+* initiator issued disconnect or intiator
+* physically removed from the RF field.
+*/
+extern
+NFCSTATUS
+phLibNfc_RemoteDev_Receive( phLibNfc_Handle hRemoteDevice,
+ pphLibNfc_Receive_RspCb_t pReceiveRspCb,
+ void* pContext
+ );
+
+
+
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Interface used to send data from target to initiator during P2P communication</b>.
+*
+*This function Allows the NFC-IP1 target to send data to Initiator,in response to packet received
+*from initiator during P2P communication.It is must prior to send request target has received
+*data from initiator using \ref phLibNfc_RemoteDev_Receive interface.
+*
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+*
+* \param[in] pTransferData Data and the length of the data to be
+* transferred.
+* \param[in] pSendRspCb 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 operation is in progress.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_INVALID_DEVICE The device has been disconnected meanwhile.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+* \retval NFCSTATUS_DESELECTED Receive operation is not possible due to
+* initiator issued disconnect or intiator
+* physically removed from the RF field.
+*\retval NFCSTATUS_REJECTED Indicates invalid request.
+*\retval NFCSTATUS_FAILED Request failed.
+*
+*\msc
+*P2PInitiatorClient,InitiatorLibNfc,P2PTargetLibNfc,P2PTargetClient;
+*--- [label="stack is intialised and P2P notification handler registered alredy"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_Mgt_SetP2P_ConfigParams()",URL="\ref phLibNfc_Mgt_SetP2P_ConfigParams"];
+*P2PTargetClient<<P2PTargetLibNfc [label="NFCSTATUS_PENDING"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pConfigRspCb()",URL="\ref pphLibNfc_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_Mgt_SetP2P_ConfigParams()",URL="\ref phLibNfc_Mgt_SetP2P_ConfigParams"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pConfigRspCb()",URL="\ref pphLibNfc_RspCb_t"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_Mgt_ConfigureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*P2PTargetClient<<P2PTargetLibNfc [label="NFCSTATUS_PENDING"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_Mgt_ConfigureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Place Initiator and target closely"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_ConnectCallback_t"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*--- [label="On connect target must be immediately ready to receive data from initiator"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_RemoteDev_Receive()",URL="\ref phLibNfc_RemoteDev_Receive"];
+*--- [label="Now target waits to receive data from intiator"];
+*--- [label="Send data from initiator now"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_RemoteDev_Transceive()",URL="\ref phLibNfc_RemoteDev_Transceive "];
+*--- [label="Now data arrived at target side"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pReceiveRspCb",URL="\ref pphLibNfc_Receive_RspCb_t"];
+*--- [label="Now send data from target"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_RemoteDev_Send()",URL="\ref phLibNfc_RemoteDev_Send"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pTransceive_RspCb",URL="\ref pphLibNfc_TransceiveCallback_t"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pSendRspCb",URL="\ref pphLibNfc_RspCb_t"];
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS Send operation successful.
+* \param NFCSTATUS_SHUTDOWN Send operation failed because Shutdown in progress.
+* \param NFCSTATUS_ABORTED Aborted due to initiator issued disconnect request.
+* or intiator removed physically from the RF field.
+* This status code reported,to indicate P2P session
+* closed and send and receive requests not allowed
+* any more unless new session is started.
+* \param NFCSTATUS_DESELECTED Receive operation is not possible due to
+* initiator issued disconnect or intiator
+* physically removed from the RF field.
+*
+*
+*/
+extern
+NFCSTATUS
+phLibNfc_RemoteDev_Send(phLibNfc_Handle hRemoteDevice,
+ phNfc_sData_t* pTransferData,
+ pphLibNfc_RspCb_t pSendRspCb,
+ void* pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Interface to configure P2P and intiator mode configurations</b>.
+* The setting will be 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 Currently general bytes configuration supported.
+*
+* \param[in] pConfigInfo Union containing P2P configuration details as
+* in \ref phLibNfc_sNfcIPCfg_t.
+*
+* \param[in] pConfigRspCb This callback has to be called once LibNfc
+* completes the Configuration.
+*
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+*
+* \retval NFCSTATUS_PENDING Config operation is in progress.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*
+*\msc
+*P2PInitiatorClient,InitiatorLibNfc,P2PTargetLibNfc,P2PTargetClient;
+*--- [label="stack is intialised and P2P notification handler registered alredy"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_Mgt_SetP2P_ConfigParams()",URL="\ref phLibNfc_Mgt_SetP2P_ConfigParams"];
+*P2PTargetClient<<P2PTargetLibNfc [label="NFCSTATUS_PENDING"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pConfigRspCb()",URL="\ref pphLibNfc_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_Mgt_SetP2P_ConfigParams()",URL="\ref phLibNfc_Mgt_SetP2P_ConfigParams"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PTargetClient=>P2PTargetLibNfc [label="phLibNfc_Mgt_ConfigureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*P2PTargetClient<<P2PTargetLibNfc [label="NFCSTATUS_PENDING"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_Mgt_ConfigureDiscovery()",URL="\ref phLibNfc_Mgt_ConfigureDiscovery"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pConfigDiscovery_RspCb",URL="\ref pphLibNfc_RspCb_t"];
+*--- [label="Place Initiator and target closely"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*P2PInitiatorClient=>InitiatorLibNfc [label="phLibNfc_RemoteDev_Connect()",URL="\ref phLibNfc_RemoteDev_Connect"];
+*P2PInitiatorClient<<InitiatorLibNfc [label="NFCSTATUS_PENDING"];
+*P2PInitiatorClient<-InitiatorLibNfc [label="pNotifyConnect_RspCb",URL="\ref pphLibNfc_ConnectCallback_t"];
+*P2PTargetClient<-P2PTargetLibNfc [label="pNotificationHandler",URL="\ref phLibNfc_NtfRegister_RspCb_t"];
+*--- [label="Now configured params ( Ex : general bytes can been seen in remote device info"];
+*\endmsc
+*
+*\note Response callback parameters details for this interface are as listed below.
+*
+* \param[in] pContext LibNfc client context passed in the corresponding request before.
+* \param[in] status Status of the response callback.
+*
+* \param NFCSTATUS_SUCCESS configuration operation is successful.
+* \param NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \param NFCSTATUS_FAILED Request failed.
+*
+*/
+extern NFCSTATUS phLibNfc_Mgt_SetP2P_ConfigParams( phLibNfc_sNfcIPCfg_t* pConfigInfo,
+ pphLibNfc_RspCb_t pConfigRspCb,
+ void* pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Interface to stack capabilities</b>.
+*
+* LibNfc client can query to retrieve stack capabilities.Stack capabilities contains
+* <br><br>a).Device capabilities which contains details like protocols supported,
+* Hardware,Firmware and model-id version details .For details refer to \ref phNfc_sDeviceCapabilities_t.
+* <br><br>b).NDEF mapping related info. This info helps in identifying supported tags for NDEF mapping feature.
+* <br><br>c).NDEF formatting related info. This info helps in identifying supported tags for NDEF formatting feature.
+*
+* \param[in] phLibNfc_StackCapabilities Contains device capabilities and NDEF mapping and formatting feature
+ support for different tag types.
+*
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+*
+* \retval NFCSTATUS_SUCCESS Indicates Get stack Capabilities operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*
+*
+*\msc
+*LibNfcClient,LibNfc;
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_Initialize()",URL="\ref phLibNfc_Mgt_Initialize"];
+*LibNfcClient<-LibNfc [label="pInitCb()",URL="\ref pphLibNfc_RspCb_t()"];
+*LibNfcClient=>LibNfc [label="phLibNfc_RemoteDev_NtfRegister()",URL="\ref phLibNfc_RemoteDev_NtfRegister"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_GetstackCapabilities()",URL="\ref phLibNfc_Mgt_GetstackCapabilities"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*--- [label="Now stack capabilities available "];
+*
+*\endmsc*/
+
+
+extern NFCSTATUS phLibNfc_Mgt_GetstackCapabilities(phLibNfc_StackCapabilities_t* phLibNfc_StackCapabilities,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Interface to configure local LLCP peer</b>.
+*
+* This function configures the parameters of the local LLCP peer. This function must be called
+* before any other LLCP-related function from this API.
+*
+* \param[in] pConfigInfo Contains local LLCP link parameters to be applied
+* \param[in] pConfigRspCb This callback has to be called once LibNfc
+* completes the Configuration.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_PENDING Configuration operation is in progress,
+ pConfigRspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*/
+extern NFCSTATUS phLibNfc_Mgt_SetLlcp_ConfigParams( phLibNfc_Llcp_sLinkParameters_t* pConfigInfo,
+ pphLibNfc_RspCb_t pConfigRspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Checks if a remote peer is LLCP compliant</b>.
+*
+* This functions allows to check if a previously detected tag is compliant with the
+* LLCP protocol. This step is needed before calling any other LLCP-related function on
+* this remote peer, except local LLCP peer configurationn, which is more general. Once
+* this checking is done, the caller will be able to receive link status notifications
+* until the peer is disconnected.
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+* \param[in] pCheckLlcp_RspCb The callback to be called once LibNfc
+* completes the LLCP compliancy check.
+* \param[in] pLink_Cb The callback to be called each time the
+* LLCP link status changes.
+* \param[in] pContext Upper layer context to be returned in
+* the callbacks.
+*
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_PENDING Check operation is in progress, pCheckLlcp_RspCb will
+* be called upon completion.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*/
+extern NFCSTATUS phLibNfc_Llcp_CheckLlcp( phLibNfc_Handle hRemoteDevice,
+ pphLibNfc_ChkLlcpRspCb_t pCheckLlcp_RspCb,
+ pphLibNfc_LlcpLinkStatusCb_t pLink_Cb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Activates a LLCP link with a remote device </b>.
+*
+* This function launches the link activation process on a remote LLCP-compliant peer. The link status
+* notification will be sent by the corresponding callback given in the phLibNfc_Llcp_CheckLlcp function.
+* If the activation fails, the deactivated status will be notified, even if the link is already in a
+* deactivated state.
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_PENDING Activation operation is in progress,
+ pLink_Cb will be called upon completion.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Activate( phLibNfc_Handle hRemoteDevice );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Deactivate a previously activated LLCP link with a remote device</b>.
+*
+* This function launches the link deactivation process on a remote LLCP-compliant peer. The link status
+* notification will be sent by the corresponding callback given in the phLibNfc_Llcp_CheckLlcp function.
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_PENDING Deactivation operation is in progress,
+ pLink_Cb will be called upon completion.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Deactivate( phLibNfc_Handle hRemoteDevice );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Get information on the local LLCP peer</b>.
+*
+* This function returns the LLCP link parameters of the local peer that were used
+* during the link activation.
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+* \param[out] pConfigInfo Pointer on the variable to be filled with the configuration
+ parameters used during activation.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*/
+extern NFCSTATUS phLibNfc_Llcp_GetLocalInfo( phLibNfc_Handle hRemoteDevice,
+ phLibNfc_Llcp_sLinkParameters_t* pConfigInfo
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Get information on the remote LLCP peer</b>.
+*
+* This function returns the LLCP link parameters of the remote peer that were received
+* during the link activation.
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+* \param[out] pConfigInfo Pointer on the variable to be filled with the configuration
+ parameters used during activation.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+* \retval NFCSTATUS_BUSY Previous request in progress can not accept new request.
+*/
+extern NFCSTATUS phLibNfc_Llcp_GetRemoteInfo( phLibNfc_Handle hRemoteDevice,
+ phLibNfc_Llcp_sLinkParameters_t* pConfigInfo
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Create a socket on a LLCP-connected device</b>.
+*
+* This function creates a socket for a given LLCP link. Sockets can be of two types :
+* connection-oriented and connectionless. If the socket is connection-oriented, the caller
+* must provide a working buffer to the socket in order to handle incoming data. This buffer
+* must be large enough to fit the receive window (RW * MIU), the remaining space being
+* used as a linear buffer to store incoming data as a stream. Data will be readable later
+* using the phLibNfc_Llcp_Recv function.
+* The options and working buffer are not required if the socket is used as a listening socket,
+* since it cannot be directly used for communication.
+*
+* \param[in] hRemoteDevice Peer handle obtained during device discovery process.
+* \param[in] eType The socket type.
+* \param[in] psOptions The options to be used with the socket.
+* \param[in] psWorkingBuffer A working buffer to be used by the library.
+* \param[out] phSocket A pointer on the variable to be filled with the handle
+* on the created socket.
+* \param[in] pErr_Cb The callback to be called each time the socket
+* is in error.
+* \param[in] pContext Upper layer context to be returned in the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_BUFFER_TOO_SMALL The working buffer is too small for the MIU and RW
+* declared in the options.
+* \retval NFCSTATUS_INSUFFICIENT_RESOURCES No more socket handle available.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Socket( phLibNfc_Handle hRemoteDevice,
+ phLibNfc_Llcp_eSocketType_t eType,
+ phLibNfc_Llcp_sSocketOptions_t* psOptions,
+ phNfc_sData_t* psWorkingBuffer,
+ phLibNfc_Handle* phSocket,
+ pphLibNfc_LlcpSocketErrCb_t pErr_Cb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Close a socket on a LLCP-connected device</b>.
+*
+* This function closes a LLCP socket previously created using phLibNfc_Llcp_Socket.
+* If the socket was connected, it is first disconnected, and then closed.
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Close( phLibNfc_Handle hSocket );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Get the local options of a socket</b>.
+*
+* This function returns the local options (maximum packet size and receive window size) used
+* for a given connection-oriented socket. This function shall not be used with connectionless
+* sockets.
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] psLocalOptions A pointer to be filled with the local options of the socket.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_SocketGetLocalOptions( phLibNfc_Handle hSocket,
+ phLibNfc_Llcp_sSocketOptions_t* psLocalOptions
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Get the local options of a socket</b>.
+*
+* This function returns the remote options (maximum packet size and receive window size) used
+* for a given connection-oriented socket. This function shall not be used with connectionless
+* sockets.
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] psRemoteOptions A pointer to be filled with the remote options of the socket.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_SocketGetRemoteOptions( phLibNfc_Handle hSocket,
+ phLibNfc_Llcp_sSocketOptions_t* psRemoteOptions
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Bind a socket to a local SAP</b>.
+*
+* This function binds the socket to a local Service Access Point.
+*
+* \param[in] hSocket Peer handle obtained during device discovery process.
+* \param[out] pConfigInfo Pointer on the variable to be filled with the configuration
+* parameters used during activation.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_ALREADY_REGISTERED The selected SAP is already bound to another
+ socket.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Bind( phLibNfc_Handle hSocket,
+ uint8_t nSap
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Listen for incoming connection requests on a socket</b>.
+*
+* This function switches a socket into a listening state and registers a callback on
+* incoming connection requests. In this state, the socket is not able to communicate
+* directly. The listening state is only available for connection-oriented sockets
+* which are still not connected. The socket keeps listening until it is closed, and
+* thus can trigger several times the pListen_Cb callback. The caller can adverise the
+* service through SDP by providing a service name.
+*
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] psServiceName A buffer containing the name of the service for SDP. No SDP
+* advertising if set to NULL.
+* \param[in] pListen_Cb The callback to be called each time the
+* socket receive a connection request.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state to switch
+* to listening state.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Listen( phLibNfc_Handle hSocket,
+ phNfc_sData_t *psServiceName,
+ pphLibNfc_LlcpSocketListenCb_t pListen_Cb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Accept an incoming connection request for a socket</b>.
+*
+* This functions allows the client to accept an incoming connection request.
+* It must be used with the socket provided within the listen callback. The socket
+* is implicitly switched to the connected state when the function is called.
+*
+* \param[in] hSocket Socket handle obtained in the listening callback.
+* \param[in] psOptions The options to be used with the socket.
+* \param[in] psWorkingBuffer A working buffer to be used by the library.
+* \param[in] pErr_Cb The callback to be called each time the accepted socket
+* is in error.
+* \param[in] pAccept_RspCb The callback to be called when the Accept operation
+* is completed.
+* \param[in] pContext Upper layer context to be returned in the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_BUFFER_TOO_SMALL The working buffer is too small for the MIU and RW
+* declared in the options.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Accept( phLibNfc_Handle hSocket,
+ phLibNfc_Llcp_sSocketOptions_t* psOptions,
+ phNfc_sData_t* psWorkingBuffer,
+ pphLibNfc_LlcpSocketErrCb_t pErr_Cb,
+ pphLibNfc_LlcpSocketAcceptCb_t pAccept_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Reject an incoming connection request for a socket</b>.
+*
+* This functions allows the client to reject an incoming connection request.
+* It must be used with the socket provided within the listen callback. The socket
+* is implicitly closed when the function is called.
+*
+* \param[in] hSocket Socket handle obtained in the listening callback.
+* \param[in] pReject_RspCb The callback to be called when the Reject operation
+* is completed.
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Reject( phLibNfc_Handle hSocket,
+ pphLibNfc_LlcpSocketAcceptCb_t pReject_RspCb,
+ void* pContext);
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Try to establish connection with a socket on a remote SAP</b>.
+*
+* This function tries to connect to a given SAP on the remote peer. If the
+* socket is not bound to a local SAP, it is implicitly bound to a free SAP.
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] nSap The destination SAP to connect to.
+* \param[in] pConnect_RspCb The callback to be called when the connection
+* operation is completed.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_PENDING Connection operation is in progress,
+* pConnect_RspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Connect( phLibNfc_Handle hSocket,
+ uint8_t nSap,
+ pphLibNfc_LlcpSocketConnectCb_t pConnect_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Try to establish connection with a socket on a remote service, given its URI</b>.
+*
+* This function tries to connect to a SAP designated by an URI. If the
+* socket is not bound to a local SAP, it is implicitly bound to a free SAP.
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] psUri The URI corresponding to the destination SAP to connect to.
+* \param[in] pConnect_RspCb The callback to be called when the connection
+* operation is completed.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_PENDING Connection operation is in progress,
+* pConnect_RspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_ConnectByUri( phLibNfc_Handle hSocket,
+ phNfc_sData_t* psUri,
+ pphLibNfc_LlcpSocketConnectCb_t pConnect_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Disconnect a currently connected socket</b>.
+*
+* This function initiates the disconnection of a previously connected socket.
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] pDisconnect_RspCb The callback to be called when the
+* operation is completed.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_PENDING Disconnection operation is in progress,
+* pDisconnect_RspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Disconnect( phLibNfc_Handle hSocket,
+ pphLibNfc_LlcpSocketDisconnectCb_t pDisconnect_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Read data on a socket</b>.
+*
+* This function is used to read data from a socket. It reads at most the
+* size of the reception buffer, but can also return less bytes if less bytes
+* are available. If no data is available, the function will be pending until
+* more data comes, and the response will be sent by the callback. This function
+* can only be called on a connection-oriented socket.
+*
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] psBuffer The buffer receiving the data.
+* \param[in] pRecv_RspCb The callback to be called when the
+* operation is completed.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_PENDING Reception operation is in progress,
+* pRecv_RspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Recv( phLibNfc_Handle hSocket,
+ phNfc_sData_t* psBuffer,
+ pphLibNfc_LlcpSocketRecvCb_t pRecv_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Read data on a socket and get the source SAP</b>.
+*
+* This function is the same as phLibNfc_Llcp_Recv, except that the callback includes
+* the source SAP. This functions can only be called on a connectionless socket.
+*
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] psBuffer The buffer receiving the data.
+* \param[in] pRecv_RspCb The callback to be called when the
+* operation is completed.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_PENDING Reception operation is in progress,
+* pRecv_RspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_RecvFrom( phLibNfc_Handle hSocket,
+ phNfc_sData_t* psBuffer,
+ pphLibNfc_LlcpSocketRecvFromCb_t pRecv_Cb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Send data on a socket</b>.
+*
+* This function is used to write data on a socket. This function
+* can only be called on a connection-oriented socket which is already
+* in a connected state.
+*
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] psBuffer The buffer containing the data to send.
+* \param[in] pSend_RspCb The callback to be called when the
+* operation is completed.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_PENDING Reception operation is in progress,
+* pSend_RspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_Send( phLibNfc_Handle hSocket,
+ phNfc_sData_t* psBuffer,
+ pphLibNfc_LlcpSocketSendCb_t pSend_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Send data on a socket to a given destination SAP</b>.
+*
+* This function is used to write data on a socket to a given destination SAP.
+* This function can only be called on a connectionless socket.
+*
+*
+* \param[in] hSocket Socket handle obtained during socket creation.
+* \param[in] nSap The destination SAP.
+* \param[in] psBuffer The buffer containing the data to send.
+* \param[in] pSend_RspCb The callback to be called when the
+* operation is completed.
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+* \retval NFCSTATUS_SUCCESS Operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_PENDING Reception operation is in progress,
+* pSend_RspCb will be called upon completion.
+* \retval NFCSTATUS_INVALID_STATE The socket is not in a valid state, or not of
+* a valid type to perform the requsted operation.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+* \retval NFCSTATUS_FAILED Operation failed.
+*/
+extern NFCSTATUS phLibNfc_Llcp_SendTo( phLibNfc_Handle hSocket,
+ uint8_t nSap,
+ phNfc_sData_t* psBuffer,
+ pphLibNfc_LlcpSocketSendCb_t pSend_RspCb,
+ void* pContext
+ );
+
+
+/**
+* \ingroup grp_lib_nfc
+*
+* \brief Initializes \ DeInitialize the NFC library for testmode.
+*
+*
+*\brief This function initializes / DeInitialize NFC library and its underlying layers
+* in test mode. As part of this interface underlying layers gets configured.
+* Once phLibNfc_TstMode_On is successful ,NFC library ready in testmode using IOCTL.
+* After using test IOCTLs ,Test mode should be DeInit using phLibNfc_TstMode_Off.
+*\note This API should be used only for test IOCTL codes.
+*
+* \param[in] pDriverHandle Driver Handle currently application is using.
+* \param[in] pTestModeCb The init callback is called by the LibNfc when
+* Configure test mode completed or there is an error
+* in initialization.
+*
+* \param[in] pContext Client context which will be included in
+* callback when the request is completed.
+*
+* \retval NFCSTATUS_ALREADY_INITIALISED Stack is already initialized.
+* \retval NFCSTATUS_PENDING Init sequence has been successfully
+* started and result will be conveyed via
+* callback notification.
+* \retval NFCSTATUS_INVALID_PARAMETER The parameter could not be properly
+* interpreted.
+*\retval NFCSTATUS_INSUFFICIENT_RESOURCES Insufficient resource.(Ex: insufficient memory)
+*
+*\msc
+*LibNfcClient,LibNfc;
+*--- [label="Before initializing Nfc LIB,Setup Driver layer"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_ConfigureDriver()",URL="\ref phLibNfc_Mgt_ConfigureDriver"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_SUCCESS"];
+*LibNfcClient=>LibNfc [label="phLibNfc_Mgt_ConfigureTestMode()",URL="\ref phLibNfc_Mgt_ConfigureTestMode"];
+*LibNfcClient<<LibNfc [label="NFCSTATUS_PENDING"];
+*LibNfcClient<-LibNfc [label="pTestModeCb"];
+*\endmsc
+*/
+NFCSTATUS phLibNfc_Mgt_ConfigureTestMode(void *pDriverHandle,
+ pphLibNfc_RspCb_t pTestModeCb,
+ phLibNfc_Cfg_Testmode_t eTstmode,
+ void *pContext
+ );
+
+/**
+* \ingroup grp_lib_nfc
+* \brief <b>Interface to LibNfc Reset</b>.
+*
+* LibNfc client can reset the stack.
+*
+* \param[in] pContext Upper layer context to be returned in
+* the callback.
+*
+*
+* \retval NFCSTATUS_SUCCESS Indicates Get stack Capabilities operation successful.
+* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
+* could not be properly interpreted.
+* \retval NFCSTATUS_NOT_INITIALISED Indicates stack is not yet initialized.
+* \retval NFCSTATUS_SHUTDOWN Shutdown in progress.
+*/
+
+NFCSTATUS phLibNfc_Mgt_Reset(void *pContext);
+
+#endif /* PHLIBNFC_H */
+