eSE removal observed during NFC ON and fix for delay in NFC off
diff --git a/src/nfa/ee/nfa_ee_act.c b/src/nfa/ee/nfa_ee_act.c
index c926286..8caae7a 100644
--- a/src/nfa/ee/nfa_ee_act.c
+++ b/src/nfa/ee/nfa_ee_act.c
@@ -1590,6 +1590,10 @@
tNFA_EE_ECB* p_cb = p_data->disconnect.p_cb;
tNFA_EE_CBACK_DATA evt_data = {0};
+#if(NXP_EXTNS == TRUE)
+ nfa_ee_cb.ee_flags |= NFA_EE_HCI_CONN_CLOSE;
+#endif
+
if (p_cb->conn_st == NFA_EE_CONN_ST_CONN) {
p_cb->conn_st = NFA_EE_CONN_ST_DISC;
NFC_ConnClose(p_cb->conn_id);
@@ -2340,6 +2344,10 @@
p_cb->conn_st = NFA_EE_CONN_ST_NONE;
p_cb->p_ee_cback = NULL;
p_cb->conn_id = 0;
+
+#if(NXP_EXTNS == TRUE)
+ nfa_ee_cb.ee_flags &= ~NFA_EE_HCI_CONN_CLOSE;
+#endif
if (nfa_ee_cb.em_state == NFA_EE_EM_STATE_DISABLING) {
if (nfa_ee_cb.ee_flags & NFA_EE_FLAG_WAIT_DISCONN) {
if (nfa_ee_cb.num_ee_expecting) {
diff --git a/src/nfa/ee/nfa_ee_main.c b/src/nfa/ee/nfa_ee_main.c
index 21eefef..719c3a5 100644
--- a/src/nfa/ee/nfa_ee_main.c
+++ b/src/nfa/ee/nfa_ee_main.c
@@ -490,8 +490,20 @@
if (nfa_sys_is_graceful_disable()) {
/* Disconnect NCI connection on graceful shutdown */
msg.disconnect.p_cb = p_cb;
+#if(NXP_EXTNS == TRUE)
+ if(p_cb->conn_id == 0x03){
+ msg.conn.conn_id = p_cb->conn_id;
+ msg.conn.event = NFC_CONN_CLOSE_CEVT;
+ nfa_ee_nci_conn(&msg);
+ }
+ else{
+ nfa_ee_api_disconnect (&msg);
+ nfa_ee_cb.num_ee_expecting++;
+ }
+#else
nfa_ee_api_disconnect(&msg);
nfa_ee_cb.num_ee_expecting++;
+#endif
} else {
/* fake NFA_EE_DISCONNECT_EVT on ungraceful shutdown */
msg.conn.conn_id = p_cb->conn_id;
@@ -516,6 +528,22 @@
if (nfa_ee_cb.em_state == NFA_EE_EM_STATE_DISABLED)
nfa_sys_deregister(NFA_ID_EE);
}
+#if(NXP_EXTNS == TRUE)
+/*******************************************************************************
+**
+** Function nfa_ee_connectionClosed
+**
+** Description Check if EE's HCI connection is closed or not
+**
+** Returns EE connection closed status
+**
+*******************************************************************************/
+uint8_t nfa_ee_connectionClosed(void)
+{
+
+ return (!(nfa_ee_cb.ee_flags & NFA_EE_HCI_CONN_CLOSE));
+}
+#endif
/*******************************************************************************
**
diff --git a/src/nfa/hci/nfa_hci_main.c b/src/nfa/hci/nfa_hci_main.c
index 45d219b..11925fd 100644
--- a/src/nfa/hci/nfa_hci_main.c
+++ b/src/nfa/hci/nfa_hci_main.c
@@ -946,6 +946,13 @@
}
#endif
if (event == NFC_CONN_CREATE_CEVT) {
+#if(NXP_EXTNS == TRUE)
+ tNFA_EE_MSG p_msgdata;
+ p_msgdata.conn.conn_id = conn_id;
+ p_msgdata.conn.event = event;
+ p_msgdata.conn.p_data = p_data;
+ nfa_ee_nci_conn(&p_msgdata);
+#endif
nfa_hci_cb.conn_id = conn_id;
nfa_hci_cb.buff_size = p_data->conn_create.buff_size;
@@ -953,6 +960,12 @@
nfa_hci_cb.w4_hci_netwk_init = true;
nfa_hciu_alloc_gate(NFA_HCI_CONNECTIVITY_GATE, 0);
}
+#if(NXP_EXTNS == TRUE)
+ if (nfa_hci_cb.hci_state == NFA_HCI_STATE_DISABLED){
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
+ return;
+ }
+#endif
if (nfa_hci_cb.cfg.admin_gate.pipe01_state == NFA_HCI_PIPE_CLOSED) {
/* First step in initialization/restore is to open the admin pipe */
@@ -969,13 +982,21 @@
#endif
}
} else if (event == NFC_CONN_CLOSE_CEVT) {
- nfa_hci_cb.conn_id = 0;
- nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
- /* deregister message handler on NFA SYS */
- nfa_sys_deregister(NFA_ID_HCI);
-#if ((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == true))
- if (nfa_dm_cb.p_dm_cback)
- (*nfa_dm_cb.p_dm_cback)(NFA_DM_EE_HCI_DISABLE, NULL);
+ nfa_hci_cb.conn_id = 0;
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
+#if(NXP_EXTNS == TRUE)
+ if(nfa_ee_connectionClosed())
+#endif
+ /* deregister message handler on NFA SYS */
+ nfa_sys_deregister (NFA_ID_HCI);
+ NFA_TRACE_DEBUG0("NFC_CONN_CLOSE_CEVT handled");
+
+#if(NXP_EXTNS == TRUE)
+ tNFA_EE_MSG p_msgdata;
+ p_msgdata.conn.conn_id = conn_id;
+ p_msgdata.conn.event = event;
+ p_msgdata.conn.p_data = p_data;
+ nfa_ee_nci_conn(&p_msgdata);
#endif
}
diff --git a/src/nfa/int/nfa_ee_int.h b/src/nfa/int/nfa_ee_int.h
index 48f6523..5479faa 100644
--- a/src/nfa/int/nfa_ee_int.h
+++ b/src/nfa/int/nfa_ee_int.h
@@ -596,6 +596,9 @@
/* set this bit when NFC-DEP is configured in the routing table */
#define NFA_EE_FLAG_CFG_NFC_DEP 0x05
#endif
+#if(NXP_EXTNS == TRUE)
+#define NFA_EE_HCI_CONN_CLOSE 0x8
+#endif
typedef uint8_t tNFA_EE_FLAGS;
/* NFCEE DISCOVER in progress */
@@ -686,6 +689,7 @@
uint8_t NFA_check_p61_CL_Activated();
uint16_t nfa_ee_find_max_aid_config_length();
uint16_t nfa_ee_api_get_max_aid_config_length();
+extern uint8_t nfa_ee_connectionClosed();
#endif
uint8_t nfa_ee_ecb_to_mask(tNFA_EE_ECB* p_cb);
void nfa_ee_restore_one_ecb(tNFA_EE_ECB* p_cb);