NOSP-NGEN-artf222731-NFC-init-done-without-waiting-f
diff --git a/src/nfc/int/nfc_int.h b/src/nfc/int/nfc_int.h
index 017ce26..99f6f56 100644
--- a/src/nfc/int/nfc_int.h
+++ b/src/nfc/int/nfc_int.h
@@ -387,9 +387,7 @@
#if((NFC_NXP_CHIP_TYPE != PN547C2) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
NFC_API extern tNFC_STATUS nfc_ncif_set_MaxRoutingTableSize(UINT8 * p_buf);
#endif
-
NFC_API extern void nfc_ncif_update_window (void);
-
NFC_API extern void nfc_ncif_empty_cmd_queue ();
NFC_API extern BOOLEAN nfc_ncif_proc_proprietary_rsp (UINT8 mt, UINT8 gid, UINT8 oid);
NFC_API extern void nfc_ncif_proc_rf_wtx_ntf (UINT8 *p, UINT16 plen);
diff --git a/src/nfc/nfc/nfc_ncif.c b/src/nfc/nfc/nfc_ncif.c
index 6cd550e..b26693b 100644
--- a/src/nfc/nfc/nfc_ncif.c
+++ b/src/nfc/nfc/nfc_ncif.c
@@ -799,9 +799,10 @@
sListenActivated = FALSE;
}
- if ((nfc_cb.nxpCbflag == TRUE)&&(mt == NCI_MT_RSP))
+ if ((nfc_cb.nxpCbflag == TRUE)&&(nfc_ncif_proc_proprietary_rsp(mt,gid,oid) == TRUE))
{
nci_proc_prop_nxp_rsp(p_msg);
+ nfc_cb.nxpCbflag = FALSE;
return (free);
}
#endif
@@ -2874,6 +2875,102 @@
nfc_ncif_cmd_timeout();
//nci_snd_core_reset(0x00);
}
+
+/*******************************************************************************
+**
+** Function nfc_ncif_process_proprietary_rsp
+**
+** Description Process the response to avoid collision
+** while nxpCbflag is set
+**
+** Returns TRUE if proprietary response else FALSE
+**
+*******************************************************************************/
+
+BOOLEAN nfc_ncif_proc_proprietary_rsp (UINT8 mt, UINT8 gid, UINT8 oid)
+{
+ BOOLEAN stat = FALSE;
+ NFC_TRACE_DEBUG3 ("nfc_ncif_proc_proprietary_rsp: mt=%u, gid=%u, oid=%u", mt, gid, oid);
+ switch(mt)
+ {
+ case NCI_MT_DATA:
+ switch (gid)
+ {
+ case 0x03:
+ switch (oid)
+ {
+ case 0x00: /*Data Response*/
+ stat = FALSE;
+ break;
+
+ default:
+ stat = TRUE;
+ break;
+ }
+ break;
+
+ default:
+ stat = TRUE;
+ break;
+ }
+ break;
+
+ case NCI_MT_NTF:
+ switch (gid)
+ {
+ case NCI_GID_CORE:
+ switch (oid)
+ {
+ case 0x00: /*CORE_RESET_NTF*/
+ case 0x06: /*CORE_CONN_CREDITS_NTF*/
+ stat = FALSE;
+ break;
+
+ default:
+ stat = TRUE;
+ break;
+ }
+ break;
+ case NCI_GID_RF_MANAGE:
+ switch (oid)
+ {
+ case 0x06: /*CORE_CONN_CREDITS_NTF*/
+ stat = FALSE;
+ break;
+ case 0x09:
+ stat = FALSE;/*NFA_EE_ACTION_NTF*/
+ break;
+ default:
+ stat = TRUE;
+ break;
+ }
+ break;
+ case NCI_GID_EE_MANAGE :
+ switch (oid)
+ {
+ case 0x00:
+ stat = FALSE;
+ break;
+ default :
+ stat = TRUE;
+ break;
+ }
+ break;
+ default:
+ stat = TRUE;
+ break;
+ }
+ break;
+
+ default:
+ stat = TRUE;
+ break;
+
+ }
+ NFC_TRACE_DEBUG1 ("nfc_ncif_proc_proprietary_rsp: exit status=%u", stat);
+ return stat;
+}
+
#endif
#if((NFC_NXP_ESE == TRUE) && (NXP_EXTNS == TRUE) && (NXP_ESE_ETSI_READER_ENABLE == TRUE))