summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Tomas <dtomas.nxp@gmail.com>2011-07-25 17:25:18 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-07-25 17:25:18 -0700
commitcb9d6b8d77bba5c8e7caced5962a43d7211ff5b6 (patch)
tree0d7b0ce5209408ec29a47c5cc7b8311c2785a280 /src
parentfbff1ec60cb5adacbee109fb0c0e07e8132b5d39 (diff)
parent0c4a5508f22e067ab9b31581807b53406d161501 (diff)
downloadexternal_libnfc-nxp-cb9d6b8d77bba5c8e7caced5962a43d7211ff5b6.zip
external_libnfc-nxp-cb9d6b8d77bba5c8e7caced5962a43d7211ff5b6.tar.gz
external_libnfc-nxp-cb9d6b8d77bba5c8e7caced5962a43d7211ff5b6.tar.bz2
am 0c4a5508: am d8b82bee: am 34caeca8: Patch to support multiple connection on Multiple protocol TAG
* commit '0c4a5508f22e067ab9b31581807b53406d161501': Patch to support multiple connection on Multiple protocol TAG
Diffstat (limited to 'src')
-rw-r--r--src/phLibNfc.c1
-rw-r--r--src/phLibNfc_Internal.h3
-rw-r--r--src/phLibNfc_initiator.c8
3 files changed, 12 insertions, 0 deletions
diff --git a/src/phLibNfc.c b/src/phLibNfc.c
index ec8b05e..e5435de 100644
--- a/src/phLibNfc.c
+++ b/src/phLibNfc.c
@@ -610,6 +610,7 @@ NFCSTATUS phLibNfc_Mgt_Reset(void *pContext)
}
/* No device is connected */
gpphLibContext->Connected_handle = 0x00;
+ gpphLibContext->Prev_Connected_handle = 0x00;
gpphLibContext->ReleaseType = NFC_INVALID_RELEASE_TYPE;
gpphLibContext->eLibNfcCfgMode = NFC_DISCOVERY_STOP;
/*Lib Nfc Stack is initilized and in idle state*/
diff --git a/src/phLibNfc_Internal.h b/src/phLibNfc_Internal.h
index 10018ec..304ac22 100644
--- a/src/phLibNfc_Internal.h
+++ b/src/phLibNfc_Internal.h
@@ -221,6 +221,9 @@ typedef struct phLibNfc_LibContext
uint32_t Connected_handle,
Discov_handle[MAX_REMOTE_DEVICES];
+ /* To store the previous connected handle in case of Multiple protocol tags */
+ uint32_t Prev_Connected_handle;
+
/*Call back function pointers */
phLibNfc_eDiscoveryConfigMode_t eLibNfcCfgMode;
diff --git a/src/phLibNfc_initiator.c b/src/phLibNfc_initiator.c
index 340af78..2a03c05 100644
--- a/src/phLibNfc_initiator.c
+++ b/src/phLibNfc_initiator.c
@@ -548,6 +548,9 @@ phLibNfc_RemoteDev_ReConnect (
gpphLibContext->CBInfo.pClientConCntx = pContext;
gpphLibContext->status.GenCb_pending_status = TRUE;
gpphLibContext->LibNfcState.next_state = eLibNfcHalStateConnect;
+
+ gpphLibContext->Prev_Connected_handle = gpphLibContext->Connected_handle;
+
gpphLibContext->Connected_handle = hRemoteDevice;
}
else if (NFCSTATUS_INVALID_REMOTE_DEVICE == PHNFCSTATUS(ret_val))
@@ -633,6 +636,7 @@ NFCSTATUS phLibNfc_RemoteDev_Connect(
gpphLibContext->CBInfo.pClientConCntx = pContext;
gpphLibContext->status.GenCb_pending_status=TRUE;
gpphLibContext->LibNfcState.next_state = eLibNfcHalStateConnect;
+ gpphLibContext->Prev_Connected_handle = gpphLibContext->Connected_handle;
gpphLibContext->Connected_handle = hRemoteDevice;
}
else if(PHNFCSTATUS(RetVal) == NFCSTATUS_INVALID_REMOTE_DEVICE)
@@ -757,6 +761,7 @@ STATIC void phLibNfc_RemoteDev_Connect_Cb(
/* If remote device is invalid return as TARGET LOST to upper layer*/
/* If error code is other than SUCCESS return NFCSTATUS_TARGET_LOST */
Connect_status = NFCSTATUS_TARGET_LOST;
+ gpphLibContext->Connected_handle = gpphLibContext->Prev_Connected_handle ;
}
gpphLibContext->ndef_cntx.is_ndef = CHK_NDEF_NOT_DONE;
/* Update the Current Sate*/
@@ -896,6 +901,9 @@ STATIC void phLibNfc_RemoteDev_Disconnect_cb(
gpphLibContext->LastTrancvSuccess = FALSE;
/*Reset Connected handle */
gpphLibContext->Connected_handle=0x0000;
+ /*Reset previous Connected handle */
+ gpphLibContext->Prev_Connected_handle = 0x0000;
+
if(gpphLibContext->sSeContext.eActivatedMode == phLibNfc_SE_ActModeWired)
{
gpphLibContext->sSeContext.eActivatedMode = phLibNfc_SE_ActModeDefault;