diff options
author | Nick Pelly <npelly@google.com> | 2010-09-23 12:47:58 -0700 |
---|---|---|
committer | Nick Pelly <npelly@google.com> | 2010-09-23 13:53:18 -0700 |
commit | 5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a (patch) | |
tree | 190f9251c6db03d3550ec7f30b51a2561c01d9cf /src/phLibNfc.h | |
parent | 4ff7c86a2c706b150078274455406f1b04966e1a (diff) | |
download | external_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.h | 2888 |
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 */ + |