NFC: Merge branch 'caf/caf/nxpnfc-project/br_android_ncihalx_n' into nfc.lnx.2.0-dev
* caf/caf/nxpnfc-project/br_android_ncihalx_n:
NFC_NCIHALx_ARC0.7.0.4_N_OpnSrc
Change-Id: Ib9bed1ab8c0fa640e5f5cebad6d22a268c3ab649
diff --git a/README.md b/README.md
index 579656e..6b716c7 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
####Git Repository
| DESCRIPTION | CHECKOUT COMMAND |
-|:-------------:|:-------------:|
+|:-------------:|:-------------:|
| NFC_NCIHAL_libnfc-nci | git clone https://github.com/NXPNFCProject/NFC_NCIHAL_libnfc-nci.git |
####Supported Versions on "master" Branch
@@ -26,4 +26,4 @@
| Android Version | NXP Release | NXP Tag |
| :-------------: |:-------------:| :-----:|
| android-7.0.0_r1 | 7.0.3_N (PN548C2/PN551) | NFC_NCIHALx_AR3C.7.0.3_N_OpnSrc |
-
+| android-7.0.0_r4 | 7.0.4_N (PN553) | NFC_NCIHALx_ARC0.7.0.4_N_OpnSrc |
diff --git a/README.md~ b/README.md~
new file mode 100644
index 0000000..ffa039d
--- /dev/null
+++ b/README.md~
@@ -0,0 +1,29 @@
+#NFC_NCIHAL_libnfc-nci
+
+####Git Repository
+
+| DESCRIPTION | CHECKOUT COMMAND |
+|:-------------:|:-------------:|
+| NFC_NCIHAL_libnfc-nci | git clone https://github.com/NXPNFCProject/NFC_NCIHAL_libnfc-nci.git |
+
+####Supported Versions on "master" Branch
+
+| Android Version | NXP Release | NXP Tag |
+| :-------------: |:-------------:| :-----:|
+| android-5.0.0_r1/android5.1.0_r1 | 3.5.0_L (PN547C2/PN548C2) | NFC_NCIHALx_AR0F.3.5.0_L_OpnSrc |
+
+####Supported Versions on "br_android_ncihalx_m" Branch
+
+| Android Version | NXP Release | NXP Tag |
+| :-------------: |:-------------:| :-----:|
+| android-6.0.0_r1 | 4.2.0_M (PN547C2/PN548C2) | NFC_NCIHALx_AR0F.4.2.0_M_OpnSrc |
+| android-6.0.0_r1 | 4.3.0_M (PN547C2/PN548C2) | NFC_NCIHALx_AR0F.4.3.0_M_OpnSrc |
+| android-6.0.1_r17 | 4.5.0_M (PN551/PN548C2) | NFC_NCIHALx_AR3C.4.5.0_M_OpnSrc |
+| android-6.0.1_r17 | 4.7.0_M (PN553) | NFC_NCIHALx_ARC0.4.7.0_M_OpnSrc |
+
+####Supported Versions on "br_android_ncihalx_n" Branch
+
+| Android Version | NXP Release | NXP Tag |
+| :-------------: |:-------------:| :-----:|
+| android-7.0.0_r1 | 7.0.3_N (PN548C2/PN551) | NFC_NCIHALx_AR3C.7.0.3_N_OpnSrc |
+| android-7.0.0_r4 | 7.0.4_N (PN553) | NFC_NCIHALx_AR3C.7.0.4_N_OpnSrc |
diff --git a/halimpl/pn54x/common/phNfcCommon.h b/halimpl/pn54x/common/phNfcCommon.h
index 667ab49..24d2231 100644
--- a/halimpl/pn54x/common/phNfcCommon.h
+++ b/halimpl/pn54x/common/phNfcCommon.h
@@ -78,7 +78,7 @@
#endif
/* HAL Version number (Updated as per release) */
#define NXP_MW_VERSION_MAJ (0U)
-#define NXP_MW_VERSION_MIN (3U)
+#define NXP_MW_VERSION_MIN (4U)
#define GET_EEPROM_DATA (1U)
#define SET_EEPROM_DATA (2U)
diff --git a/halimpl/pn54x/configs/NXP_NFCC_Features.h b/halimpl/pn54x/configs/NXP_NFCC_Features.h
index 8fd1857..76a23fd 100755
--- a/halimpl/pn54x/configs/NXP_NFCC_Features.h
+++ b/halimpl/pn54x/configs/NXP_NFCC_Features.h
@@ -26,10 +26,10 @@
//#define NXP_NFCC_FEATURE_1 TRUE
#define NXP_NFCC_MW_RCVRY_BLK_FW_DNLD TRUE
#define NXP_NFCC_FORCE_NCI1_0_INIT FALSE
-#elif(NFC_NXP_CHIP_TYPE == PN551)
+#define NXP_NFCC_ROUTING_BLOCK_BIT TRUE
+#elif((NFC_NXP_CHIP_TYPE == PN551)||(NFC_NXP_CHIP_TYPE == PN548C2))
#define NXP_NFCC_AID_MATCHING_PLATFORM_CONFIG TRUE
-#elif(NFC_NXP_CHIP_TYPE == PN548AD)
-#define NXP_NFCC_AID_MATCHING_PLATFORM_CONFIG TRUE
+#define NXP_NFCC_ROUTING_BLOCK_BIT_PROP TRUE
#elif(NFC_NXP_CHIP_TYPE == PN547C2)
#define NXP_NFCC_AID_MATCHING_PLATFORM_CONFIG TRUE
#endif
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
index 193fe49..ea72adc 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ b/halimpl/pn54x/hal/phNxpNciHal.c
@@ -1368,6 +1368,26 @@
mEEPROM_info.request_mode = GET_EEPROM_DATA;
request_EEPROM(&mEEPROM_info);
+#if(NFC_NXP_CHIP_TYPE!=PN547C2 && (NXP_NFCC_ROUTING_BLOCK_BIT_PROP==TRUE))
+ if(isNxpConfigModified() || (fw_dwnld_flag == 0x01))
+ {
+ uint8_t value;
+ retlen = 0;
+ if(GetNxpNumValue(NAME_NXP_PROP_BLACKLIST_ROUTING, (void *)&retlen, sizeof(retlen)))
+ {
+ if(retlen == 0x00 || retlen == 0x01)
+ {
+ value = (uint8_t)retlen;
+ mEEPROM_info.buffer = &value;
+ mEEPROM_info.bufflen = sizeof(value);
+ mEEPROM_info.request_type = EEPROM_PROP_ROUTING;
+ mEEPROM_info.request_mode = SET_EEPROM_DATA;
+ status = request_EEPROM(&mEEPROM_info);
+ }
+ }
+ }
+#endif
+
#if((NFC_NXP_CHIP_TYPE != PN547C2) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
if(isNxpConfigModified() || (fw_dwnld_flag == 0x01))
{
diff --git a/halimpl/pn54x/hal/phNxpNciHal.h b/halimpl/pn54x/hal/phNxpNciHal.h
index 62688e0..b85a295 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.h
+++ b/halimpl/pn54x/hal/phNxpNciHal.h
@@ -160,7 +160,8 @@
EEPROM_WIREDMODE_RESUME_ENABLE,
EEPROM_WIREDMODE_RESUME_TIMEOUT,
EEPROM_ESE_SVDD_POWER,
- EEPROM_ESE_POWER_EXT_PMU
+ EEPROM_ESE_POWER_EXT_PMU,
+ EEPROM_PROP_ROUTING
}phNxpNci_EEPROM_request_type_t;
typedef struct phNxpNci_EEPROM_info {
diff --git a/halimpl/pn54x/hal/phNxpNciHal_ext.c b/halimpl/pn54x/hal/phNxpNciHal_ext.c
index 5372eed..5939b56 100644
--- a/halimpl/pn54x/hal/phNxpNciHal_ext.c
+++ b/halimpl/pn54x/hal/phNxpNciHal_ext.c
@@ -1242,8 +1242,16 @@
addr[1] = 0xD7;
break;
+ case EEPROM_PROP_ROUTING:
+ b_position = 7;
+ memIndex = 0x00;
+ addr[0] = 0xA0;
+ addr[1] = 0x98;
+ break;
+
default:
ALOGE("No valid request information found");
+ break;
}
uint8_t get_cfg_eeprom[6] = {0x20, 0x03, //get_cfg header
diff --git a/halimpl/pn54x/libnfc-nxp-PN551_example.conf b/halimpl/pn54x/libnfc-nxp-PN551_example.conf
index d19d77c..9c4c68c 100644
--- a/halimpl/pn54x/libnfc-nxp-PN551_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN551_example.conf
@@ -325,3 +325,8 @@
# Disable 0x00
# Enable 0x01
NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
+###############################################################################
+# Restrict routing to first matched rule only.
+# Blacklist enable 0x01
+# Blacklist disable 0x00
+NXP_PROP_BLACKLIST_ROUTING=0x00
diff --git a/halimpl/pn54x/libnfc-nxp-PN553_example.conf b/halimpl/pn54x/libnfc-nxp-PN553_example.conf
index 6a44f3f..619d59e 100644
--- a/halimpl/pn54x/libnfc-nxp-PN553_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN553_example.conf
@@ -421,3 +421,9 @@
#Enable 0x01
#Disable 0x00
NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
+
+###############################################################################
+# Restrict routing to first matched rule only.
+# Blacklist enable 0x01
+# Blacklist disable 0x00
+NXP_PROP_BLACKLIST_ROUTING=0x00
diff --git a/halimpl/pn54x/libnfc-nxp-PN67T_example.conf b/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
index cb72506..cc551f1 100644
--- a/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
@@ -406,3 +406,9 @@
#Enable Passive Listen Timeout
# Maximum retry three times, Timeout in millisec
NXP_NFCC_PASSIVE_LISTEN_TIMEOUT=5000
+
+################################################################################
+# Restrict routing to first matched rule only.
+# Blacklist enable 0x01
+# Blacklist disable 0x00
+NXP_PROP_BLACKLIST_ROUTING=0x00
diff --git a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf b/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
index 6092b7d..a0947d1 100644
--- a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
@@ -450,3 +450,9 @@
# Disable 0x00
# Enable 0x01
NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT=0x00
+
+###############################################################################
+# Restrict routing to first matched rule only.
+# Blacklist enable 0x01
+# Blacklist disable 0x00
+NXP_PROP_BLACKLIST_ROUTING=0x00
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.h b/halimpl/pn54x/tml/phTmlNfc_i2c.h
index e84cc27..54b7fce 100644
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.h
+++ b/halimpl/pn54x/tml/phTmlNfc_i2c.h
@@ -80,12 +80,12 @@
#define P544_GET_ESE_ACCESS _IOW(PN544_MAGIC, 0x06, long)
/*
- NFC will call the ioctl to release the svdd protection
-*/
-#define P544_REL_SVDD_WAIT _IOW(PN544_MAGIC, 0x07, long)
-
-/*
NFC and SPI will call the ioctl to update the power scheme
*/
#define P544_SET_POWER_SCHEME _IOW(PN544_MAGIC, 0x07, long)
+
+/*
+ NFC will call the ioctl to release the svdd protection
+*/
+#define P544_REL_SVDD_WAIT _IOW(PN544_MAGIC, 0x08, long)
#endif
diff --git a/halimpl/pn54x/utils/phNxpConfig.h b/halimpl/pn54x/utils/phNxpConfig.h
index 68c040c..52486d0 100644
--- a/halimpl/pn54x/utils/phNxpConfig.h
+++ b/halimpl/pn54x/utils/phNxpConfig.h
@@ -104,6 +104,9 @@
#define NAME_NXP_TYPEA_UICC_BAUD_RATE "NXP_TYPEA_UICC_BAUD_RATE"
#define NAME_NXP_TYPEB_UICC_BAUD_RATE "NXP_TYPEB_UICC_BAUD_RATE"
#define NAME_NXP_SET_CONFIG_ALWAYS "NXP_SET_CONFIG_ALWAYS"
+#if((NFC_NXP_CHIP_TYPE!=PN547C2) && (NXP_NFCC_ROUTING_BLOCK_BIT_PROP==TRUE))
+#define NAME_NXP_PROP_BLACKLIST_ROUTING "NXP_PROP_BLACKLIST_ROUTING"
+#endif
#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"
diff --git a/src/include/NXP_NFCC_Features.h b/src/include/NXP_NFCC_Features.h
index e2aa360..2607b03 100755
--- a/src/include/NXP_NFCC_Features.h
+++ b/src/include/NXP_NFCC_Features.h
@@ -27,7 +27,9 @@
#define NXP_NFCC_MW_RCVRY_BLK_FW_DNLD TRUE
#define NXP_NFCC_DYNAMIC_DUAL_UICC TRUE
#define NXP_NFCC_FW_WA TRUE
-#elif(NFC_NXP_CHIP_TYPE==PN551)
+#define NXP_NFCC_ROUTING_BLOCK_BIT TRUE
+#elif((NFC_NXP_CHIP_TYPE == PN551)||(NFC_NXP_CHIP_TYPE == PN548C2))
#define NXP_NFCC_DYNAMIC_DUAL_UICC FALSE
+#define NXP_NFCC_ROUTING_BLOCK_BIT_PROP TRUE
#endif
#endif /* end of #ifndef NXP_NFCC_FEATURES_H */
diff --git a/src/include/config.h b/src/include/config.h
index 3c0d739..b7e0246 100644
--- a/src/include/config.h
+++ b/src/include/config.h
@@ -131,6 +131,9 @@
#define NAME_NFA_POLL_BAIL_OUT_MODE "NFA_POLL_BAIL_OUT_MODE"
#define NAME_NFA_PROPRIETARY_CFG "NFA_PROPRIETARY_CFG"
#if(NXP_EXTNS == TRUE)
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+#define NAME_NXP_PROP_BLACKLIST_ROUTING "NXP_PROP_BLACKLIST_ROUTING"
+#endif
#define NAME_NXP_NFCC_STANDBY_TIMEOUT "NXP_NFCC_STANDBY_TIMEOUT"
#define NAME_NXP_CP_TIMEOUT "NXP_CP_TIMEOUT"
#define NAME_NXP_CORE_SCRN_OFF_AUTONOMOUS_ENABLE "NXP_CORE_SCRN_OFF_AUTONOMOUS_ENABLE"
diff --git a/src/nfa/ce/nfa_ce_act.c b/src/nfa/ce/nfa_ce_act.c
index 5d23213..b75c507 100644
--- a/src/nfa/ce/nfa_ce_act.c
+++ b/src/nfa/ce/nfa_ce_act.c
@@ -354,7 +354,6 @@
UINT8_TO_STREAM (p_params, NCI_PARAM_LEN_LF_T3T_ID); /* length */
UINT16_TO_BE_STREAM (p_params, p_cb->listen_info[i].t3t_system_code); /* System Code */
ARRAY_TO_BE_STREAM (p_params, p_cb->listen_info[i].t3t_nfcid2, NCI_RF_F_UID_LEN);
-
/* Set mask for this ID */
t3t_flags2_mask &= ~((UINT16) (1<<t3t_idx));
t3t_idx++;
@@ -381,7 +380,12 @@
UINT16_TO_STREAM (p_params, t3t_flags2_mask); /* Mask of IDs to disable listening */
#endif
tlv_size = (UINT8) (p_params-tlv);
+
+ if(appl_dta_mode_flag == 0x01){
+ nfa_dm_cb.eDtaMode = NFA_DTA_HCEF_MODE;
+ }
nfa_dm_check_set_config (tlv_size, (UINT8 *)tlv, FALSE);
+
}
/*******************************************************************************
diff --git a/src/nfa/dm/nfa_dm_discover.c b/src/nfa/dm/nfa_dm_discover.c
index 8fb5185..1d77bd9 100644
--- a/src/nfa/dm/nfa_dm_discover.c
+++ b/src/nfa/dm/nfa_dm_discover.c
@@ -3057,7 +3057,6 @@
{
case NFA_DM_RF_INTF_ACTIVATED_NTF:
nfa_dm_disc_new_state (NFA_DM_RFST_LP_ACTIVE);
- nfa_dm_disc_notify_activation (&(p_data->nfc_discover));
if (nfa_dm_disc_notify_activation (&(p_data->nfc_discover)) == NFA_STATUS_FAILED)
{
NFA_TRACE_DEBUG0 ("Not matched, unexpected activation");
diff --git a/src/nfa/dm/nfa_dm_main.c b/src/nfa/dm/nfa_dm_main.c
index 22ca544..1dce30b 100644
--- a/src/nfa/dm/nfa_dm_main.c
+++ b/src/nfa/dm/nfa_dm_main.c
@@ -494,7 +494,7 @@
#endif
(updated_len || app_init)
#if(NXP_EXTNS == TRUE)
- && (appl_dta_mode_flag == 0x00 ))
+ && (appl_dta_mode_flag == 0x00 || nfa_dm_cb.eDtaMode == NFA_DTA_HCEF_MODE) )
|| ((appl_dta_mode_flag) && (app_init)))
#endif
{
@@ -507,6 +507,9 @@
#endif
if ((nfc_status = NFC_SetConfig (updated_len, p_tlv_list)) == NFC_STATUS_OK)
{
+ if(nfa_dm_cb.eDtaMode == NFA_DTA_HCEF_MODE){
+ nfa_dm_cb.eDtaMode = NFA_DTA_DEFAULT_MODE;
+ }
/* Keep track of whether we will need to notify NFA_DM_SET_CONFIG_EVT on NFC_SET_CONFIG_REVT */
/* Get the next available bit offset for this setconfig (based on how many SetConfigs are outstanding) */
diff --git a/src/nfa/ee/nfa_ee_act.c b/src/nfa/ee/nfa_ee_act.c
index a87c3e0..0ef43a8 100644
--- a/src/nfa/ee/nfa_ee_act.c
+++ b/src/nfa/ee/nfa_ee_act.c
@@ -1007,8 +1007,6 @@
tNFA_EE_ECB *p_cb = nfa_ee_cb.ecb;
for (xx = 0; xx < NFA_EE_MAX_EE_SUPPORTED; xx++, p_cb++)
{
-
-
#if((NXP_EXTNS == TRUE) && (((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE)))
memset(&p_cb->aid_cfg[0],0x00, max_aid_config_length);
memset(&p_cb->aid_len[0], 0x00, max_aid_entries);
@@ -1027,7 +1025,7 @@
tNFA_EE_ECB *p_ecb = &nfa_ee_cb.ecb[NFA_EE_CB_4_DH];
#if((NXP_EXTNS == TRUE) && (((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE)))
- memset(&p_cb->aid_cfg[0],0x00, max_aid_config_length);
+ memset(&p_ecb->aid_cfg[0],0x00, max_aid_config_length);
memset(&p_ecb->aid_len[0], 0x00, max_aid_entries);
memset(&p_ecb->aid_pwr_cfg[0], 0x00, max_aid_entries);
memset(&p_ecb->aid_rt_info[0], 0x00, max_aid_entries);
@@ -1591,11 +1589,14 @@
}
}
#if(NXP_EXTNS == TRUE)
- if((nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_NETWK_ENABLE)&&(p_cb->ee_status != NFA_EE_STATUS_ACTIVE))
+ if(p_cb)
{
- NFA_TRACE_DEBUG2 ("nfa_ee_nci_disc_ntf hci_state : 0x%02x ee_status : 0x%02x",nfa_hci_cb.hci_state,p_cb->ee_status);
- nfa_sys_stop_timer (&nfa_hci_cb.timer);
- nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, 150);
+ if((nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_NETWK_ENABLE)&&(p_cb->ee_status != NFA_EE_STATUS_ACTIVE))
+ {
+ NFA_TRACE_DEBUG2 ("nfa_ee_nci_disc_ntf hci_state : 0x%02x ee_status : 0x%02x",nfa_hci_cb.hci_state,p_cb->ee_status);
+ nfa_sys_stop_timer (&nfa_hci_cb.timer);
+ nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, 150);
+ }
}
#endif
}
@@ -2331,7 +2332,23 @@
UINT8 *p_start;
UINT8 new_size;
tNFA_STATUS status = NFA_STATUS_OK;
-
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+ UINT8 value=0x00;
+ long retlen = 0;
+ NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING enter=0x%x",value);
+ if(GetNumValue(NAME_NXP_PROP_BLACKLIST_ROUTING, (void *)&retlen, sizeof(retlen)))
+ {
+ if(retlen == 0x01)
+ {
+ value =NFA_EE_NXP_ROUTE_BLOCK_BIT;
+ NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING change=0x%x",value);
+ }
+ else
+ {
+ NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING exit=0x%x",value);
+ }
+ }
+#endif
nfa_ee_check_set_routing (p_cb->size_mask, p_max_len, ps, p_cur_offset);
max_tlv = (UINT8)((*p_max_len > NFA_EE_ROUT_MAX_TLV_SIZE)?NFA_EE_ROUT_MAX_TLV_SIZE:*p_max_len);
/* use the first byte of the buffer (ps) to keep the num_tlv */
@@ -2359,12 +2376,19 @@
pa ++; /* EMV tag */
len = *pa++; /* aid_len */
if(p_cb->aid_rt_info[xx] & NFA_EE_AE_NXP_PREFIX_MATCH) {
- //This aid is for prefix match.
- *pp++ = NFC_ROUTE_TAG_AID|NFA_EE_AE_NXP_PREFIX_MATCH;
+ //This aid is for prefix match.
+ *pp = NFC_ROUTE_TAG_AID|NFA_EE_AE_NXP_PREFIX_MATCH;
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+ *pp |= (NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00;
+#endif
} else {
- //This aid is for exact match.
- *pp++ = NFC_ROUTE_TAG_AID;
+ //This aid is for exact match.
+ *pp = NFC_ROUTE_TAG_AID;
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+ *pp |= (NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00;
+#endif
}
+ *pp++;
*pp++ = len + 2;
*pp++ = p_cb->aid_rt_loc[xx];
*pp++ = p_cb->aid_pwr_cfg[xx];
@@ -2424,7 +2448,15 @@
}
if (power_cfg)
{
- *proto_pp++ = NFC_ROUTE_TAG_PROTO;
+ *proto_pp = NFC_ROUTE_TAG_PROTO;
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+ /*Setting blocking bit for ISO-DEP and ISO7816 protocol only*/
+ if(nfa_ee_proto_list[xx]==NFC_PROTOCOL_ISO_DEP || nfa_ee_proto_list[xx] == NFC_PROTOCOL_ISO7816)
+ {
+ *proto_pp |= (NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00;
+ }
+#endif
+ *proto_pp++;
*proto_pp++ = 3;
*proto_pp++ = p_cb->nfcee_id;
*proto_pp++ = power_cfg;
@@ -2454,6 +2486,7 @@
*proto_pp++ = NFC_PROTOCOL_NFC_DEP;
proto_tlv_ctr++;
}
+
/* store the Technology based routing entries in temporary buffer */
for (xx = 0; xx < NFA_EE_NUM_TECH; xx++)
{
@@ -2549,7 +2582,15 @@
if (power_cfg)
{
- *pp++ = NFC_ROUTE_TAG_PROTO;
+ *pp = NFC_ROUTE_TAG_PROTO;
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+ /*Setting blocking bit for ISO-DEP and ISO7816 protocol only*/
+ if(nfa_ee_proto_list[xx]==NFC_PROTOCOL_ISO_DEP || nfa_ee_proto_list[xx] == NFC_PROTOCOL_ISO7816)
+ {
+ *pp |= (NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00;
+ }
+#endif
+ *pp++;
*pp++ = 3;
*pp++ = p_cb->nfcee_id;
*pp++ = power_cfg;
@@ -2607,11 +2648,15 @@
len = *pa++; /* aid_len */
#if(NXP_EXTNS == TRUE)
if(p_cb->aid_rt_info[xx] & NFA_EE_AE_NXP_PREFIX_MATCH) {
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==FALSE)
//This aid is for prefix match.
- *pp++ = NFC_ROUTE_TAG_AID|NFA_EE_AE_NXP_PREFIX_MATCH;
+ *pp++ = (NFC_ROUTE_TAG_AID|NFA_EE_AE_NXP_PREFIX_MATCH)|((NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00);
+#endif
} else {
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==FALSE)
//This aid is for exact match.
- *pp++ = NFC_ROUTE_TAG_AID;
+ *pp++ = NFC_ROUTE_TAG_AID|((NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00);
+#endif
}
#else
*pp++ = NFC_ROUTE_TAG_AID;
diff --git a/src/nfa/hci/nfa_hci_act.c b/src/nfa/hci/nfa_hci_act.c
index ba1f294..bfd5081 100644
--- a/src/nfa/hci/nfa_hci_act.c
+++ b/src/nfa/hci/nfa_hci_act.c
@@ -2712,6 +2712,11 @@
{
case NFA_HCI_ANY_OPEN_PIPE:
NFA_TRACE_DEBUG0 ("nfa_hci_handle_Nfcee_dynpipe_rsp - Response received open Pipe get the Gate List on Id Gate!!!");
+ if(!p_pipe)
+ {
+ NFA_TRACE_ERROR1 ("nfa_hci_handle_Nfcee_dynpipe_rsp - NULL pipe for PipeId %d",pipeId);
+ break;
+ }
if((p_pipe-> dest_gate == NFA_HCI_IDENTITY_MANAGEMENT_GATE )&&(p_pipe-> local_gate == NFA_HCI_IDENTITY_MANAGEMENT_GATE))
{
nfa_hciu_send_get_param_cmd (pipeId, NFA_HCI_GATES_LIST_INDEX);
diff --git a/src/nfa/hci/nfa_hci_main.c b/src/nfa/hci/nfa_hci_main.c
index 3329eb9..d4fcaad 100644
--- a/src/nfa/hci/nfa_hci_main.c
+++ b/src/nfa/hci/nfa_hci_main.c
@@ -634,9 +634,7 @@
nfa_hciu_send_to_all_apps (NFA_HCI_INIT_EVT, &evt_data);
nfa_sys_cback_notify_enable_complete (NFA_ID_HCI);
}
-#if((NXP_EXTNS == TRUE)&& \
-((NFC_NXP_CHIP_TYPE==PN551)||(NFC_NXP_CHIP_TYPE==PN553))&& \
-(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
+#if((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
if (status == NFA_STATUS_OK){
nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
NFA_TRACE_EVENT0 ("hci_state = NFA_HCI_STATE_IDLE");
@@ -854,9 +852,7 @@
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_CHIP_TYPE==PN551)||(NFC_NXP_CHIP_TYPE==PN553))&& \
-(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
+#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);
#endif
diff --git a/src/nfa/include/nfa_api.h b/src/nfa/include/nfa_api.h
index 6caac62..fe32186 100644
--- a/src/nfa/include/nfa_api.h
+++ b/src/nfa/include/nfa_api.h
@@ -57,7 +57,7 @@
** Constants and data types
*****************************************************************************/
-/* Max length of Appliction ID in 7816-4 */
+/* Max length of Application ID in 7816-4 */
#define NFA_MAX_AID_LEN NFC_MAX_AID_LEN
#define NFA_MIN_AID_LEN 5 /* per NCI specification */
@@ -278,7 +278,8 @@
{
NFA_DTA_DEFAULT_MODE=0,
NFA_DTA_LLCP_MODE,
- NFA_DTA_SNEP_MODE
+ NFA_DTA_SNEP_MODE,
+ NFA_DTA_HCEF_MODE
}tNFA_eDtaModes;
typedef struct
{
diff --git a/src/nfa/include/nfa_ee_api.h b/src/nfa/include/nfa_ee_api.h
index 9e27b71..6b17bce 100644
--- a/src/nfa/include/nfa_ee_api.h
+++ b/src/nfa/include/nfa_ee_api.h
@@ -57,6 +57,9 @@
extern UINT8 nfa_ee_ce_route_strict_disable;
extern UINT8 nfa_ee_ce_p61_active;
#define NFA_EE_AE_NXP_PREFIX_MATCH (0x10)
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+#define NFA_EE_NXP_ROUTE_BLOCK_BIT (0x40)
+#endif
#endif
/* NFA EE callback events */
diff --git a/src/nfc/include/nfc_api.h b/src/nfc/include/nfc_api.h
index 62911c9..b7abd71 100644
--- a/src/nfc/include/nfc_api.h
+++ b/src/nfc/include/nfc_api.h
@@ -83,15 +83,15 @@
//DTA API for MW Version need to change according to release
#define NXP_EN_PN547C2 0
#define NXP_EN_PN65T 0
-#define NXP_EN_PN548C2 1
-#define NXP_EN_PN66T 1
-#define NXP_EN_PN551 1
-#define NXP_EN_PN67T 1
-#define NXP_EN_PN553 0
-#define NXP_EN_PN80T 0
+#define NXP_EN_PN548C2 0
+#define NXP_EN_PN66T 0
+#define NXP_EN_PN551 0
+#define NXP_EN_PN67T 0
+#define NXP_EN_PN553 1
+#define NXP_EN_PN80T 1
#define NXP_ANDROID_VER (7U) /* NXP android version */
#define NFC_NXP_MW_VERSION_MAJ (0U) /* MW Major Version */
-#define NFC_NXP_MW_VERSION_MIN (3U) /* MW Minor Version */
+#define NFC_NXP_MW_VERSION_MIN (4U) /* MW Minor Version */
#endif
/* 0xE0 ~0xFF are proprietary status codes */
#define NFC_STATUS_CMD_STARTED 0xE3/* Command started successfully */
diff --git a/src/nfc/llcp/llcp_link.c b/src/nfc/llcp/llcp_link.c
index 6c5fd06..a5543d4 100644
--- a/src/nfc/llcp/llcp_link.c
+++ b/src/nfc/llcp/llcp_link.c
@@ -455,8 +455,13 @@
llcp_cb.overall_tx_congested = FALSE;
llcp_cb.overall_rx_congested = FALSE;
+ /*As per the LLCP test specification v1.2.00 for test case TC_LLC_TAR_BV_04
+ * the receiving LLC shall commence sending an LLC PDU to the remote
+ * LLC. So, after IUT receiving DISC PDU from LT(remote device), IUT shall send DISC PDU to LT.
+ * appl_dta_mode_flag condition is added to fulfill above requirement*/
if ( (reason == LLCP_LINK_FRAME_ERROR)
- ||(reason == LLCP_LINK_LOCAL_INITIATED) )
+ ||(reason == LLCP_LINK_LOCAL_INITIATED)
+ || ((appl_dta_mode_flag) && (reason == LLCP_LINK_REMOTE_INITIATED) && (llcp_cb.lcb.is_initiator == FALSE)))
{
/* get rid of the data pending in NFC tx queue, so DISC PDU can be sent ASAP */
NFC_FlushData (NFC_RF_CONN_ID);