From 5d9927ba30ba449badb9f6df0fbeb4d6aedc6e2a Mon Sep 17 00:00:00 2001 From: Nick Pelly Date: Thu, 23 Sep 2010 12:47:58 -0700 Subject: Initial libnfc checkin Source: Trusted_NFC_Device_Host_AA03.01e02_google.zip code drop (23-Sep-2010) Change-Id: Ie47f18423f949a8d3e0815d13f55c814312add24 Signed-off-by: Nick Pelly --- src/phFriNfc_LlcpTransport_Connection.h | 303 ++++++++++++++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 src/phFriNfc_LlcpTransport_Connection.h (limited to 'src/phFriNfc_LlcpTransport_Connection.h') diff --git a/src/phFriNfc_LlcpTransport_Connection.h b/src/phFriNfc_LlcpTransport_Connection.h new file mode 100644 index 0000000..6b8dbc4 --- /dev/null +++ b/src/phFriNfc_LlcpTransport_Connection.h @@ -0,0 +1,303 @@ +/* + * 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 phFriNfc_LlcpTransport_Connection.h + * \brief + * + * Project: NFC-FRI + * + */ +#ifndef PHFRINFC_LLCP_TRANSPORT_CONNECTION_H +#define PHFRINFC_LLCP_TRANSPORT_CONNECTION_H +/*include files*/ +#include +#include +#include + +#include + + +void Handle_ConnectionOriented_IncommingFrame(phFriNfc_LlcpTransport_t *pLlcpTransport, + phNfc_sData_t *psData, + uint8_t dsap, + uint8_t ptype, + uint8_t ssap); + +/** +* \ingroup grp_lib_nfc +* \brief Get the local options of a socket. +* +* 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[out] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \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. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_SocketGetLocalOptions(phFriNfc_LlcpTransport_Socket_t *pLlcpSocket, + phLibNfc_Llcp_sSocketOptions_t *psLocalOptions); + +/** +* \ingroup grp_lib_nfc +* \brief Get the local options of a socket. +* +* 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[out] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \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. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_SocketGetRemoteOptions(phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + phLibNfc_Llcp_sSocketOptions_t* psRemoteOptions); + +/** +* \ingroup grp_fri_nfc +* \brief Close a socket on a LLCP-connected device. +* +* This function closes a LLCP socket previously created using phFriNfc_LlcpTransport_Socket. +* If the socket was connected, it is first disconnected, and then closed. +* +* \param[in] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. + +* \retval NFCSTATUS_SUCCESS Operation successful. +* \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters +* could not be properly interpreted. +* \retval NFCSTATUS_FAILED Operation failed. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Close(phFriNfc_LlcpTransport_Socket_t* pLlcpSocket); + +/** +* \ingroup grp_fri_nfc +* \brief Listen for incoming connection requests on a socket. +* +* 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. +* +* +* \param[in] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \param[in] psServiceName A pointer to a Service Name +* \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_FAILED Operation failed. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Listen(phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + phNfc_sData_t *psServiceName, + pphFriNfc_LlcpTransportSocketListenCb_t pListen_Cb, + void* pContext); + + +/** +* \ingroup grp_fri_nfc +* \brief Accept an incoming connection request for a socket. +* +* 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] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \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_FAILED Operation failed. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Accept(phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + phFriNfc_LlcpTransport_sSocketOptions_t* psOptions, + phNfc_sData_t* psWorkingBuffer, + pphFriNfc_LlcpTransportSocketErrCb_t pErr_Cb, + pphFriNfc_LlcpTransportSocketAcceptCb_t pAccept_RspCb, + void* pContext); + + + /** +* \ingroup grp_fri_nfc +* \brief Reject an incoming connection request for a socket. +* +* 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] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \param[in] pReject_RspCb The callback to be called when the Reject 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_FAILED Operation failed. +*/ +NFCSTATUS phLibNfc_LlcpTransport_ConnectionOriented_Reject( phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + pphFriNfc_LlcpTransportSocketRejectCb_t pReject_RspCb, + void *pContext); + +/** +* \ingroup grp_fri_nfc +* \brief Try to establish connection with a socket on a remote SAP. +* +* 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] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \param[in] nSap The destination SAP to connect to. +* \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_FAILED Operation failed. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Connect( phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + uint8_t nSap, + phNfc_sData_t* psUri, + pphFriNfc_LlcpTransportSocketConnectCb_t pConnect_RspCb, + void* pContext); + +/** +* \ingroup grp_lib_nfc +* \brief Disconnect a currently connected socket. +* +* This function initiates the disconnection of a previously connected socket. +* +* \param[in] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \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. +*/ +NFCSTATUS phLibNfc_LlcpTransport_ConnectionOriented_Disconnect(phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + pphLibNfc_LlcpSocketDisconnectCb_t pDisconnect_RspCb, + void* pContext); + +/** +* \ingroup grp_fri_nfc +* \brief Send data on a socket. +* +* 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] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \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_FAILED Operation failed. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Send(phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + phNfc_sData_t* psBuffer, + pphFriNfc_LlcpTransportSocketSendCb_t pSend_RspCb, + void* pContext); + + /** +* \ingroup grp_fri_nfc +* \brief Read data on a socket. +* +* 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] pLlcpSocket A pointer to a phFriNfc_LlcpTransport_Socket_t. +* \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_FAILED Operation failed. +*/ +NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Recv( phFriNfc_LlcpTransport_Socket_t* pLlcpSocket, + phNfc_sData_t* psBuffer, + pphFriNfc_LlcpTransportSocketRecvCb_t pRecv_RspCb, + void* pContext); +#endif /* PHFRINFC_LLCP_TRANSPORT_CONNECTION_H */ \ No newline at end of file -- cgit v1.1