Redefining NXP_DEFAULT_SE to support combinations of secure elements
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
index 111aec8..f11d46b 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ b/halimpl/pn54x/hal/phNxpNciHal.c
@@ -2522,6 +2522,7 @@
uint8_t numPrms = 0;
uint8_t ptr = 4;
unsigned long uiccListenMask = 0x00;
+ unsigned long eseListenMask = 0x00;
if (!(GetNxpNumValue(NAME_NXP_UICC_LISTEN_TECH_MASK, &uiccListenMask,
sizeof(uiccListenMask)))) {
@@ -2529,6 +2530,12 @@
NXPLOG_NCIHAL_D("UICC_LISTEN_TECH_MASK = 0x%0lX", uiccListenMask);
}
+ if (!(GetNxpNumValue(NAME_NXP_ESE_LISTEN_TECH_MASK, &eseListenMask,
+ sizeof(eseListenMask)))) {
+ eseListenMask = 0x07;
+ NXPLOG_NCIHAL_D ("NXP_ESE_LISTEN_TECH_MASK = 0x%0lX", eseListenMask);
+ }
+
if (nxpncihal_ctrl.hal_boot_mode == NFC_FAST_BOOT_MODE) {
NXPLOG_NCIHAL_E(" HAL NFC fast init mode calling min_close %d",
nxpncihal_ctrl.hal_boot_mode);
@@ -2553,21 +2560,21 @@
goto close_and_return;
}
- if ((uiccListenMask & 0x1) == 0x01) {
+ if((uiccListenMask & 0x1) == 0x01 || (eseListenMask & 0x1) == 0x01) {
NXPLOG_NCIHAL_D("phNxpNciHal_close (): Adding A passive listen");
numPrms++;
cmd_ce_discovery_nci[ptr++] = 0x80;
cmd_ce_discovery_nci[ptr++] = 0x01;
length += 2;
}
- if ((uiccListenMask & 0x2) == 0x02) {
+ if((uiccListenMask & 0x2) == 0x02 || (eseListenMask & 0x4) == 0x02) {
NXPLOG_NCIHAL_D("phNxpNciHal_close (): Adding B passive listen");
numPrms++;
cmd_ce_discovery_nci[ptr++] = 0x81;
cmd_ce_discovery_nci[ptr++] = 0x01;
length += 2;
}
- if ((uiccListenMask & 0x4) == 0x04) {
+ if((uiccListenMask & 0x4) == 0x04 || (eseListenMask & 0x4) == 0x04) {
NXPLOG_NCIHAL_D("phNxpNciHal_close (): Adding F passive listen");
numPrms++;
cmd_ce_discovery_nci[ptr++] = 0x82;
diff --git a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf b/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
index 6b41827..a5392dc 100644
--- a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
@@ -118,6 +118,12 @@
NXP_DEFAULT_SE=0x07
###############################################################################
+# Force ESE to only listen to the following technology(s).
+# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
+# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
+NXP_ESE_LISTEN_TECH_MASK=0x07
+
+###############################################################################
#set autonomous mode
# disable autonomous 0x00
# enable autonomous 0x01
diff --git a/halimpl/pn54x/utils/phNxpConfig.cpp b/halimpl/pn54x/utils/phNxpConfig.cpp
index 5bb57ae..2908bca 100644
--- a/halimpl/pn54x/utils/phNxpConfig.cpp
+++ b/halimpl/pn54x/utils/phNxpConfig.cpp
@@ -703,6 +703,7 @@
if ((token.find("P2P_LISTEN_TECH_MASK") != std::string::npos) ||
(token.find("HOST_LISTEN_TECH_MASK") != std::string::npos) ||
(token.find("UICC_LISTEN_TECH_MASK") != std::string::npos) ||
+ (token.find("NXP_ESE_LISTEN_TECH_MASK") != std::string::npos) ||
(token.find("POLLING_TECH_MASK") != std::string::npos) ||
(token.find("NXP_RF_CONF_BLK") != std::string::npos) ||
(token.find("NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE") !=
diff --git a/halimpl/pn54x/utils/phNxpConfig.h b/halimpl/pn54x/utils/phNxpConfig.h
index 3c9714e..fcb1f25 100644
--- a/halimpl/pn54x/utils/phNxpConfig.h
+++ b/halimpl/pn54x/utils/phNxpConfig.h
@@ -105,7 +105,7 @@
#define NAME_NXP_PROP_BLACKLIST_ROUTING "NXP_PROP_BLACKLIST_ROUTING"
#define NAME_NXP_WIREDMODE_RESUME_TIMEOUT "NXP_WIREDMODE_RESUME_TIMEOUT"
#define NAME_NXP_UICC_LISTEN_TECH_MASK "UICC_LISTEN_TECH_MASK"
-#define NAME_NXP_HOST_LISTEN_TECH_MASK "HOST_LISTEN_TECH_MASK"
+#define NAME_NXP_ESE_LISTEN_TECH_MASK "NXP_ESE_LISTEN_TECH_MASK"
#define NAME_NXP_SVDD_SYNC_OFF_DELAY "NXP_SVDD_SYNC_OFF_DELAY"
#define NAME_NXP_CORE_PROP_SYSTEM_DEBUG "NXP_CORE_PROP_SYSTEM_DEBUG"
diff --git a/src/adaptation/config.cpp b/src/adaptation/config.cpp
index 5f2cb3d..c3fb02b 100644
--- a/src/adaptation/config.cpp
+++ b/src/adaptation/config.cpp
@@ -624,6 +624,7 @@
if ((token.find("P2P_LISTEN_TECH_MASK") != std::string::npos) ||
(token.find("HOST_LISTEN_TECH_MASK") != std::string::npos) ||
(token.find("UICC_LISTEN_TECH_MASK") != std::string::npos) ||
+ (token.find("NXP_ESE_LISTEN_TECH_MASK") != std::string::npos) ||
(token.find("POLLING_TECH_MASK") != std::string::npos) ||
(token.find("NXP_RF_CONF_BLK") != std::string::npos) ||
(token.find("NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE") !=
diff --git a/src/include/config.h b/src/include/config.h
index 2e6cf2f..40185cc 100644
--- a/src/include/config.h
+++ b/src/include/config.h
@@ -101,6 +101,7 @@
#define NAME_HOST_LISTEN_TECH_MASK "HOST_LISTEN_TECH_MASK"
#define NAME_DEFAULT_FELICA_CLT_ROUTE "DEFAULT_FELICA_CLT_ROUTE"
#define NAME_DEFAULT_FELICA_CLT_PWR_STATE "DEFAULT_FELICA_CLT_PWR_STATE"
+#define NAME_NXP_ESE_LISTEN_TECH_MASK "NXP_ESE_LISTEN_TECH_MASK"
#endif
#define NAME_DEFAULT_OFFHOST_ROUTE "DEFAULT_OFFHOST_ROUTE"
#define NAME_SNOOZE_MODE_CFG "SNOOZE_MODE_CFG"
@@ -130,6 +131,7 @@
#define NAME_NFA_POLL_BAIL_OUT_MODE "NFA_POLL_BAIL_OUT_MODE"
#define NAME_NFA_PROPRIETARY_CFG "NFA_PROPRIETARY_CFG"
#if (NXP_EXTNS == TRUE)
+#define NAME_NXP_ESE_LISTEN_TECH_MASK "NXP_ESE_LISTEN_TECH_MASK"
#define NAME_NXP_WM_MAX_WTX_COUNT "NXP_WM_MAX_WTX_COUNT"
#define NAME_NXP_NFCC_STANDBY_TIMEOUT "NXP_NFCC_STANDBY_TIMEOUT"
#define NAME_NXP_CP_TIMEOUT "NXP_CP_TIMEOUT"
diff --git a/src/nfa/dm/nfa_dm_discover.c b/src/nfa/dm/nfa_dm_discover.c
index 823d877..13593eb 100644
--- a/src/nfa/dm/nfa_dm_discover.c
+++ b/src/nfa/dm/nfa_dm_discover.c
@@ -1153,6 +1153,7 @@
unsigned long fwdEnable = 0x00;
unsigned long hostListenMask = 0x00;
unsigned long uiccListenMask = 0x00;
+ unsigned long eseListenMask = 0x00;
unsigned long p2pListenMask = 0x00;
NFA_TRACE_DEBUG0("nfa_dm_start_rf_discover (): enter");
@@ -1304,6 +1305,11 @@
NFA_TRACE_DEBUG2("%s:UICC_LISTEN_TECH_MASK = 0x0%X;", __func__,
uiccListenMask);
}
+ if (GetNumValue(NAME_NXP_ESE_LISTEN_TECH_MASK, &eseListenMask,
+ sizeof(eseListenMask))) {
+ NFA_TRACE_DEBUG2("%s:NXP_ESE_LISTEN_TECH_MASK = 0x0%X;", __func__,
+ eseListenMask);
+ }
if (GetNumValue(NAME_P2P_LISTEN_TECH_MASK, &p2pListenMask,
sizeof(p2pListenMask))) {
NFA_TRACE_DEBUG2("%s:P2P_LISTEN_TECH_MASK = 0x0%X;", __func__,
@@ -1356,19 +1362,19 @@
}
#if (NXP_EXTNS == TRUE)
NFA_TRACE_DEBUG1("dm_disc_mask before masking = 0x%x", dm_disc_mask);
- if (((hostListenMask & 0x1) == 0x0) && ((uiccListenMask & 0x1) == 0x0)) {
+ if (((hostListenMask & 0x1) == 0x0) && ((uiccListenMask & 0x1) == 0x0) && ((eseListenMask & 0x1) == 0x0)) {
NFA_TRACE_DEBUG0(
"nfa_dm_start_rf_discover (): try removing A passive listen for "
"ISO-DEP");
dm_disc_mask &= ~(NFA_DM_DISC_MASK_LA_ISO_DEP);
}
- if (((hostListenMask & 0x2) == 0x0) && ((uiccListenMask & 0x2) == 0x0)) {
+ if (((hostListenMask & 0x2) == 0x0) && ((uiccListenMask & 0x2) == 0x0) && ((eseListenMask & 0x2) == 0x0)) {
NFA_TRACE_DEBUG0(
"nfa_dm_start_rf_discover (): try removing B passive listen for "
"ISO-DEP");
dm_disc_mask &= ~(NFA_DM_DISC_MASK_LB_ISO_DEP);
}
- if (((hostListenMask & 0x4) == 0x0) && ((uiccListenMask & 0x4) == 0x0)) {
+ if (((hostListenMask & 0x4) == 0x0) && ((uiccListenMask & 0x4) == 0x0) && ((eseListenMask & 0x4) == 0x0)) {
NFA_TRACE_DEBUG0(
"nfa_dm_start_rf_discover (): try removing F passive listen for T3T");
dm_disc_mask &= ~(NFA_DM_DISC_MASK_LF_T3T);