am 337cf595: Merge "Fix stuck issue on Kovio barcode"

* commit '337cf59590a80d6763226e29240ee7aeb7f556f6':
  Fix stuck issue on Kovio barcode
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
index 5c7e0af..c32f33e 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ b/halimpl/pn54x/hal/phNxpNciHal.c
@@ -56,6 +56,7 @@
 extern int kovio_detected;
 extern int disable_kovio;
 static uint8_t Rx_data[NCI_MAX_DATA_LEN];
+extern bool_t rf_deactive_cmd;
 
 uint32_t timeoutTimerId = 0;
 phNxpNciHal_Sem_t config_data;
@@ -671,11 +672,14 @@
     /* Specific logic to block RF disable when Kovio detection logic is active */
     if (p_data[0] == 0x21&&
         p_data[1] == 0x06 &&
-        p_data[2] == 0x01 &&
-        kovio_detected == TRUE)
+        p_data[2] == 0x01)
     {
-        NXPLOG_NCIHAL_D ("Kovio detection logic is active: Set Flag to disable it.");
-        disable_kovio=0x01;
+        rf_deactive_cmd = TRUE;
+        if (kovio_detected == TRUE)
+        {
+            NXPLOG_NCIHAL_D ("Kovio detection logic is active: Set Flag to disable it.");
+            disable_kovio = 0x01;
+        }
     }
 
     /* Check for NXP ext before sending write */
diff --git a/halimpl/pn54x/hal/phNxpNciHal_Kovio.c b/halimpl/pn54x/hal/phNxpNciHal_Kovio.c
index 3489b8f..200a88a 100644
--- a/halimpl/pn54x/hal/phNxpNciHal_Kovio.c
+++ b/halimpl/pn54x/hal/phNxpNciHal_Kovio.c
@@ -30,6 +30,7 @@
 int kovio_detected = 0x00;
 int send_to_upper_kovio = 0x01;
 int disable_kovio=0x00;
+bool_t rf_deactive_cmd = FALSE;
 static uint8_t rf_deactivate_cmd[]   = { 0x21, 0x06, 0x01, 0x03 }; /* discovery */
 static uint8_t rf_deactivated_ntf[]  = { 0x61, 0x06, 0x02, 0x03, 0x01 };
 static uint8_t reset_ntf[] = {0x60, 0x00, 0x06, 0xA0, 0x00, 0xC7, 0xD4, 0x00, 0x00};
@@ -119,6 +120,7 @@
         {
             NXPLOG_NCIHAL_D("Send the Core Reset NTF to upper layer, which will trigger the recovery\n");
             //Send the Core Reset NTF to upper layer, which will trigger the recovery.
+            send_to_upper_kovio = 0;
             nxpncihal_ctrl.rx_data_len = sizeof(reset_ntf);
             memcpy(nxpncihal_ctrl.p_rx_data, reset_ntf, sizeof(reset_ntf));
             (*nxpncihal_ctrl.p_nfc_stack_data_cback)(nxpncihal_ctrl.rx_data_len, nxpncihal_ctrl.p_rx_data);
@@ -179,8 +181,18 @@
             {
                 send_to_upper_kovio = 0;
             }
-            NXPLOG_NCIHAL_D("Send RF deactivate command to NFCC");
-            status = phNxpNciHal_rf_deactivate();
+
+            if (!rf_deactive_cmd)
+            {
+                NXPLOG_NCIHAL_D ("Send RF deactivate command to NFCC");
+                status = phNxpNciHal_rf_deactivate ();
+            }
+            else
+            {
+                NXPLOG_NCIHAL_D ("RF deactivate command is already sent to NFCC");
+                disable_kovio = TRUE;
+                send_to_upper_kovio = 0;
+            }
             status = phOsalNfc_Timer_Start(kovio_timer,
                     KOVIO_TIMEOUT,
                     &kovio_timer_handler,
@@ -204,8 +216,9 @@
             }
         }
     }
-    else if((p_ntf[0]==0x41)&&(p_ntf[1]==0x06)&&(p_ntf[2]==0x01)&&(p_ntf[3]==0x00))
+    else if((p_ntf[0]==0x41)&&(p_ntf[1]==0x06)&&(p_ntf[2]==0x01))
     {
+        rf_deactive_cmd = FALSE;
         if(kovio_detected == 1)
             send_to_upper_kovio = 0;
         if((kovio_detected == 1)&&(disable_kovio==0x01))
diff --git a/halimpl/pn54x/hal/phNxpNciHal_ext.c b/halimpl/pn54x/hal/phNxpNciHal_ext.c
index ca3f4cb..def2b2d 100644
--- a/halimpl/pn54x/hal/phNxpNciHal_ext.c
+++ b/halimpl/pn54x/hal/phNxpNciHal_ext.c
@@ -56,6 +56,7 @@
 extern uint32_t timeoutTimerId;
 
 extern NFCSTATUS read_retry();
+
 /************** HAL extension functions ***************************************/
 static void hal_extns_write_rsp_timeout_cb(uint32_t TimerId, void *pContext);
 
@@ -377,7 +378,6 @@
             return status;
 
         }
-
     }
     else if(p_ntf[0] == 0x41 && p_ntf[1] == 0x04 && cleanup_timer!=0)
     {
diff --git a/halimpl/pn54x/utils/phNxpNciHal_utils.c b/halimpl/pn54x/utils/phNxpNciHal_utils.c
index 65ec89d..57dcc88 100644
--- a/halimpl/pn54x/utils/phNxpNciHal_utils.c
+++ b/halimpl/pn54x/utils/phNxpNciHal_utils.c
@@ -502,5 +502,5 @@
 void phNxpNciHal_emergency_recovery(void)
 {
     NXPLOG_NCIHAL_E("%s: abort()", __FUNCTION__);
-    //    abort();
+    abort();
 }