diff options
author | Arnaud Ferir <arnaud.ferir@trusted-logic.com> | 2010-12-21 18:10:50 +0100 |
---|---|---|
committer | Nick Pelly <npelly@google.com> | 2011-01-18 13:22:46 -0800 |
commit | 76270e7c32ec0c558907430e756712d5b68b417c (patch) | |
tree | 3365a0c4f24e4d413d40a5382a5931e6403b66f3 /src/phFriNfc_LlcpTransport.c | |
parent | 1ec4ace9cd3079abd7c0b30d0976591c8c0f441e (diff) | |
download | external_libnfc-nxp-76270e7c32ec0c558907430e756712d5b68b417c.zip external_libnfc-nxp-76270e7c32ec0c558907430e756712d5b68b417c.tar.gz external_libnfc-nxp-76270e7c32ec0c558907430e756712d5b68b417c.tar.bz2 |
Allow LLCP socket creation before link establishment.
This enables to register a server socket prior to LLCP link
establishement and avoid any race condition between the local
server and the remote client.
The modification implies a LLCP socket API change (added the
device handle parameter in all LLCP API that can lead to
active data exchange). The LLCP socket internal structures are
now initialized during LLCP link parameter configuration step
instead of LLCP compliancy check to save socket state
independently from peer detection.
Also removed unused socket states and added some traces.
Change-Id: I961c48af4ca9ace68d41b9569dc1038bb2bbdc71
Diffstat (limited to 'src/phFriNfc_LlcpTransport.c')
-rw-r--r-- | src/phFriNfc_LlcpTransport.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/phFriNfc_LlcpTransport.c b/src/phFriNfc_LlcpTransport.c index 8613669..22f1e32 100644 --- a/src/phFriNfc_LlcpTransport.c +++ b/src/phFriNfc_LlcpTransport.c @@ -215,7 +215,24 @@ NFCSTATUS phFriNfc_LlcpTransport_CloseAll (phFriNfc_LlcpTransport_t *pLlcpTransp /* Close all sockets */ for(i=0;i<PHFRINFC_LLCP_NB_SOCKET_MAX;i++) { - phFriNfc_LlcpTransport_Close(&pLlcpTransport->pSocketTable[i]); + if(pLlcpTransport->pSocketTable[i].eSocket_Type == phFriNfc_LlcpTransport_eConnectionOriented) + { + switch(pLlcpTransport->pSocketTable[i].eSocket_State) + { + case phFriNfc_LlcpTransportSocket_eSocketConnected: + case phFriNfc_LlcpTransportSocket_eSocketConnecting: + case phFriNfc_LlcpTransportSocket_eSocketAccepted: + case phFriNfc_LlcpTransportSocket_eSocketDisconnected: + case phFriNfc_LlcpTransportSocket_eSocketDisconnecting: + case phFriNfc_LlcpTransportSocket_eSocketRejected: + phFriNfc_LlcpTransport_Close(&pLlcpTransport->pSocketTable[i]); + break; + } + } + else + { + phFriNfc_LlcpTransport_Close(&pLlcpTransport->pSocketTable[i]); + } } return status; |