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();
}