Patch to support multiple connection on Multiple protocol TAG

Change-Id: I0f09869458ebbc6d77363338975754335569b6a6
diff --git a/src/phLibNfc.c b/src/phLibNfc.c
index 9c7db4f..c08d044 100644
--- a/src/phLibNfc.c
+++ b/src/phLibNfc.c
@@ -580,6 +580,7 @@
         }
         /* 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 @@
     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 @@
             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 @@
             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 @@
             /* 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 @@
         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;