NFC_NCIHALx_ARFC.7.1.0_N_OpnSrc
diff --git a/Android.mk b/Android.mk
index d7c0972..28c22be 100644
--- a/Android.mk
+++ b/Android.mk
@@ -13,7 +13,6 @@
#Enable NXP Specific
D_CFLAGS += -DNXP_EXTNS=TRUE
-D_CFLAGS += -DNFC_NXP_STAT_DUAL_UICC_EXT_SWITCH=TRUE
D_CFLAGS += -DNFC_NXP_AID_MAX_SIZE_DYN=TRUE
#Enable HCE-F specific
@@ -42,15 +41,17 @@
JCOP_VER_3_1 := 1
JCOP_VER_3_2 := 2
JCOP_VER_3_3 := 3
+JCOP_VER_4_0 := 4
LOCAL_CFLAGS += -DJCOP_VER_3_1=$(JCOP_VER_3_1)
LOCAL_CFLAGS += -DJCOP_VER_3_2=$(JCOP_VER_3_2)
LOCAL_CFLAGS += -DJCOP_VER_3_3=$(JCOP_VER_3_3)
+LOCAL_CFLAGS += -DJCOP_VER_4_0=$(JCOP_VER_4_0)
NFC_NXP_ESE:= TRUE
ifeq ($(NFC_NXP_ESE),TRUE)
LOCAL_CFLAGS += -DNFC_NXP_ESE=TRUE
-LOCAL_CFLAGS += -DNFC_NXP_ESE_VER=$(JCOP_VER_3_3)
+LOCAL_CFLAGS += -DNFC_NXP_ESE_VER=$(JCOP_VER_4_0)
else
LOCAL_CFLAGS += -DNFC_NXP_ESE=FALSE
endif
@@ -68,10 +69,11 @@
D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN553
endif
-#Gemalto SE support
-D_CFLAGS += -DGEMALTO_SE_SUPPORT
-D_CFLAGS += -DNXP_UICC_ENABLE
+ifeq ($(NXP_CHIP_TYPE),$(PN553))
D_CFLAGS += -DJCOP_WA_ENABLE=FALSE
+else
+D_CFLAGS += -DJCOP_WA_ENABLE=TRUE
+endif
#Routing Entries optimization
D_CFLAGS += -DNFC_NXP_LISTEN_ROUTE_TBL_OPTIMIZATION=TRUE
@@ -79,7 +81,11 @@
# Build shared library system/lib/libnfc-nci.so for stack code.
LOCAL_ARM_MODE := arm
-###LOCAL_MULTILIB := 64
+ifeq (true,$(TARGET_IS_64_BIT))
+LOCAL_MULTILIB := 64
+else
+LOCAL_MULTILIB := 32
+endif
LOCAL_MODULE := libnfc-nci
LOCAL_SHARED_LIBRARIES := libhardware_legacy libcutils liblog libdl libhardware
LOCAL_CFLAGS += $(D_CFLAGS)
diff --git a/halimpl/pn54x/Android.mk b/halimpl/pn54x/Android.mk
index d24299b..e47bde8 100644
--- a/halimpl/pn54x/Android.mk
+++ b/halimpl/pn54x/Android.mk
@@ -20,7 +20,6 @@
#Enable NXP Specific
D_CFLAGS += -DNXP_EXTNS=TRUE
-D_CFLAGS += -DJCOP_WA_ENABLE=FALSE
#variables for NFC_NXP_CHIP_TYPE
PN547C2 := 1
@@ -74,7 +73,11 @@
else ifeq ($(NXP_CHIP_TYPE),$(PN553))
LOCAL_MODULE := nfc_nci.pn54x.default
endif
-###LOCAL_MULTILIB :=64
+ifeq (true,$(TARGET_IS_64_BIT))
+LOCAL_MULTILIB := 64
+else
+LOCAL_MULTILIB := 32
+endif
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := $(call all-subdir-c-files) $(call all-subdir-cpp-files)
LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware_legacy libdl
@@ -92,9 +95,19 @@
$(LOCAL_PATH)/self-test
LOCAL_CFLAGS += -DANDROID \
- -DNXP_UICC_ENABLE -DNXP_HW_SELF_TEST
+ -DNXP_HW_SELF_TEST
LOCAL_CFLAGS += -DNFC_NXP_HFO_SETTINGS=FALSE
-LOCAL_CFLAGS += -DNFC_NXP_ESE=TRUE
+NFC_NXP_ESE:= TRUE
+ifeq ($(NFC_NXP_ESE),TRUE)
+D_CFLAGS += -DNFC_NXP_ESE=TRUE
+ifeq ($(NXP_CHIP_TYPE),$(PN553))
+D_CFLAGS += -DJCOP_WA_ENABLE=FALSE
+else
+D_CFLAGS += -DJCOP_WA_ENABLE=TRUE
+endif
+else
+D_CFLAGS += -DNFC_NXP_ESE=FALSE
+endif
LOCAL_CFLAGS += $(D_CFLAGS)
#LOCAL_CFLAGS += -DFELICA_CLT_ENABLE
#-DNXP_PN547C1_DOWNLOAD
diff --git a/halimpl/pn54x/common/phNfcCommon.h b/halimpl/pn54x/common/phNfcCommon.h
index 24d2231..3514fbb 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 (4U)
+#define NXP_MW_VERSION_MIN (0x0D)
#define GET_EEPROM_DATA (1U)
#define SET_EEPROM_DATA (2U)
diff --git a/halimpl/pn54x/configs/NXP_ESE_Features.h b/halimpl/pn54x/configs/NXP_ESE_Features.h
index 640ed8d..34e4d5c 100755
--- a/halimpl/pn54x/configs/NXP_ESE_Features.h
+++ b/halimpl/pn54x/configs/NXP_ESE_Features.h
@@ -33,6 +33,7 @@
#if(NFC_NXP_CHIP_TYPE == PN547C2)
#define NXP_ESE_WIRED_MODE_DISABLE_DISCOVERY TRUE
+#define NXP_LEGACY_APDU_GATE TRUE
#elif((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
#define NFC_NXP_TRIPLE_MODE_PROTECTION TRUE
@@ -42,6 +43,11 @@
#define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
//Reset scheme
#define NXP_ESE_RESET_METHOD FALSE
+ #define NXP_ESE_ETSI_READER_ENABLE TRUE
+ #define NXP_ESE_SVDD_SYNC TRUE
+ #define NXP_LEGACY_APDU_GATE TRUE
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION TRUE
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION FALSE
#elif(NFC_NXP_CHIP_TYPE == PN553)
#define NFC_NXP_TRIPLE_MODE_PROTECTION FALSE
@@ -49,19 +55,25 @@
#define NXP_ESE_WIRED_MODE_PRIO FALSE
#define NXP_ESE_UICC_EXCLUSIVE_WIRED_MODE FALSE // UICC exclusive wired mode
//dual mode prio scheme
- #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
+ #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_RESUME
//reset scheme
#define NXP_ESE_RESET_METHOD TRUE
#define NXP_ESE_POWER_MODE TRUE
#define NXP_ESE_P73_ISO_RST TRUE
#define NXP_BLOCK_PROPRIETARY_APDU_GATE FALSE
#define NXP_WIRED_MODE_STANDBY TRUE
+ #define NXP_ESE_ETSI_READER_ENABLE TRUE
+ #define NXP_ESE_SVDD_SYNC FALSE
+ #define NXP_LEGACY_APDU_GATE FALSE
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION FALSE
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION TRUE
#endif
#else /*Else of #if(NFC_NXP_ESE == TRUE)*/
#if(NFC_NXP_CHIP_TYPE == PN547C2)
-#define NXP_ESE_WIRED_MODE_DISABLE_DISCOVERY FALSE
+#define NXP_ESE_WIRED_MODE_DISABLE_DISCOVERY FALSE
+#define NXP_LEGACY_APDU_GATE FALSE
#endif
#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
@@ -70,18 +82,30 @@
#define NXP_ESE_FELICA_CLT FALSE
//Reset scheme
#define NXP_ESE_RESET_METHOD FALSE
+ #define NXP_ESE_ETSI_READER_ENABLE FALSE
+ #define NXP_ESE_SVDD_SYNC FALSE
+ #define NXP_LEGACY_APDU_GATE FALSE
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION FALSE
+ #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION FALSE
#elif(NFC_NXP_CHIP_TYPE == PN553)
#define NFC_NXP_TRIPLE_MODE_PROTECTION FALSE
- #define NXP_ESE_FELICA_CLT FALSE
- #define NXP_ESE_WIRED_MODE_PRIO FALSE //eSE wired mode prio over UICC wired mode
- #define NXP_ESE_UICC_EXCLUSIVE_WIRED_MODE FALSE // UICC exclusive wired mode
+ #define NXP_ESE_FELICA_CLT FALSE
+ #define NXP_ESE_WIRED_MODE_PRIO FALSE //eSE wired mode prio over UICC wired mode
+ #define NXP_ESE_UICC_EXCLUSIVE_WIRED_MODE FALSE // UICC exclusive wired mode
//reset scheme
#define NXP_ESE_RESET_METHOD FALSE
#define NXP_ESE_POWER_MODE FALSE
#define NXP_ESE_P73_ISO_RST FALSE
#define NXP_BLOCK_PROPRIETARY_APDU_GATE FALSE
#define NXP_WIRED_MODE_STANDBY FALSE
+ #define NXP_ESE_ETSI_READER_ENABLE FALSE
+ #define NXP_ESE_SVDD_SYNC FALSE
+ #define NXP_LEGACY_APDU_GATE FALSE
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION FALSE
+ #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION FALSE
#endif
#endif /*End of #if(NFC_NXP_ESE == TRUE)*/
diff --git a/halimpl/pn54x/configs/NXP_NFCC_Features.h b/halimpl/pn54x/configs/NXP_NFCC_Features.h
index 76a23fd..0217d28 100755
--- a/halimpl/pn54x/configs/NXP_NFCC_Features.h
+++ b/halimpl/pn54x/configs/NXP_NFCC_Features.h
@@ -20,17 +20,39 @@
#ifndef NXP_NFCC_FEATURES_H
#define NXP_NFCC_FEATURES_H
-#define NXP_NFCC_EMPTY_DATA_PACKET TRUE
+/*Flags common to all chip types*/
+#define NXP_NFCC_EMPTY_DATA_PACKET TRUE
+#define GEMALTO_SE_SUPPORT TRUE
#if(NFC_NXP_CHIP_TYPE == PN553)
// Example: define macro like below for each feature
//#define NXP_NFCC_FEATURE_1 TRUE
-#define NXP_NFCC_MW_RCVRY_BLK_FW_DNLD TRUE
-#define NXP_NFCC_FORCE_NCI1_0_INIT FALSE
-#define NXP_NFCC_ROUTING_BLOCK_BIT TRUE
+#define NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT TRUE
+#define NXP_NFCC_MIFARE_TIANJIN FALSE
+#define NXP_NFCC_MW_RCVRY_BLK_FW_DNLD TRUE
+#define NXP_NFCC_DYNAMIC_DUAL_UICC TRUE
+#define NXP_NFCC_FW_WA TRUE
+#define NXP_NFCC_FORCE_NCI1_0_INIT FALSE
+#define NXP_NFCC_ROUTING_BLOCK_BIT TRUE
+#define NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH FALSE
+#define NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH TRUE
+#define NXP_NFCC_SPI_FW_DOWNLOAD_SYNC TRUE
+#define NXP_HW_ANTENNA_LOOP4_SELF_TEST FALSE
#elif((NFC_NXP_CHIP_TYPE == PN551)||(NFC_NXP_CHIP_TYPE == PN548C2))
+#define NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT TRUE
#define NXP_NFCC_AID_MATCHING_PLATFORM_CONFIG TRUE
-#define NXP_NFCC_ROUTING_BLOCK_BIT_PROP TRUE
+#define NXP_NFCC_DYNAMIC_DUAL_UICC FALSE
+#define NXP_NFCC_ROUTING_BLOCK_BIT_PROP TRUE
+#define NXP_NFCC_MIFARE_TIANJIN TRUE
+#define NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH TRUE
+#define NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH FALSE
+#define NXP_NFCC_SPI_FW_DOWNLOAD_SYNC FALSE
+#define NXP_HW_ANTENNA_LOOP4_SELF_TEST TRUE
#elif(NFC_NXP_CHIP_TYPE == PN547C2)
+#define NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT FALSE
#define NXP_NFCC_AID_MATCHING_PLATFORM_CONFIG TRUE
+#define NXP_NFCC_MIFARE_TIANJIN TRUE
+#define NXP_NFCC_SPI_FW_DOWNLOAD_SYNC FALSE
+#define NXP_HW_ANTENNA_LOOP4_SELF_TEST TRUE
#endif
+
#endif /* end of #ifndef NXP_NFCC_FEATURES_H */
diff --git a/halimpl/pn54x/configs/NXP_Platform_Features.h b/halimpl/pn54x/configs/NXP_Platform_Features.h
index 133b1b1..84e43e5 100755
--- a/halimpl/pn54x/configs/NXP_Platform_Features.h
+++ b/halimpl/pn54x/configs/NXP_Platform_Features.h
@@ -23,7 +23,18 @@
#define NXP_PLATFORM_FEATURES_H
#if(NFC_NXP_CHIP_TYPE == PN553)
-// Define the platform specific macros
-
+#undef NXP_NFCC_RESET_RSP_LEN
+#define NXP_NFCC_RESET_RSP_LEN (0x10U)
#endif
+
+#if(NFC_NXP_CHIP_TYPE == PN551)
+#undef NXP_NFCC_RESET_RSP_LEN
+#define NXP_NFCC_RESET_RSP_LEN (0x11U)
+#endif
+
+#if(NFC_NXP_CHIP_TYPE == PN548AD)
+#undef NXP_NFCC_RESET_RSP_LEN
+#define NXP_NFCC_RESET_RSP_LEN (0x11U)
+#endif
+
#endif /* end of #ifndef NXP_PLATFORM_FEATURES_H */
diff --git a/halimpl/pn54x/dnld/phDnldNfc.c b/halimpl/pn54x/dnld/phDnldNfc.c
index 8bb64c7..c24672a 100644
--- a/halimpl/pn54x/dnld/phDnldNfc.c
+++ b/halimpl/pn54x/dnld/phDnldNfc.c
@@ -289,7 +289,7 @@
#elif(NFC_NXP_CHIP_TYPE == PN548C2)
|| (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bChipVer)
#elif(NFC_NXP_CHIP_TYPE == PN553)
- || (PHDNLDNFC_HWVER_PN553_MRA1_0 == bChipVer) || (PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED == bChipVer)
+ || (PHDNLDNFC_HWVER_PN553_MRA1_0 == bChipVer) || (PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED & bChipVer)
#endif
)
{
diff --git a/halimpl/pn54x/dnld/phDnldNfc.h b/halimpl/pn54x/dnld/phDnldNfc.h
index 052a607..9212473 100644
--- a/halimpl/pn54x/dnld/phDnldNfc.h
+++ b/halimpl/pn54x/dnld/phDnldNfc.h
@@ -45,7 +45,11 @@
#define PHDNLDNFC_HWVER_PN551_MRA1_0 (0x08U) /* PN551 ChipVersion MRA1.0 */
#define PHDNLDNFC_HWVER_PN553_MRA1_0 (0x0BU) /* PN553-NCI1.0 ChipVersion MRA1.0 */
-#define PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED (0x40U) /* PN553-NCI1.0 updated FW*/
+/* PN553 A0 -> 0x40 hardware version
+ PN553 B0 -> 0x41
+ PN80T A0 -> 0x50
+ PN80T B0 -> 0x51 */
+#define PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED (0x40U)
/*
* Enum definition contains Download Life Cycle States
*/
diff --git a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c b/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
index ef64578..63268d4 100644
--- a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
+++ b/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
@@ -569,16 +569,16 @@
#elif(NFC_NXP_CHIP_TYPE == PN548C2)
|| (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bHwVer)
#elif(NFC_NXP_CHIP_TYPE == PN553)
- || (PHDNLDNFC_HWVER_PN553_MRA1_0 == bHwVer || PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED == pRespBuff->pBuff[0])
+ || (PHDNLDNFC_HWVER_PN553_MRA1_0 == bHwVer || PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED & pRespBuff->pBuff[0])
#endif
)
{
bExpectedLen = PHLIBNFC_IOCTL_DNLD_GETVERLEN_MRA2_1;
(gphNxpNciHal_fw_IoctlCtx.bChipVer) = bHwVer;
#if(NFC_NXP_CHIP_TYPE == PN553)
- if(PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED == pRespBuff->pBuff[0])
+ if(PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED & pRespBuff->pBuff[0])
{
- (gphNxpNciHal_fw_IoctlCtx.bChipVer) = PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED;
+ (gphNxpNciHal_fw_IoctlCtx.bChipVer) = pRespBuff->pBuff[0];
}
#endif
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
index 1947f93..8f1fd51 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ b/halimpl/pn54x/hal/phNxpNciHal.c
@@ -54,7 +54,9 @@
extern uint8_t icode_send_eof;
extern uint8_t icode_detected;
static uint8_t cmd_icode_eof[] = { 0x00, 0x00, 0x00 };
+#if(NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
static uint8_t read_failed_disable_nfc = FALSE;
+#endif
static uint8_t config_access = FALSE;
static NFCSTATUS phNxpNciHal_FwDwnld(void);
static NFCSTATUS phNxpNciHal_SendCmd(uint8_t cmd_len, uint8_t* pcmd_buff);
@@ -70,7 +72,7 @@
extern int phNxpNciHal_CheckFwRegFlashRequired(uint8_t* fw_update_req, uint8_t* rf_update_req);
phNxpNci_getCfg_info_t* mGetCfg_info = NULL;
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if(NXP_ESE_SVDD_SYNC == TRUE)
uint32_t gSvddSyncOff_Delay = 10;
#endif
/* global variable to get FW version from NCI response*/
@@ -524,7 +526,6 @@
NFCSTATUS status = NFCSTATUS_SUCCESS;
phOsalNfc_Config_t tOsalConfig;
phTmlNfc_Config_t tTmlConfig;
- uint8_t nfc_dev_node[260];
static phLibNfc_Message_t msg;
int init_retry_cnt=0;
/*NCI_RESET_CMD*/
@@ -532,8 +533,10 @@
/*NCI_INIT_CMD*/
uint8_t cmd_init_nci[] = {0x20,0x01,0x00};
uint8_t boot_mode = nxpncihal_ctrl.hal_boot_mode;
- phNxpLog_InitializeLogLevel();
+ char *nfc_dev_node = NULL;
+ const uint16_t max_len = 260;
+ phNxpLog_InitializeLogLevel();
/*Create the timer for extns write response*/
timeoutTimerId = phOsalNfc_Timer_Create();
@@ -569,14 +572,21 @@
nxpncihal_ctrl.hal_boot_mode = boot_mode;
/*Get the device node name from config file*/
- memset(nfc_dev_node,0,sizeof(nfc_dev_node));
- if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, (char *)nfc_dev_node, sizeof (nfc_dev_node)))
+ /* Read the nfc device node name */
+ nfc_dev_node = (char*) malloc (max_len * sizeof (char));
+ if (nfc_dev_node == NULL)
{
- NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/pn54x");
- strcpy ((char *)nfc_dev_node, "/dev/pn54x");
+ NXPLOG_NCIHAL_E ("malloc of nfc_dev_node failed ");
+ return NFCSTATUS_FAILED;
+ }
+ else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, nfc_dev_node, max_len*sizeof(uint8_t)))
+ {
+ NXPLOG_NCIHAL_E ("Invalid nfc device node name keeping the default device node /dev/pn54x");
+ strcpy (nfc_dev_node, "/dev/pn54x");
}
- tTmlConfig.pDevName = (int8_t *) nfc_dev_node;
+ tTmlConfig.pDevName = (int8_t *)nfc_dev_node;
+
tOsalConfig.dwCallbackThreadId
= (uintptr_t) nxpncihal_ctrl.gDrvCfg.nClientId;
tOsalConfig.pLogFile = NULL;
@@ -637,6 +647,11 @@
phNxpNciHal_cleanup_monitor();
nxpncihal_ctrl.halStatus = HAL_STATUS_CLOSE;
}
+ if(nfc_dev_node != NULL)
+ {
+ free(nfc_dev_node);
+ nfc_dev_node = NULL;
+ }
return status;
}
@@ -833,7 +848,7 @@
{
NFCSTATUS status = NFCSTATUS_FAILED;
- if((!(strcmp(COMPILATION_MW,"PN553")) && (rom_version==0x10) && (fw_maj_ver == 0x01)))
+ if((!(strcmp(COMPILATION_MW,"PN553")) && (rom_version==0x11) && (fw_maj_ver == 0x01)))
{
status = NFCSTATUS_SUCCESS;
}
@@ -1012,8 +1027,13 @@
if(nxpncihal_ctrl.retry_cnt++ < MAX_RETRY_COUNT)
{
NXPLOG_NCIHAL_E("write_unlocked failed - PN54X Maybe in Standby Mode - Retry");
+#if(NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
+ /* 5ms delay to give NFCC wake up delay */
+ usleep(5000);
+#else
/* 1ms delay to give NFCC wake up delay */
usleep(1000);
+#endif
goto retry;
}
else
@@ -1110,7 +1130,7 @@
{
nxpncihal_ctrl.read_retry_cnt = 0;
}
-
+#if( NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
if(pInfo->wStatus == NFCSTATUS_READ_FAILED)
{
if (nxpncihal_ctrl.p_nfc_stack_cback != NULL)
@@ -1122,7 +1142,7 @@
}
return;
}
-
+#endif
if (pInfo->wStatus == NFCSTATUS_SUCCESS)
{
NXPLOG_NCIHAL_D("read successful status = 0x%x", pInfo->wStatus);
@@ -1263,6 +1283,7 @@
}
if(retry_core_init_cnt > 3)
{
+#if(NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
if (nxpncihal_ctrl.p_nfc_stack_cback != NULL)
{
NXPLOG_NCIHAL_D("Posting Core Init Failed\n");
@@ -1271,6 +1292,7 @@
(*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_ERROR_EVT,
HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
}
+#endif
return NFCSTATUS_FAILED;
}
@@ -1349,7 +1371,7 @@
goto retry_core_init;
}
}
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if(NXP_ESE_SVDD_SYNC == TRUE)
if(GetNxpNumValue(NAME_NXP_SVDD_SYNC_OFF_DELAY, (void *)&gSvddSyncOff_Delay, sizeof(gSvddSyncOff_Delay)))
{
if(gSvddSyncOff_Delay>20)
@@ -1391,38 +1413,44 @@
}
#endif
-#if((NFC_NXP_CHIP_TYPE != PN547C2) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
if(isNxpConfigModified() || (fw_dwnld_flag == 0x01))
{
+#if((NFC_NXP_CHIP_TYPE != PN547C2) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ uint8_t value[] = {0x01};
+#else
+ uint8_t value[] = {0x00};
+#endif
uint8_t timeOutValue;
num = 0;
- uint8_t value[] = {0x01};
mEEPROM_info.buffer = &value;
mEEPROM_info.bufflen = sizeof(value);
mEEPROM_info.request_type = EEPROM_WIREDMODE_RESUME_ENABLE;
mEEPROM_info.request_mode = SET_EEPROM_DATA;
- status = request_EEPROM(&mEEPROM_info);
+ request_EEPROM(&mEEPROM_info);
+ }
- if(GetNxpNumValue(NAME_NXP_WIREDMODE_RESUME_TIMEOUT, (void *)&num, sizeof(num)))
+#if((NFC_NXP_CHIP_TYPE != PN547C2) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ {
+ uint8_t resume_timeout_buf[NXP_WIREDMODE_RESUME_TIMEOUT_LEN];
+ mEEPROM_info.request_mode = GET_EEPROM_DATA;
+ NXPLOG_NCIHAL_D("Sree Timeout value");
+ if(isNxpConfigModified() || (fw_dwnld_flag == 0x01))
{
- if(num == 0x00)
+ NXPLOG_NCIHAL_D("Sree1 Timeout value");
+ if(GetNxpByteArrayValue(NAME_NXP_WIREDMODE_RESUME_TIMEOUT, (char *)buffer, bufflen, &retlen))
{
- timeOutValue = 0x02; // default 2 milliseconds timeout
- }
- else
- {
- timeOutValue = (uint8_t)num;
+ NXPLOG_NCIHAL_D("Sree2 time out value %x %x %x %x retvalue=%d", resume_timeout_buf[0], resume_timeout_buf[1], resume_timeout_buf[2], resume_timeout_buf[3],retlen);
+ if(retlen>= NXP_WIREDMODE_RESUME_TIMEOUT_LEN)
+ {
+ memcpy(&resume_timeout_buf, buffer, NXP_STAG_TIMEOUT_BUF_LEN);
+ mEEPROM_info.request_mode = SET_EEPROM_DATA;
+ }
}
}
- else
- {
- timeOutValue = 0x02; // default 2 milliseconds timeout
- }
- mEEPROM_info.buffer = &timeOutValue;
- mEEPROM_info.bufflen = sizeof(timeOutValue);
- mEEPROM_info.request_type = EEPROM_WIREDMODE_RESUME_TIMEOUT;
- mEEPROM_info.request_mode = SET_EEPROM_DATA;
- status = request_EEPROM(&mEEPROM_info);
+ mEEPROM_info.buffer = resume_timeout_buf;
+ mEEPROM_info.bufflen = sizeof(resume_timeout_buf);
+ mEEPROM_info.request_type = EEPROM_WIREDMODE_RESUME_TIMEOUT;
+ status = request_EEPROM(&mEEPROM_info);
}
#endif
@@ -1561,8 +1589,7 @@
goto retry_core_init;
}
}
- if((fw_dwnld_flag == 0x01) || (TRUE == setConfigAlways))
- {
+
retlen = 0;
#if(NFC_NXP_CHIP_TYPE != PN547C2)
NXPLOG_NCIHAL_D ("Performing TVDD Settings");
@@ -1611,14 +1638,9 @@
}
#endif
- }
+
retlen = 0;
- num = 0;
- isfound = GetNxpNumValue(NAME_NXP_RF_UPDATE_REQ, &num, sizeof(num));
- if ((fw_dwnld_flag == 0x01)||
- (TRUE == setConfigAlways) ||
- ((isfound > 0)&&(num == 1)))
- {
+
#if(NFC_NXP_CHIP_TYPE != PN547C2)
config_access = FALSE;
#endif
@@ -1798,10 +1820,7 @@
goto retry_core_init;
}
}
- }
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
- config_access = TRUE;
-#endif
+
retlen = 0;
NXPLOG_NCIHAL_D ("Performing NAME_NXP_CORE_CONF Settings");
@@ -2131,12 +2150,18 @@
if(p_core_init_rsp_params[35] > 0)
{ //if length of last command is 0 then it doesn't need to send last command.
- if( !(((p_core_init_rsp_params[36] == 0x21) && (p_core_init_rsp_params[37] == 0x03))
- && (*(p_core_init_rsp_params + 1) == 1)) &&
- !((p_core_init_rsp_params[36] == 0x21) && (p_core_init_rsp_params[37] == 0x06) && (p_core_init_rsp_params[39] == 0x00) &&(*(p_core_init_rsp_params + 1) == 0x00)))
+ if( !( (p_core_init_rsp_params[36] == 0x21) &&
+ (p_core_init_rsp_params[37] == 0x03) &&
+ (*(p_core_init_rsp_params + 1) == 0x01) )
+ &&
+ !( (p_core_init_rsp_params[36] == 0x21) &&
+ (p_core_init_rsp_params[37] == 0x06) &&
+ (p_core_init_rsp_params[39] == 0x00) &&
+ (*(p_core_init_rsp_params + 1) == 0x00) )
+ )
//if last command is discovery and RF status is also discovery state, then it doesn't need to execute or similarly
- // if the last command is deactivate to idle and RF status is also idle , no need to execute the command .
- {
+ //if the last command is deactivate to idle and RF status is also idle , no need to execute the command .
+ {
tmp_len = p_core_init_rsp_params[35];
/* Check for NXP ext before sending write */
@@ -2565,11 +2590,13 @@
}
CONCURRENCY_LOCK();
+#if (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
if(read_failed_disable_nfc)
{
read_failed_disable_nfc = FALSE;
goto close_and_return;
}
+#endif
if(write_unlocked_status == NFCSTATUS_FAILED)
{
NXPLOG_NCIHAL_D("phNxpNciHal_close i2c write failed .Clean and Return");
@@ -2623,7 +2650,9 @@
{
NXPLOG_NCIHAL_E ("NCI_CORE_RESET: Failed");
}
+#if (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
close_and_return:
+#endif
if (NULL != gpphTmlNfc_Context->pDevHandle)
{
phNxpNciHal_close_complete(NFCSTATUS_SUCCESS);
@@ -2964,8 +2993,8 @@
ret = 0;
}
break;
- case HAL_NFC_IOCTL_P73_ISO_RST:
- status = phTmlNfc_IoCtl(phTmlNfc_e_P73IsoRstMode);
+ case HAL_NFC_IOCTL_ESE_CHIP_RST:
+ status = phTmlNfc_IoCtl(phTmlNfc_e_eSEChipRstMode);
if(NFCSTATUS_FAILED != status)
{
if(NULL != p_data)
@@ -2973,7 +3002,7 @@
ret = 0;
}
break;
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if (NXP_ESE_SVDD_SYNC == TRUE)
case HAL_NFC_IOCTL_REL_SVDD_WAIT:
status = phTmlNfc_rel_svdd_wait(gpphTmlNfc_Context->pDevHandle);
NXPLOG_NCIHAL_D("HAL_NFC_IOCTL_P61_REL_SVDD_WAIT retval = %d\n",status);
@@ -2995,7 +3024,27 @@
}
}
break;
-
+#if (NXP_ESE_JCOP_DWNLD_PROTECTION == TRUE)
+ case HAL_NFC_IOCTL_SET_JCP_DWNLD_ENABLE:
+ NXPLOG_NCIHAL_D("HAL_NFC_IOCTL_SET_JCP_DWNLD_ENABLE: \n");
+ status = phTmlNfc_IoCtl(phTmlNfc_e_SetJcopDwnldEnable);
+ if(NFCSTATUS_FAILED != status)
+ {
+ if(NULL != p_data)
+ *(uint16_t*)p_data = (uint16_t)status;
+ ret = 0;
+ }
+ break;
+ case HAL_NFC_IOCTL_SET_JCP_DWNLD_DISABLE:
+ status = phTmlNfc_IoCtl(phTmlNfc_e_SetJcopDwnldDisable);
+ if(NFCSTATUS_FAILED != status)
+ {
+ if(NULL != p_data)
+ *(uint16_t*)p_data = (uint16_t)status;
+ ret = 0;
+ }
+ break;
+#endif
case HAL_NFC_IOCTL_GET_CONFIG_INFO:
memcpy(p_data, mGetCfg_info , sizeof(phNxpNci_getCfg_info_t));
ret = 0;
@@ -3238,6 +3287,7 @@
if(isfound >0)
{
enable_bit = rf_val & 0x40;
+#if(NXP_NFCC_MIFARE_TIANJIN == TRUE)
if((enable_bit != 0x40) && (rf_enable == 1))
{
phNxpNciRfSet.p_rx_data[10] |= 0x40; // Enable if it is disabled
@@ -3250,8 +3300,25 @@
{
flag_send_tianjin_config = FALSE; // No need to change in RF setting
}
+#else
+ {
+ enable_bit = phNxpNciRfSet.p_rx_data[11] & 0x10;
+ if((rf_enable == 1) && (enable_bit != 0x10))
+ {
+ NXPLOG_NCIHAL_E("Setting Non-Mifare reader for china tianjin");
+ phNxpNciRfSet.p_rx_data[11] |= 0x10;
+ }else if ((rf_enable == 0) && (enable_bit == 0x10))
+ {
+ NXPLOG_NCIHAL_E("Setting Non-Mifare reader for china tianjin");
+ phNxpNciRfSet.p_rx_data[11] &= 0xEF;
+ }
+ else
+ {
+ flag_send_tianjin_config = FALSE;
+ }
+ }
+#endif
}
-
/*check if china block number check is required*/
rf_val = phNxpNciRfSet.p_rx_data[8];
isfound = (GetNxpNumValue(NAME_NXP_CHINA_BLK_NUM_CHK_ENABLE, (void *)&cfg_blk_chk_enable, sizeof(cfg_blk_chk_enable)));
@@ -3611,3 +3678,35 @@
return status;
}
+/*******************************************************************************
+**
+** Function phNxpNciHal_getFWDownloadFlags
+**
+** Description Returns the current mode
+**
+** Parameters none
+**
+** Returns Current mode download/NCI
+*******************************************************************************/
+int phNxpNciHal_getFWDownloadFlag(uint8_t* fwDnldRequest)
+{
+ int status = NFCSTATUS_FAILED;
+
+ NXPLOG_NCIHAL_D("notifyFwrequest %d", notifyFwrequest);
+ if(notifyFwrequest == TRUE)
+ {
+ status = phNxpNciHal_FwDwnld();
+ if(status == NFCSTATUS_SUCCESS)
+ {
+ *fwDnldRequest = TRUE;
+ notifyFwrequest = FALSE;
+ status = NFCSTATUS_OK;
+ }
+ else
+ {
+ *fwDnldRequest = FALSE;
+ }
+ }
+ return status;
+}
+
diff --git a/halimpl/pn54x/hal/phNxpNciHal.h b/halimpl/pn54x/hal/phNxpNciHal.h
index c048d2e..3843cf0 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.h
+++ b/halimpl/pn54x/hal/phNxpNciHal.h
@@ -19,12 +19,17 @@
#include <hardware/nfc.h>
#include <phNxpNciHal_utils.h>
#include <NXP_ESE_Features.h>
+#ifndef NXP_NFCC_FEATURES_H
+#include <NXP_NFCC_Features.h>
+#endif
/********************* Definitions and structures *****************************/
#define MAX_RETRY_COUNT 5
#define NCI_MAX_DATA_LEN 300
#define NCI_POLL_DURATION 500
#define HAL_NFC_ENABLE_I2C_FRAGMENTATION_EVT 0x07
+#define NXP_STAG_TIMEOUT_BUF_LEN 0x04 /*FIXME:TODO:remove*/
+#define NXP_WIREDMODE_RESUME_TIMEOUT_LEN 0x04
#undef P2P_PRIO_LOGIC_HAL_IMP
typedef void (phNxpNciHal_control_granted_callback_t)();
diff --git a/halimpl/pn54x/hal/phNxpNciHal_ext.c b/halimpl/pn54x/hal/phNxpNciHal_ext.c
index 0d90eb4..87e08e4 100644
--- a/halimpl/pn54x/hal/phNxpNciHal_ext.c
+++ b/halimpl/pn54x/hal/phNxpNciHal_ext.c
@@ -23,7 +23,7 @@
#include <phNxpConfig.h>
#include <phDnldNfc.h>
-#define HAL_EXTNS_WRITE_RSP_TIMEOUT (1000) /* Timeout value to wait for response from PN548AD */
+#define HAL_EXTNS_WRITE_RSP_TIMEOUT (2500) /* Timeout value to wait for response from PN548AD */
#undef P2P_PRIO_LOGIC_HAL_IMP
@@ -61,7 +61,7 @@
static uint32_t iCoreRstNtfLen;
extern uint32_t timeoutTimerId;
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if(NXP_ESE_SVDD_SYNC == TRUE)
extern uint32_t gSvddSyncOff_Delay; /*default delay*/
#endif
extern NFCSTATUS read_retry();
@@ -737,7 +737,7 @@
nxpprofile_ctrl.profile_type = NFC_FORUM_PROFILE;
status = NFCSTATUS_SUCCESS;
}
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if(NXP_ESE_SVDD_SYNC == TRUE)
else if (p_cmd_data[0] == 0x2F &&
p_cmd_data[1] == 0x31 &&
p_cmd_data[2] == 0x01 &&
@@ -858,7 +858,6 @@
p_rsp_data[2] = 0x02;
p_rsp_data[3] = 0x00;
p_rsp_data[4] = 0x00;
- phNxpNciHal_print_packet("RECV", p_rsp_data,5);
status = NFCSTATUS_FAILED;
}
//2002 0904 3000 3100 3200 5000
@@ -1216,16 +1215,19 @@
case EEPROM_WIREDMODE_RESUME_ENABLE:
b_position = 0;
memIndex = 0x00;
- addr[0] = 0xFF; //To be updated actual value
- addr[1] = 0xFF; // To be updated actual value
+ addr[0] = 0xA0; //To be updated actual value
+ addr[1] = 0x99; // To be updated actual value
break;
-
+
case EEPROM_WIREDMODE_RESUME_TIMEOUT:
- b_position = 0;
+ mEEPROM_info->update_mode = BYTEWISE;
memIndex = 0x00;
- addr[0] = 0xFF; //To be updated actual value
- addr[1] = 0xFF; // To be updated actual value
+ fieldLen = 0x04;
+ len = fieldLen + 4;
+ addr[0] = 0xA0;
+ addr[1] = 0xFC;
break;
+
case EEPROM_ESE_SVDD_POWER:
b_position = 0;
memIndex = 0x00;
diff --git a/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h b/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
index 21eac55..36222a0 100644
--- a/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
+++ b/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
@@ -41,4 +41,5 @@
int phNxpNciHal_MinOpen(nfc_stack_callback_t *p_cback,
nfc_stack_data_callback_t *p_data_cback);
int phNxpNciHal_Minclose(void);
+int phNxpNciHal_getFWDownloadFlag(uint8_t* fwDnldRequest);
#endif /* _PHNXPNCIHAL_ADAPTATION_H_ */
diff --git a/halimpl/pn54x/libnfc-brcm.conf b/halimpl/pn54x/libnfc-brcm.conf
index bac90df..16f9880 100644
--- a/halimpl/pn54x/libnfc-brcm.conf
+++ b/halimpl/pn54x/libnfc-brcm.conf
@@ -363,7 +363,11 @@
# NXP PN65T 0x03
# NXP PN548C2 0x02
# NXP PN66T 0x03
-NFA_MAX_EE_SUPPORTED=0x03
+# NXP PN551 0x02
+# NXP PN67T 0x03
+# NXP PN553 0x02
+# NXP PN80T 0x04
+NFA_MAX_EE_SUPPORTED=0x04
###############################################################################
# NCI Hal Module name
diff --git a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
index e092f3c..9d74bfa 100644
--- a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,7 +8,6 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
@@ -28,6 +26,7 @@
###############################################################################
# Vzw Feature enable
VZW_FEATURE_ENABLE=0x01
+
###############################################################################
# File name for Firmware
NXP_FW_NAME="libpn547_fw.so"
@@ -36,7 +35,6 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
NXP_SYS_CLK_SRC_SEL=0x01
###############################################################################
@@ -47,13 +45,11 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x00
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
NXP_SYS_CLOCK_TO_CFG=0x01
###############################################################################
@@ -143,9 +139,11 @@
# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
}
+
###############################################################################
# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
+
###############################################################################
# Core configuration settings
NXP_CORE_CONF={ 20, 02, 2B, 0D,
@@ -163,7 +161,7 @@
82, 01, 0E,
18, 01, 01
}
-
+
###############################################################################
# Mifare Classic Key settings
#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
@@ -176,10 +174,11 @@
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-
NXP_DEFAULT_SE=0x02
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+
###############################################################################
#Enable SWP full power mode when phone is power off
NXP_SWP_FULL_PWR_ON=0x01
@@ -214,33 +213,36 @@
#PN65T 0x02
#PN548AD 0x03
#PN66T 0x04
-
NXP_NFC_CHIP=0x01
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
+
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
###############################################################################
-
# AID Matching platform options
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
################################################################################
#Used to Restrict Type A UICC baud rate
#0 = default supported
#1 = 212 maximum supported
#2 = 424 maximum supported
#3 = 848 maximum supported
-
NXP_TYPEA_UICC_BAUD_RATE=0x00
################################################################################
@@ -249,13 +251,13 @@
#1 = 212 maximum supported
#2 = 424 maximum supported
#3 = 848 maximum supported
-
NXP_TYPEB_UICC_BAUD_RATE=0x00
-################################################################################
+################################################################################
#Config to allow adding aids
#NFC on/off is required after this config
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
-##################################################################################
+
+################################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
index 55b769b..839b43f 100644
--- a/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,7 +8,6 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
@@ -37,7 +35,6 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
NXP_SYS_CLK_SRC_SEL=0x02
###############################################################################
@@ -48,14 +45,12 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x02
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
-NXP_SYS_CLOCK_TO_CFG=0x01
+NXP_SYS_CLOCK_TO_CFG=0x06
###############################################################################
# NXP proprietary settings
@@ -80,16 +75,18 @@
# Allow NFCC to configure External TVDD, There are currently three
#configurations (1, 2 and 3) are supported, out of them only one can be
#supported.
-
NXP_EXT_TVDD_CFG=0x01
+################################################################################
#config1:SLALM, 3.3V for both RM and CM
NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
+################################################################################
#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
#monitoring 5V from DCDC, 4.7V for both RM and CM, DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 64, 0A}
+################################################################################
#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
#DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 64, 0A}
@@ -164,6 +161,7 @@
# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
}
+
###############################################################################
# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
@@ -199,7 +197,6 @@
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-
NXP_DEFAULT_SE=0x03
###############################################################################
@@ -212,23 +209,28 @@
#PN65T 0x02
#PN548AD 0x03
#PN66T 0x04
-
NXP_NFC_CHIP=0x03
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
+###############################################################################
#Timeout in secs to get NFCEE Discover notification
NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
@@ -291,11 +293,13 @@
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
+
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
@@ -303,6 +307,7 @@
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
+
###############################################################################
#Dynamic RSSI feature enable
# Disable 0x00
@@ -314,14 +319,18 @@
# Disable 0x00
# Enable 0x01
NXP_DUAL_UICC_ENABLE=0x00
+
###############################################################################
#Config to allow adding aids
#NFC on/off is required after this config
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
+
###############################################################################
# Enable/Disable checking default proto SE Id
# Disable 0x00
# Enable 0x01
NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
+
+###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN551_example.conf b/halimpl/pn54x/libnfc-nxp-PN551_example.conf
index 02f86e4..92d911c 100644
--- a/halimpl/pn54x/libnfc-nxp-PN551_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN551_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn551)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn551)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,7 +8,6 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
@@ -37,7 +35,6 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
NXP_SYS_CLK_SRC_SEL=0x01
###############################################################################
@@ -48,13 +45,11 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x01
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
NXP_SYS_CLOCK_TO_CFG=0x06
###############################################################################
@@ -80,16 +75,18 @@
# Allow NFCC to configure External TVDD, There are currently three
#configurations (1, 2 and 3) are supported, out of them only one can be
#supported.
-
NXP_EXT_TVDD_CFG=0x01
+###############################################################################
#config1:SLALM, 3.3V for both RM and CM
NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
+###############################################################################
#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 24, 08 }
+###############################################################################
#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
#DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 40, 0A}
@@ -162,8 +159,8 @@
###############################################################################
# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
+NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01 }
+
###############################################################################
# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
@@ -199,7 +196,6 @@
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-
NXP_DEFAULT_SE=0x03
###############################################################################
@@ -214,22 +210,28 @@
#PN66T 0x04
#PN551 0x05
#PN67T 0x06
-
NXP_NFC_CHIP=0x05
+
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
+###############################################################################
#Timeout in secs to get NFCEE Discover notification
NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
@@ -292,11 +294,13 @@
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
+
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
@@ -304,29 +308,36 @@
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
+
###############################################################################
#Dynamic RSSI feature enable
# Disable 0x00
# Enable 0x01
NXP_AGC_DEBUG_ENABLE=0x00
+
###############################################################################
# UICC mode supported
# Disable 0x00
# Enable 0x01
NXP_DUAL_UICC_ENABLE=0x00
+
###############################################################################
#Config to allow adding aids
#NFC on/off is required after this config
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
+
###############################################################################
# Enable/Disable checking default proto SE Id
# 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
+
+###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN553_example.conf b/halimpl/pn54x/libnfc-nxp-PN553_example.conf
index 8ac9a05..e4f6a73 100644
--- a/halimpl/pn54x/libnfc-nxp-PN553_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN553_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,7 +8,6 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
@@ -37,7 +35,6 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
NXP_SYS_CLK_SRC_SEL=0x01
###############################################################################
@@ -48,13 +45,11 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x01
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
NXP_SYS_CLOCK_TO_CFG=0x01
###############################################################################
@@ -75,25 +70,20 @@
# Standby enable settings
#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
###############################################################################
# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, There are currently three
-#configurations (1, 2 and 3) are supported, out of them only one can be
-#supported.
-
+# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported,
+# out of them only one can be configured at a time.
NXP_EXT_TVDD_CFG=0x02
+###############################################################################
#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
+NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C}
+###############################################################################
#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 43, 02}
-
-#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
-#DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 40, 0A}
+NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C}
###############################################################################
# NXP RF configuration ALM/PLM settings
@@ -131,7 +121,6 @@
#NXP_RF_CONF_BLK_6={
#}
-
###############################################################################
# Set configuration optimization decision setting
# Enable = 0x01
@@ -147,6 +136,7 @@
# Clock settings A002, A003
# PbF settings A008
# Clock timeout settings A004
+# eSE (SVDD) PWR REQ settings A0F2
NXP_CORE_CONF_EXTN={20, 02, 25, 09,
A0, EC, 01, 01,
A0, ED, 01, 01,
@@ -169,11 +159,13 @@
# }
###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
+# Core configuration rf field filter settings to enable set to 01 to disable set
+# to 00 last bit
+NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01 }
+
###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
+# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
+# to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
###############################################################################
@@ -202,6 +194,7 @@
# A0, 53, 06, FF, FF, FF, FF, FF, FF,
# A0, 54, 06, 00, 00, 00, 00, 00, 00}
+
###############################################################################
# Default SE Options
# No secure element 0x00
@@ -229,23 +222,28 @@
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
+###############################################################################
#Timeout in secs to get NFCEE Discover notification
NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
###############################################################################
-
#Set the default AID route Location :
#This settings will be used when application does not set this parameter
# host 0x00
@@ -271,6 +269,7 @@
# UICC 0x02
# UICC2 0x04
DEFAULT_MIFARE_CLT_ROUTE=0x02
+
###############################################################################
#Set the default AID Power state :
#This settings will be used when application does not set this parameter
@@ -308,6 +307,7 @@
# UICC 0x02
# UICC2 0x04
DEFAULT_FELICA_CLT_ROUTE=0x01
+
###############################################################################
#Set the Felica CLT Power state :
#This settings will be used when application does not set this parameter
@@ -317,27 +317,31 @@
# bit pos 3 = Screen Lock
# bit pos 4 = Screen Off
DEFAULT_FELICA_CLT_PWR_STATE=0x1B
-###############################################################################
+###############################################################################
# AID Matching platform options
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
###############################################################################
# P61 interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LS_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 LTSM interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
+
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
+
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
@@ -345,11 +349,13 @@
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
+
###############################################################################
# P61 interface options for JCOP Download
# NFC 0x01
# SPI 0x02
NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 JCOP OS download options
# FRAMEWORK API BY APPLICATION 0x00
@@ -364,8 +370,10 @@
# LS2.2 0x22
# AT NFC service intialization
NXP_LOADER_SERVICE_VERSION=0x22
+
###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000 msec to 20000 msec and zero is to disable.
+#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
+#msec to 20000 msec and zero is to disable.
NXP_NFCC_STANDBY_TIMEOUT=20000
###############################################################################
@@ -373,6 +381,7 @@
# Disable 0x00
# Enable 0x01
NXP_AGC_DEBUG_ENABLE=0x00
+
###############################################################################
#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode
# For Technology routing to ESE Technology Mask = 4
@@ -386,35 +395,34 @@
#For Technology routing to UICC Technology Mask = 4
#For ISO-DEP Protocol routing to UICC set Mask = 2
#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay set mask = 0
+#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
+#set mask = 0
NXP_UICC_WIRED_PRT_MASK=0x00
-################################################################################
+###############################################################################
#RF field true delay Wired Mode
# delay wired mode = 1
# allow wired mode = 0
NXP_WIRED_MODE_RF_FIELD_ENABLE=0x00
###############################################################################
-# UICC mode supported
-# Disable 0x00
-# Enable 0x01
-NXP_DUAL_UICC_ENABLE=0x00
-###############################################################################
#Config to allow adding aids
#NFC on/off is required after this config
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
-#################################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal.
+
+###############################################################################
+# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
# JCOP CP TIMEOUT
NXP_CP_TIMEOUT={00, 77}
+
###############################################################################
# Enable/Disable checking default proto SE Id
# Disable 0x00
# Enable 0x01
NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
+
###############################################################################
#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
#Enable/Disable block number checks for china transit use case
@@ -427,3 +435,9 @@
# Blacklist enable 0x01
# Blacklist disable 0x00
NXP_PROP_BLACKLIST_ROUTING=0x00
+
+###############################################################################
+# Timeout value in milliseconds to send response for Felica command received
+NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000
+
+###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf b/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
index fab964c..3867c00 100644
--- a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,7 +8,6 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
@@ -28,6 +26,7 @@
###############################################################################
# Vzw Feature enable
VZW_FEATURE_ENABLE=0x01
+
###############################################################################
# File name for Firmware
NXP_FW_NAME="libpn547_fw.so"
@@ -36,7 +35,6 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
NXP_SYS_CLK_SRC_SEL=0x01
###############################################################################
@@ -47,13 +45,11 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x00
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
NXP_SYS_CLOCK_TO_CFG=0x01
###############################################################################
@@ -141,12 +137,15 @@
# }
###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
+# Core configuration rf field filter settings to enable set to 01 to disable set
+# to 00 last bit
NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
}
###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
+# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
+# to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
+
###############################################################################
# Core configuration settings
NXP_CORE_CONF={ 20, 02, 2B, 0D,
@@ -164,7 +163,7 @@
82, 01, 0E,
18, 01, 01
}
-
+
###############################################################################
# Mifare Classic Key settings
#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
@@ -177,10 +176,11 @@
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-
NXP_DEFAULT_SE=0x02
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+
###############################################################################
#Enable SWP full power mode when phone is power off
NXP_SWP_FULL_PWR_ON=0x01
@@ -215,41 +215,48 @@
#PN65T 0x02
#PN548AD 0x03
#PN66T 0x04
-
NXP_NFC_CHIP=0x02
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
+
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
###############################################################################
-
# AID Matching platform options
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
###############################################################################
# P61 interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LS_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 LTSM interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
+
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
+
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
@@ -257,16 +264,19 @@
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
+
###############################################################################
# P61 interface options for JCOP Download
# NFC 0x01
# SPI 0x02
NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 JCOP OS download options
# FRAMEWORK API BY APPLICATION 0x00
# AT BOOT_TIME 0x01
NXP_JCOPDL_AT_BOOT_ENABLE=0x00
+
###############################################################################
# Loader service version
# NFC service checks for LS version 2.0 or 2.1
@@ -275,6 +285,7 @@
# LS2.2 0x22
# AT NFC service intialization
NXP_LOADER_SERVICE_VERSION=0x21
+
################################################################################
#Used to Restrict Type A UICC baud rate
#0 = default supported
@@ -290,10 +301,12 @@
#2 = 424 maximum supported
#3 = 848 maximum supported
NXP_TYPEB_UICC_BAUD_RATE=0x00
+
###############################################################################
#Config to allow adding aids
#NFC on/off is required after this config
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
-#################################################################################
+
+###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf b/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
index 9484005..8c13f6d 100644
--- a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,13 +8,13 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
NXPLOG_NCIR_LOGLEVEL=0x03
NXPLOG_FWDNLD_LOGLEVEL=0x03
NXPLOG_TML_LOGLEVEL=0x03
+
###############################################################################
# Nfc Device Node name
NXP_NFC_DEV_NODE="/dev/pn544"
@@ -36,7 +35,6 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
NXP_SYS_CLK_SRC_SEL=0x02
###############################################################################
@@ -47,14 +45,12 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x02
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
-NXP_SYS_CLOCK_TO_CFG=0x01
+NXP_SYS_CLOCK_TO_CFG=0x06
###############################################################################
# NXP proprietary settings
@@ -79,16 +75,18 @@
# Allow NFCC to configure External TVDD, There are currently three
#configurations (1, 2 and 3) are supported, out of them only one can be
#supported.
-
NXP_EXT_TVDD_CFG=0x01
+###############################################################################
#config1:SLALM, 3.3V for both RM and CM
NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
+###############################################################################
#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
#monitoring 5V from DCDC, 4.7V for both RM and CM, DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 64, 0A}
+###############################################################################
#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
#DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 64, 0A}
@@ -129,7 +127,6 @@
#NXP_RF_CONF_BLK_6={
#}
-
###############################################################################
# Set configuration optimization decision setting
# Enable = 0x01
@@ -166,11 +163,13 @@
# }
###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
+# Core configuration rf field filter settings to enable set to 01 to disable set
+# to 00 last bit
+NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01 }
+
###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
+# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
+# to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
###############################################################################
@@ -204,7 +203,6 @@
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-
NXP_DEFAULT_SE=0x03
###############################################################################
@@ -223,23 +221,28 @@
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
+###############################################################################
#Timeout in secs to get NFCEE Discover notification
NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
###############################################################################
-
#Set the default AID route Location :
#This settings will be used when application does not set this parameter
# host 0x00
@@ -298,21 +301,25 @@
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
###############################################################################
# P61 interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LS_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 LTSM interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
+
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
+
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
@@ -320,11 +327,13 @@
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
+
###############################################################################
# P61 interface options for JCOP Download
# NFC 0x01
# SPI 0x02
NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 JCOP OS download options
# FRAMEWORK API BY APPLICATION 0x00
@@ -339,8 +348,10 @@
# LS2.2 0x22
# AT NFC service intialization
NXP_LOADER_SERVICE_VERSION=0x21
+
###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000 msec to 20000 msec and zero is to disable.
+#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
+#msec to 20000 msec and zero is to disable.
NXP_NFCC_STANDBY_TIMEOUT=20000
###############################################################################
@@ -362,7 +373,8 @@
#For Technology routing to UICC Technology Mask = 4
#For ISO-DEP Protocol routing to UICC set Mask = 2
#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay set mask = 0
+#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
+#set mask = 0
NXP_UICC_WIRED_PRT_MASK=0x00
################################################################################
@@ -377,27 +389,34 @@
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
+
###############################################################################
# UICC mode supported
# Disable 0x00
# Enable 0x01
NXP_DUAL_UICC_ENABLE=0x00
-#################################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal.
+
+###############################################################################
+# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
# JCOP CP TIMEOUT
# NXP_CP_TIMEOUT={00, 77}
+
###############################################################################
# Enable/Disable checking default proto SE Id
# Disable 0x00
# Enable 0x01
NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
+
###############################################################################
# SVDD sync off Delay in ms it can be max 20 ms
# If out of range timeout used, default delay of 10ms will be set
NXP_SVDD_SYNC_OFF_DELAY=10
+
###############################################################################
#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
#Enable/Disable block number checks for china transit use case
#Enable 0x01
#Disable 0x00
-NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
\ No newline at end of file
+NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
+
+###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN67T_example.conf b/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
index d1b3d85..b273e3b 100644
--- a/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,7 +8,6 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
@@ -37,7 +35,6 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
NXP_SYS_CLK_SRC_SEL=0x02
###############################################################################
@@ -48,13 +45,11 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x02
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
NXP_SYS_CLOCK_TO_CFG=0x06
###############################################################################
@@ -80,16 +75,18 @@
# Allow NFCC to configure External TVDD, There are currently three
#configurations (1, 2 and 3) are supported, out of them only one can be
#supported.
-
NXP_EXT_TVDD_CFG=0x01
+###############################################################################
#config1:SLALM, 3.3V for both RM and CM
NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
+###############################################################################
#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
#monitoring 5V from DCDC, 4.7V for both RM and CM, DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 64, 0A}
+###############################################################################
#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
#DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 64, 0A}
@@ -130,7 +127,6 @@
#NXP_RF_CONF_BLK_6={
#}
-
###############################################################################
# Set configuration optimization decision setting
# Enable = 0x01
@@ -167,11 +163,13 @@
# }
###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
+# Core configuration rf field filter settings to enable set to 01 to disable set
+# to 00 last bit
+NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01 }
+
###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
+# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
+# to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
###############################################################################
@@ -205,7 +203,6 @@
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-
NXP_DEFAULT_SE=0x03
###############################################################################
@@ -224,23 +221,28 @@
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
+###############################################################################
#Timeout in secs to get NFCEE Discover notification
NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
###############################################################################
-
#Set the default AID route Location :
#This settings will be used when application does not set this parameter
# host 0x00
@@ -299,21 +301,25 @@
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
###############################################################################
# P61 interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LS_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 LTSM interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
+
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
+
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
@@ -321,11 +327,13 @@
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
+
###############################################################################
# P61 interface options for JCOP Download
# NFC 0x01
# SPI 0x02
NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 JCOP OS download options
# FRAMEWORK API BY APPLICATION 0x00
@@ -340,8 +348,10 @@
# LS2.2 0x22
# AT NFC service intialization
NXP_LOADER_SERVICE_VERSION=0x22
+
###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000 msec to 20000 msec and zero is to disable.
+#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
+#msec to 20000 msec and zero is to disable.
NXP_NFCC_STANDBY_TIMEOUT=20000
###############################################################################
@@ -349,6 +359,7 @@
# Disable 0x00
# Enable 0x01
NXP_AGC_DEBUG_ENABLE=0x00
+
###############################################################################
#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode
# For Technology routing to ESE Technology Mask = 4
@@ -362,10 +373,11 @@
#For Technology routing to UICC Technology Mask = 4
#For ISO-DEP Protocol routing to UICC set Mask = 2
#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay set mask = 0
+#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
+#set mask = 0
NXP_UICC_WIRED_PRT_MASK=0x00
-################################################################################
+###############################################################################
#RF field true delay Wired Mode
# delay wired mode = 1
# allow wired mode = 0
@@ -377,24 +389,29 @@
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
+
###############################################################################
# UICC mode supported
# Disable 0x00
# Enable 0x01
NXP_DUAL_UICC_ENABLE=0x00
-#################################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal.
+
+###############################################################################
+# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
# JCOP CP TIMEOUT
# NXP_CP_TIMEOUT={00, 77}
+
###############################################################################
# Enable/Disable checking default proto SE Id
# Disable 0x00
# Enable 0x01
NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
+
###############################################################################
# SVDD sync off Delay in ms it can be max 20 ms
# If out of range timeout used, default delay of 10ms will be set
NXP_SVDD_SYNC_OFF_DELAY=10
+
###############################################################################
#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
#Enable/Disable block number checks for china transit use case
@@ -402,13 +419,15 @@
#Disable 0x00
NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
-################################################################################
+###############################################################################
#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
+
+###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf b/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
index db0e2fe..70b0d28 100644
--- a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
@@ -1,6 +1,5 @@
## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-
###############################################################################
# Application options
# Logging Levels
@@ -9,7 +8,6 @@
# ANDROID_LOG_WARN 0x02
# ANDROID_LOG_ERROR 0x01
# ANDROID_LOG_SILENT 0x00
-#
NXPLOG_EXTNS_LOGLEVEL=0x03
NXPLOG_NCIHAL_LOGLEVEL=0x03
NXPLOG_NCIX_LOGLEVEL=0x03
@@ -37,8 +35,7 @@
# System clock source selection configuration
#define CLK_SRC_XTAL 1
#define CLK_SRC_PLL 2
-
-NXP_SYS_CLK_SRC_SEL=0x01
+NXP_SYS_CLK_SRC_SEL=0x02
###############################################################################
# System clock frequency selection configuration
@@ -48,13 +45,11 @@
#define CLK_FREQ_26MHZ 4
#define CLK_FREQ_38_4MHZ 5
#define CLK_FREQ_52MHZ 6
-
NXP_SYS_CLK_FREQ_SEL=0x01
###############################################################################
# The timeout value to be used for clock request acknowledgment
# min value = 0x01 to max = 0x06
-
NXP_SYS_CLOCK_TO_CFG=0x06
###############################################################################
@@ -75,26 +70,21 @@
# Standby enable settings
#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
###############################################################################
# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, There are currently three
-#configurations (1, 2 and 3) are supported, out of them only one can be
-#supported.
-
+# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported,
+# out of them only one can be configured at a time.
NXP_EXT_TVDD_CFG=0x02
+###############################################################################
#config1:SLALM, 3.3V for both RM and CM
NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C}
+###############################################################################
#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C}
-#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
-#DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 40, 0A}
-
###############################################################################
# NXP RF configuration ALM/PLM settings
# This section needs to be updated with the correct values based on the platform
@@ -131,7 +121,6 @@
#NXP_RF_CONF_BLK_6={
#}
-
###############################################################################
# Set configuration optimization decision setting
# Enable = 0x01
@@ -147,16 +136,20 @@
# Clock settings A002, A003
# PbF settings A008
# Clock timeout settings A004
-NXP_CORE_CONF_EXTN={20, 02, 25, 09,
+# eSE (SVDD) PWR REQ settings A0F2
+# Window size A0D8
+# DWP Speed A0D5
+NXP_CORE_CONF_EXTN={20, 02, 29, 0A,
A0, EC, 01, 01,
A0, ED, 01, 01,
A0, 5E, 01, 01,
A0, 12, 01, 02,
A0, 40, 01, 01,
- A0, DD, 01, 2D,
A0, D1, 01, 02,
A0, D4, 01, 01,
- A0, 37, 01, 11
+ A0, 37, 01, 11,
+ A0, D8, 01, 02,
+ A0, D5, 01, 0A
}
# A0, F2, 01, 01,
# A0, 40, 01, 01,
@@ -169,11 +162,13 @@
# }
###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
+# Core configuration rf field filter settings to enable set to 01 to disable set
+# to 00 last bit
+NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01 }
+
###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
+# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
+# to 0x00
NXP_I2C_FRAGMENTATION_ENABLED=0x00
###############################################################################
@@ -228,23 +223,28 @@
###############################################################################
# CE when Screen state is locked
+# This setting is for DEFAULT_AID_ROUTE,
+# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
# Disable 0x00
# Enable 0x01
NXP_CE_ROUTE_STRICT_DISABLE=0x01
+###############################################################################
#Timeout in secs to get NFCEE Discover notification
NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
+###############################################################################
NXP_DEFAULT_NFCEE_TIMEOUT=0x06
+###############################################################################
#Timeout in secs
NXP_SWP_RD_START_TIMEOUT=0x0A
+###############################################################################
#Timeout in secs
NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
###############################################################################
-
#Set the default AID route Location :
#This settings will be used when application does not set this parameter
# host 0x00
@@ -324,21 +324,25 @@
# AID_MATCHING_L 0x01
# AID_MATCHING_K 0x02
AID_MATCHING_PLATFORM=0x01
+
###############################################################################
# P61 interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LS_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 LTSM interface options
# NFC 0x01
# SPI 0x02
NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
+
###############################################################################
#CHINA_TIANJIN_RF_SETTING
#Enable 0x01
#Disable 0x00
NXP_CHINA_TIANJIN_RF_ENABLED=0x01
+
###############################################################################
#SWP_SWITCH_TIMEOUT_SETTING
# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
@@ -346,11 +350,13 @@
# No Timeout 0x00
# 10 millisecond timeout 0x0A
NXP_SWP_SWITCH_TIMEOUT=0x0A
+
###############################################################################
# P61 interface options for JCOP Download
# NFC 0x01
# SPI 0x02
NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
+
###############################################################################
# P61 JCOP OS download options
# FRAMEWORK API BY APPLICATION 0x00
@@ -365,8 +371,10 @@
# LS2.2 0x22
# AT NFC service intialization
NXP_LOADER_SERVICE_VERSION=0x22
+
###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000 msec to 20000 msec and zero is to disable.
+#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
+#msec to 20000 msec and zero is to disable.
NXP_NFCC_STANDBY_TIMEOUT=20000
###############################################################################
@@ -374,6 +382,7 @@
# Disable 0x00
# Enable 0x01
NXP_AGC_DEBUG_ENABLE=0x00
+
###############################################################################
#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode
# For Technology routing to ESE Technology Mask = 4
@@ -387,7 +396,8 @@
#For Technology routing to UICC Technology Mask = 4
#For ISO-DEP Protocol routing to UICC set Mask = 2
#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay set mask = 0
+#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
+#set mask = 0
NXP_UICC_WIRED_PRT_MASK=0x00
################################################################################
@@ -397,55 +407,56 @@
NXP_WIRED_MODE_RF_FIELD_ENABLE=0x00
###############################################################################
-# UICC mode supported
-# Disable 0x00
-# Enable 0x01
-NXP_DUAL_UICC_ENABLE=0x00
-###############################################################################
#Config to allow adding aids
#NFC on/off is required after this config
#1 = enabling adding aid to NFCC routing table.
#0 = disabling adding aid to NFCC routing table.
NXP_ENABLE_ADD_AID=0x01
+
###############################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal.
+# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
# JCOP CP TIMEOUT
NXP_CP_TIMEOUT={00, 77}
+
###############################################################################
# Enable/Disable checking default proto SE Id
# Disable 0x00
# Enable 0x01
NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
+
###############################################################################
#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
#Enable/Disable block number checks for china transit use case
#Enable 0x01
#Disable 0x00
NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
+
###############################################################################
# Wired mode resume timeout vaule in wired mode resume feature enable
-NXP_WIREDMODE_RESUME_TIMEOUT = 0x02
+# DWP resume time out in microseconds( 4 bytes hex value and LSB first)
+# example 100000 = 0x0186A0
+# exmaple 150000 = 0x0249F0
+# example 200000 = 0x030D40
+NXP_WIREDMODE_RESUME_TIMEOUT={F0,49,02,00}
+
+
###############################################################################
# Power to eSE is controlled by DH or PMU depending on following configurations
#define DH_PWR_CONTROL 1
#define PMU_PWR_CONTROL 2
-
NXP_ESE_POWER_DH_CONTROL=1
###############################################################################
+# Timeout value in milliseconds for wired mode resume after RF field event timeout
+NXP_NFCC_RF_FIELD_EVENT_TIMEOUT=3000
+
+###############################################################################
# NXP PMU Support configuration is sent if PMU_PWR_CONTROL is configured
# External PMU available in phone ON and phone OFF case if NXP_ESE_POWER_EXT_PMU=1
# External PMU available only in phone ON case if NXP_ESE_POWER_EXT_PMU=2
-
NXP_ESE_POWER_EXT_PMU=2
###############################################################################
-# Enable/Disable mifare desfire CE prio feature
-# Disable 0x00
-# Enable 0x01
-NXP_MIFARE_DESFIRE_DISABLE=0x00
-
-###############################################################################
# Whether to allow wired mode in desfire and mifare CLT
# Disable 0x00
# Enable 0x01
@@ -456,3 +467,19 @@
# Blacklist enable 0x01
# Blacklist disable 0x00
NXP_PROP_BLACKLIST_ROUTING=0x00
+
+###############################################################################
+# Send DWP interface reset command as part of SE open
+# Disable 0x00
+# Enable 0x01
+NXP_DWP_INTF_RESET_ENABLE=0x01
+
+###############################################################################
+# Timeout value in milliseconds for JCOP OS download to complete
+OS_DOWNLOAD_TIMEOUT_VALUE=60000
+
+###############################################################################
+# Timeout value in milliseconds to send response for Felica command received
+NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000
+
+###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/nfc_nci.c b/halimpl/pn54x/nfc_nci.c
index 07f723b..ad8b1f4 100644
--- a/halimpl/pn54x/nfc_nci.c
+++ b/halimpl/pn54x/nfc_nci.c
@@ -177,6 +177,25 @@
return retval;
}
+/*******************************************************************************
+**
+** Function hal_get_fw_dwnld_flag
+**
+** Description Notify FW download request.
+**
+** Returns TRUE if successful otherwise FALSE.
+**
+*******************************************************************************/
+static int hal_get_fw_dwnld_flag(const struct nfc_nci_device *p_dev, uint8_t* fwDnldRequest)
+{
+ int retval = 0;
+ pn547_dev_t* dev = (pn547_dev_t*) p_dev;
+
+ retval = phNxpNciHal_getFWDownloadFlag(fwDnldRequest);
+
+ return retval;
+}
+
/*************************************
* Generic device handling.
*************************************/
@@ -236,6 +255,7 @@
dev->nci_device.close = hal_close;
dev->nci_device.control_granted = hal_control_granted;
dev->nci_device.power_cycle = hal_power_cycle;
+ dev->nci_device.check_fw_dwnld_flag = hal_get_fw_dwnld_flag;
*device = (hw_device_t*) dev;
}
}
diff --git a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
index 1bf0fa3..5b91270 100644
--- a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
+++ b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
@@ -16,12 +16,13 @@
#ifdef NXP_HW_SELF_TEST
-
#include <phNxpNciHal_SelfTest.h>
#include <phNxpLog.h>
#include <pthread.h>
#include <phOsalNfc_Timer.h>
#include <phNxpConfig.h>
+#include <NXP_NFCC_Features.h>
+#include <NXP_Platform_Features.h>
#define HAL_WRITE_RSP_TIMEOUT (2000) /* Timeout value to wait for response from PN54X */
#define HAL_WRITE_MAX_RETRY (10)
@@ -86,7 +87,7 @@
},
{
#if(NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40,0x00,0x03,0x00,0x11,0x00} /* exp_rsp */
+ 0x06, {0x40,0x00,0x03,0x00,NXP_NFCC_RESET_RSP_LEN,0x00} /* exp_rsp */
#else
0x06, {0x40,0x00,0x03,0x00,0x10,0x00} /* exp_rsp */
#endif
@@ -158,7 +159,7 @@
},
{
#if(NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40,0x00,0x03,0x00,0x11,0x00} /* exp_rsp */
+ 0x06, {0x40,0x00,0x03,0x00,NXP_NFCC_RESET_RSP_LEN,0x00} /* exp_rsp */
#else
0x06, {0x40,0x00,0x03,0x00,0x10,0x00} /* exp_rsp */
#endif
@@ -228,7 +229,7 @@
},
{
#if(NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40,0x00,0x03,0x00,0x11,0x00} /* exp_rsp */
+ 0x06, {0x40,0x00,0x03,0x00,NXP_NFCC_RESET_RSP_LEN,0x00} /* exp_rsp */
#else
0x06, {0x40,0x00,0x03,0x00,0x10,0x00} /* exp_rsp */
#endif
@@ -287,7 +288,7 @@
},
{
#if(NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40,0x00,0x03,0x00,0x11,0x00} /* exp_rsp */
+ 0x06, {0x40,0x00,0x03,0x00,NXP_NFCC_RESET_RSP_LEN,0x00} /* exp_rsp */
#else
0x06, {0x40,0x00,0x03,0x00,0x10,0x00} /* exp_rsp */
#endif
@@ -390,7 +391,7 @@
},
{
#if(NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40,0x00,0x03,0x00,0x11,0x00} /* exp_rsp */
+ 0x06, {0x40,0x00,0x03,0x00,NXP_NFCC_RESET_RSP_LEN,0x00} /* exp_rsp */
#else
0x06, {0x40,0x00,0x03,0x00,0x10,0x00} /* exp_rsp */
#endif
@@ -494,7 +495,7 @@
},
{
#if(NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40,0x00,0x03,0x00,0x11,0x00} /* exp_rsp */
+ 0x06, {0x40,0x00,0x03,0x00,NXP_NFCC_RESET_RSP_LEN,0x00} /* exp_rsp */
#else
0x06, {0x40,0x00,0x03,0x00,0x10,0x00} /* exp_rsp */
#endif
@@ -531,7 +532,7 @@
},
{
#if(NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40,0x00,0x03,0x00,0x11,0x00} /* exp_rsp */
+ 0x06, {0x40,0x00,0x03,0x00,NXP_NFCC_RESET_RSP_LEN,0x00} /* exp_rsp */
#else
0x06, {0x40,0x00,0x03,0x00,0x10,0x00} /* exp_rsp */
#endif
@@ -636,6 +637,7 @@
st_validator_testAntenna_AgcVal_FixedNfcLd,
st_validator_null
},
+#if(NXP_HW_ANTENNA_LOOP4_SELF_TEST==TRUE)
{
{
0x07, {0x2F, 0x3D, 0x04, 0x08, 0x8C, 0x60, 0x03} /* AGC with NFCLD measurement cmd */
@@ -648,8 +650,8 @@
},
st_validator_testAntenna_AgcVal_Differential,
st_validator_null
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
},
+#endif
{
{
0x04, {0x2F,0x00,0x01,0x01} /* cmd */
@@ -662,7 +664,6 @@
},
st_validator_testEquals, /* validator */
st_validator_null
-#endif
}
};
@@ -2028,7 +2029,11 @@
if(status == NFCSTATUS_SUCCESS)
{
if((gtxldo_status == NFCSTATUS_SUCCESS) && (gagc_value_status == NFCSTATUS_SUCCESS) &&
- (gagc_nfcld_status == NFCSTATUS_SUCCESS) && (gagc_differential_status == NFCSTATUS_SUCCESS))
+ (gagc_nfcld_status == NFCSTATUS_SUCCESS)
+#if(NXP_HW_ANTENNA_LOOP4_SELF_TEST==TRUE)
+ && (gagc_differential_status == NFCSTATUS_SUCCESS)
+#endif
+ )
{
antenna_st_status = NFCSTATUS_SUCCESS;
NXPLOG_NCIHAL_D("phNxpNciHal_AntennaSelfTest - SUCESS\n");
diff --git a/halimpl/pn54x/tml/phTmlNfc.c b/halimpl/pn54x/tml/phTmlNfc.c
index 69d1220..08afc06 100644
--- a/halimpl/pn54x/tml/phTmlNfc.c
+++ b/halimpl/pn54x/tml/phTmlNfc.c
@@ -33,7 +33,9 @@
*/
#define PHTMLNFC_MAXTIME_RETRANSMIT (200U)
#define MAX_WRITE_RETRY_COUNT 0x03
-#define MAX_READ_RETRY_COUNT 0x05
+#if (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
+#define MAX_READ_RETRY_COUNT 0x05
+#endif
/* Retry Count = Standby Recovery time of NFCC / Retransmission time + 1 */
static uint8_t bCurrentRetryCount = (2000 / PHTMLNFC_MAXTIME_RETRANSMIT) + 1;
@@ -347,7 +349,10 @@
NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
int32_t dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
uint8_t temp[260];
+#if (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
static uint8_t read_count = 0;
+#endif
+
/* Transaction info buffer to be passed to Callback Thread */
static phTmlNfc_TransactInfo_t tTransactionInfo;
/* Structure containing Tml callback function and parameters to be invoked
@@ -385,6 +390,7 @@
if (-1 == dwNoBytesWrRd)
{
NXPLOG_TML_E("PN54X - Error in I2C Read.....\n");
+#if (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
if(read_count <= MAX_READ_RETRY_COUNT)
{
read_count++;
@@ -410,12 +416,15 @@
phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId, &tMsg);
return;
}
+#endif
sem_post(&gpphTmlNfc_Context->rxSemaphore);
}
else if(dwNoBytesWrRd > 260)
{
NXPLOG_TML_E("Numer of bytes read exceeds the limit 260.....\n");
+#if (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
read_count = 0;
+#endif
sem_post(&gpphTmlNfc_Context->rxSemaphore);
}
else
@@ -686,7 +695,18 @@
NFCSTATUS phTmlNfc_Shutdown(void)
{
NFCSTATUS wShutdownStatus = NFCSTATUS_SUCCESS;
+#if(NFC_NXP_ESE == TRUE)
+ nfc_service_pid = 0;
+ if(!phTmlNfc_IoCtl(phTmlNfc_e_SetNfcServicePid))
+ {
+ NXPLOG_TML_D("nfc service reset pid done");
+ }
+ else
+ {
+ NXPLOG_TML_D("nfc service reset pid failed");
+ }
+#endif
/* Check whether TML is Initialized */
if (NULL != gpphTmlNfc_Context)
{
@@ -958,26 +978,45 @@
{
/*Block reader thread until VEN Toggling is completed*/
/*Reset PN54X*/
+ uint8_t read_flag = FALSE;
+ if (gpphTmlNfc_Context->tReadInfo.bEnable)
+ {
+ gpphTmlNfc_Context->tReadInfo.bEnable = 0;
+ read_flag = TRUE;
+ }
gpphTmlNfc_Context->tReadInfo.bEnable = 0;
phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 0);
usleep(10 * 1000);
phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 1);
usleep(100 * 1000);
- gpphTmlNfc_Context->tReadInfo.bEnable = 1;
- sem_post(&gpphTmlNfc_Context->rxSemaphore);
+ if (read_flag)
+ {
+ gpphTmlNfc_Context->tReadInfo.bEnable = 1;
+ sem_post(&gpphTmlNfc_Context->rxSemaphore);
+ }
break;
}
case phTmlNfc_e_EnableDownloadMode:
{
phTmlNfc_ConfigNciPktReTx(phTmlNfc_e_DisableRetrans, 0);
gpphTmlNfc_Context->tReadInfo.bEnable = 0;
- (void)phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle,2);
+ wStatus = phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle,2);
usleep(100 * 1000);
gpphTmlNfc_Context->tReadInfo.bEnable = 1;
sem_post(&gpphTmlNfc_Context->rxSemaphore);
break;
}
#if(NFC_NXP_ESE == TRUE)
+ case phTmlNfc_e_SetJcopDwnldEnable:
+ {
+ wStatus = phTmlNfc_i2c_set_Jcop_dwnld_state(gpphTmlNfc_Context->pDevHandle, 2);
+ break;
+ }
+ case phTmlNfc_e_SetJcopDwnldDisable:
+ {
+ wStatus = phTmlNfc_i2c_set_Jcop_dwnld_state(gpphTmlNfc_Context->pDevHandle, 4);
+ break;
+ }
case phTmlNfc_e_SetNfcServicePid:
{
wStatus = phTmlNfc_set_pid(gpphTmlNfc_Context->pDevHandle, nfc_service_pid);
@@ -1013,7 +1052,7 @@
wStatus = phTmlNfc_i2c_set_p61_power_state(gpphTmlNfc_Context->pDevHandle, 4);
break;
}
- case phTmlNfc_e_P73IsoRstMode:
+ case phTmlNfc_e_eSEChipRstMode:
{
wStatus = phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 3);
break;
diff --git a/halimpl/pn54x/tml/phTmlNfc.h b/halimpl/pn54x/tml/phTmlNfc.h
index 45be9c6..4bba392 100644
--- a/halimpl/pn54x/tml/phTmlNfc.h
+++ b/halimpl/pn54x/tml/phTmlNfc.h
@@ -27,7 +27,9 @@
#define PHTMLNFC_H
#include <phNfcCommon.h>
-
+#ifndef NXP_NFCC_FEATURES_H
+#include <NXP_NFCC_Features.h>
+#endif
/*
* Message posted by Reader thread upon
* completion of requested operation
@@ -108,13 +110,15 @@
phTmlNfc_e_SetP61DisableMode, /* Set the ese vdd gpio to low*/
phTmlNfc_e_SetP61EnableMode, /* Set the ese vdd gpio to high*/
phTmlNfc_e_RelP61Access, /*Release the P61 lock*/
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if (NXP_ESE_SVDD_SYNC == TRUE)
phTmlNfc_e_RelP61SvddWait,
#endif
- phTmlNfc_e_P73IsoRstMode, /* ISO RST of P73*/
+ phTmlNfc_e_eSEChipRstMode, /* ISO RST of P73*/
phTmlNfc_e_SetLegacyPowerScheme,
phTmlNfc_e_SetExtPMUPowerScheme,
phTmlNfc_e_SetPN67TPowerScheme,
+ phTmlNfc_e_SetJcopDwnldEnable,
+ phTmlNfc_e_SetJcopDwnldDisable
#endif
} phTmlNfc_ControlCode_t ; /* Control code for IOCTL call */
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.c b/halimpl/pn54x/tml/phTmlNfc_i2c.c
index 135c23d..5ab53f0 100644
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.c
+++ b/halimpl/pn54x/tml/phTmlNfc_i2c.c
@@ -325,15 +325,25 @@
*******************************************************************************/
int phTmlNfc_i2c_reset(void *pDevHandle, long level)
{
- int ret;
+ int ret = -1;
+
NXPLOG_TML_D("phTmlNfc_i2c_reset(), VEN level %ld", level);
if (NULL == pDevHandle)
{
return -1;
}
-
ret = ioctl((intptr_t)pDevHandle, PN544_SET_PWR, level);
+ if(ret < 0)
+ {
+ NXPLOG_TML_E("%s :failed errno = 0x%x", __FUNCTION__, errno);
+ if(level == 2 && errno == EBUSY)
+ {
+ notifyFwrequest = TRUE;
+ }else{
+ notifyFwrequest = FALSE;
+ }
+ }
if(level == 2 && ret == 0)
{
bFwDnldFlag = TRUE;
@@ -346,6 +356,52 @@
#if(NFC_NXP_ESE == TRUE)
/*******************************************************************************
**
+** Function phTmlNfc_i2c_set_Jcop_dwnld_state
+**
+** Description This function set jcop download state.
+**
+** Parameters pDevHandle - valid device handle
+**
+** Returns NFCSTATUS
+**
+**
+*******************************************************************************/
+NFCSTATUS phTmlNfc_i2c_set_Jcop_dwnld_state(void *pDevHandle, long level)
+{
+ int ret = -1;
+ NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
+
+ NXPLOG_TML_D("phTmlNfc_i2c_set_Jcop_dwnld_state(), level %ld", level);
+
+ if (NULL == pDevHandle)
+ return NFCSTATUS_FAILED;
+
+ ret = ioctl((intptr_t)pDevHandle, PN544_SET_DWNLD_STATUS, (unsigned long) level);
+ if(ret < 0)
+ {
+ NXPLOG_TML_E("%s : failed errno = 0x%x", __FUNCTION__, errno);
+ if(errno == -EBUSY)
+ {
+ wStatus = NFCSTATUS_BUSY;
+ }
+ else if(errno == -EBADRQC)
+ {
+ wStatus = NFCSTATUS_INVALID_FORMAT;
+ }
+ else if(errno == -EINVAL)
+ {
+ wStatus = NFCSTATUS_INVALID_PARAMETER;
+ }
+ else
+ {
+ wStatus = NFCSTATUS_FAILED;
+ }
+ }
+ return wStatus;
+}
+
+/*******************************************************************************
+**
** Function phTmlNfc_set_pid
**
** Description
@@ -516,7 +572,7 @@
return status;
}
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if (NXP_ESE_SVDD_SYNC == TRUE)
/*******************************************************************************
**
** Function phTmlNfc_rel_svdd_wait
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.h b/halimpl/pn54x/tml/phTmlNfc_i2c.h
index 54b7fce..575d344 100644
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.h
+++ b/halimpl/pn54x/tml/phTmlNfc_i2c.h
@@ -21,6 +21,9 @@
/* Basic type definitions */
#include <phNfcTypes.h>
#include <phTmlNfc.h>
+#include <NXP_ESE_Features.h>
+
+#define PN544_MAGIC 0xE9
/* Function declarations */
void phTmlNfc_i2c_close(void *pDevHandle);
@@ -29,8 +32,8 @@
int phTmlNfc_i2c_write(void *pDevHandle,uint8_t * pBuffer, int nNbBytesToWrite);
int phTmlNfc_i2c_reset(void *pDevHandle,long level);
bool_t getDownloadFlag(void);
+bool_t notifyFwrequest;
phTmlNfc_i2cfragmentation_t fragmentation_enabled;
-#define PN544_MAGIC 0xE9
/*
* PN544 power control via ioctl
@@ -38,7 +41,7 @@
* PN544_SET_PWR(1): power on
* PN544_SET_PWR(2): reset and power on with firmware download enabled
*/
-#define PN544_SET_PWR _IOW(PN544_MAGIC, 0x01, unsigned int)
+#define PN544_SET_PWR _IOW(PN544_MAGIC, 0x01, long)
#if(NFC_NXP_ESE == TRUE)
NFCSTATUS phTmlNfc_i2c_get_p61_power_state(void *pDevHandle);
@@ -46,7 +49,8 @@
NFCSTATUS phTmlNfc_set_pid(void *pDevHandle, long pid);
NFCSTATUS phTmlNfc_set_power_scheme(void *pDevHandle, long id);
NFCSTATUS phTmlNfc_get_ese_access(void *pDevHandle, long timeout);
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+NFCSTATUS phTmlNfc_i2c_set_Jcop_dwnld_state(void *pDevHandle, long level);
+#if (NXP_ESE_SVDD_SYNC == TRUE)
NFCSTATUS phTmlNfc_rel_svdd_wait(void *pDevHandle);
#endif
/*
@@ -55,19 +59,19 @@
* level 1 = Enable power
* level 0 = Disable power
*/
-#define P61_SET_SPI_PWR _IOW(PN544_MAGIC, 0x02, unsigned int)
+#define P61_SET_SPI_PWR _IOW(PN544_MAGIC, 0x02, long)
/* SPI or DWP can call this ioctl to get the current
* power state of P61
*
*/
-#define P61_GET_PWR_STATUS _IOR(PN544_MAGIC, 0x03, unsigned int)
+#define P61_GET_PWR_STATUS _IOR(PN544_MAGIC, 0x03, long)
/* DWP side this ioctl will be called
* level 1 = Wired access is enabled/ongoing
* level 0 = Wired access is disalbed/stopped
*/
-#define P61_SET_WIRED_ACCESS _IOW(PN544_MAGIC, 0x04, unsigned int)
+#define P61_SET_WIRED_ACCESS _IOW(PN544_MAGIC, 0x04, long)
/*
NFC Init will call the ioctl to register the PID with the i2c driver
@@ -83,9 +87,15 @@
NFC and SPI will call the ioctl to update the power scheme
*/
#define P544_SET_POWER_SCHEME _IOW(PN544_MAGIC, 0x07, long)
-
+#if (NXP_ESE_SVDD_SYNC == TRUE)
/*
NFC will call the ioctl to release the svdd protection
*/
#define P544_REL_SVDD_WAIT _IOW(PN544_MAGIC, 0x08, long)
#endif
+/* SPI or DWP can call this ioctl to set the JCOP download
+ * state of P61
+ *
+*/
+#define PN544_SET_DWNLD_STATUS _IOW(PN544_MAGIC, 0x09, long)
+#endif
diff --git a/halimpl/pn54x/utils/phNxpConfig.cpp b/halimpl/pn54x/utils/phNxpConfig.cpp
index bebb4c1..84f7037 100644
--- a/halimpl/pn54x/utils/phNxpConfig.cpp
+++ b/halimpl/pn54x/utils/phNxpConfig.cpp
@@ -740,8 +740,7 @@
(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") != std::string::npos) ||
- (token.find("NXP_FWD_FUNCTIONALITY_ENABLE") != std::string::npos) ||
- (token.find("NXP_RF_UPDATE_REQ") != std::string::npos))
+ (token.find("NXP_FWD_FUNCTIONALITY_ENABLE") != std::string::npos))
{
stat = true;
diff --git a/halimpl/pn54x/utils/phNxpConfig.h b/halimpl/pn54x/utils/phNxpConfig.h
index 0803eda..9f7fcd1 100644
--- a/halimpl/pn54x/utils/phNxpConfig.h
+++ b/halimpl/pn54x/utils/phNxpConfig.h
@@ -110,10 +110,9 @@
#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"
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if(NXP_ESE_SVDD_SYNC == TRUE)
#define NAME_NXP_SVDD_SYNC_OFF_DELAY "NXP_SVDD_SYNC_OFF_DELAY"
#endif
-#define NAME_NXP_RF_UPDATE_REQ "NXP_RF_UPDATE_REQ"
/* default configuration */
#define default_storage_location "/data/nfc"
diff --git a/src/adaptation/NfcAdaptation.cpp b/src/adaptation/NfcAdaptation.cpp
index 911f5a7..a0910cf 100644
--- a/src/adaptation/NfcAdaptation.cpp
+++ b/src/adaptation/NfcAdaptation.cpp
@@ -178,6 +178,12 @@
nfa_ee_max_ee_cfg = num;
ALOGD("%s: Overriding NFA_EE_MAX_EE_SUPPORTED to use %d", func, nfa_ee_max_ee_cfg);
}
+ else
+ {
+ nfa_ee_max_ee_cfg = NFA_HCI_MAX_HOST_IN_NETWORK;
+ ALOGD("%s: NFA_EE_MAX_EE_SUPPORTED default value to use %d", func, nfa_ee_max_ee_cfg);
+ }
+
if ( GetNumValue ( NAME_NFA_POLL_BAIL_OUT_MODE, &num, sizeof ( num ) ) )
{
nfa_poll_bail_out_mode = num;
@@ -563,9 +569,28 @@
return -1;
}
+/*******************************************************************************
+**
+** Function: NfcAdaptation::HalGetFwDwnldFlag
+**
+** Description: Get FW Download Flag.
+**
+** Returns: SUCESS or FAIL.
+**
+*******************************************************************************/
+int NfcAdaptation::HalGetFwDwnldFlag (UINT8* fwDnldRequest)
+{
+ const char* func = "NfcAdaptation::HalGetFwDwnldFlag";
+ int status = NFA_STATUS_FAILED;
+ ALOGD ("%s", func);
+ if (mHalDeviceContext)
+ {
+ status = mHalDeviceContext->check_fw_dwnld_flag(mHalDeviceContext, fwDnldRequest);
+ }
+ return status;
+}
#endif
-
/*******************************************************************************
**
** Function: NfcAdaptation::HalCoreInitialized
@@ -699,7 +724,7 @@
static UINT8 cmd_init_nci_size = sizeof(cmd_init_nci) / sizeof(UINT8);
tNFC_FWUpdate_Info_t fw_update_inf;
UINT8 p_core_init_rsp_params;
- UINT8 fw_dwnld_status = NFC_STATUS_FAILED;
+ UINT16 fw_dwnld_status = NFC_STATUS_FAILED;
evt_status = NFC_STATUS_FAILED;
#endif
HalInitialize ();
diff --git a/src/hal/include/nci_defs.h b/src/hal/include/nci_defs.h
index 7f5bba9..d8870d8 100755
--- a/src/hal/include/nci_defs.h
+++ b/src/hal/include/nci_defs.h
@@ -194,7 +194,10 @@
#define NCI_STATUS_EE_TRANSMISSION_ERR 0xC1
#define NCI_STATUS_EE_PROTOCOL_ERR 0xC2
#define NCI_STATUS_EE_TIMEOUT 0xC3
-
+#if (NXP_EXTNS == TRUE)
+#define NCI_STATUS_WIRED_SESSION_ABORTED 0xE6
+#define NCI_STATUS_DWP_APDU_DROPPPED 0xE5 /* todo: need to place new error code when FW is readey*/
+#endif
typedef UINT8 tNCI_STATUS;
diff --git a/src/hal/include/nfc_hal_api.h b/src/hal/include/nfc_hal_api.h
index 5645dcc..4220aea 100755
--- a/src/hal/include/nfc_hal_api.h
+++ b/src/hal/include/nfc_hal_api.h
@@ -106,14 +106,14 @@
typedef void (tHAL_API_CLOSE) (void);
typedef void (tHAL_API_CORE_INITIALIZED) (UINT8 *p_core_init_rsp_params);
typedef void (tHAL_API_WRITE) (UINT16 data_len, UINT8 *p_data);
-#if(NXP_EXTNS == TRUE)
-typedef int (tHAL_API_IOCTL) (long arg, void *p_data);
-#endif
typedef BOOLEAN (tHAL_API_PREDISCOVER) (void);
typedef void (tHAL_API_CONTROL_GRANTED) (void);
typedef void (tHAL_API_POWER_CYCLE) (void);
typedef UINT8 (tHAL_API_GET_MAX_NFCEE) (void);
-
+#if(NXP_EXTNS == TRUE)
+typedef int (tHAL_API_IOCTL) (long arg, void *p_data);
+typedef int (tHAL_API_GET_FW_DWNLD_FLAG)(UINT8 *fwDnldRequest);
+#endif
#define NFC_HAL_DM_PRE_SET_MEM_LEN 5
typedef struct
@@ -142,14 +142,14 @@
tHAL_API_CLOSE *close;
tHAL_API_CORE_INITIALIZED *core_initialized;
tHAL_API_WRITE *write;
-#if(NXP_EXTNS == TRUE)
- tHAL_API_IOCTL *ioctl;
-#endif
tHAL_API_PREDISCOVER *prediscover;
tHAL_API_CONTROL_GRANTED *control_granted;
tHAL_API_POWER_CYCLE *power_cycle;
tHAL_API_GET_MAX_NFCEE *get_max_ee;
-
+#if(NXP_EXTNS == TRUE)
+ tHAL_API_IOCTL *ioctl;
+ tHAL_API_GET_FW_DWNLD_FLAG *check_fw_dwnld_flag;
+#endif
} tHAL_NFC_ENTRY;
#if(NXP_EXTNS == TRUE)
diff --git a/src/include/NXP_ESE_Features.h b/src/include/NXP_ESE_Features.h
index 640ed8d..75be818 100755
--- a/src/include/NXP_ESE_Features.h
+++ b/src/include/NXP_ESE_Features.h
@@ -33,6 +33,7 @@
#if(NFC_NXP_CHIP_TYPE == PN547C2)
#define NXP_ESE_WIRED_MODE_DISABLE_DISCOVERY TRUE
+#define NXP_LEGACY_APDU_GATE TRUE
#elif((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
#define NFC_NXP_TRIPLE_MODE_PROTECTION TRUE
@@ -42,6 +43,11 @@
#define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
//Reset scheme
#define NXP_ESE_RESET_METHOD FALSE
+ #define NXP_ESE_ETSI_READER_ENABLE TRUE
+ #define NXP_ESE_SVDD_SYNC TRUE
+ #define NXP_LEGACY_APDU_GATE TRUE
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION TRUE
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION FALSE
#elif(NFC_NXP_CHIP_TYPE == PN553)
#define NFC_NXP_TRIPLE_MODE_PROTECTION FALSE
@@ -49,19 +55,25 @@
#define NXP_ESE_WIRED_MODE_PRIO FALSE
#define NXP_ESE_UICC_EXCLUSIVE_WIRED_MODE FALSE // UICC exclusive wired mode
//dual mode prio scheme
- #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
+ #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_RESUME
//reset scheme
#define NXP_ESE_RESET_METHOD TRUE
#define NXP_ESE_POWER_MODE TRUE
#define NXP_ESE_P73_ISO_RST TRUE
#define NXP_BLOCK_PROPRIETARY_APDU_GATE FALSE
#define NXP_WIRED_MODE_STANDBY TRUE
+ #define NXP_ESE_ETSI_READER_ENABLE TRUE
+ #define NXP_ESE_SVDD_SYNC FALSE
+ #define NXP_LEGACY_APDU_GATE FALSE
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION FALSE
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION TRUE
#endif
#else /*Else of #if(NFC_NXP_ESE == TRUE)*/
#if(NFC_NXP_CHIP_TYPE == PN547C2)
-#define NXP_ESE_WIRED_MODE_DISABLE_DISCOVERY FALSE
+#define NXP_ESE_WIRED_MODE_DISABLE_DISCOVERY FALSE
+#define NXP_LEGACY_APDU_GATE FALSE
#endif
#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
@@ -70,18 +82,29 @@
#define NXP_ESE_FELICA_CLT FALSE
//Reset scheme
#define NXP_ESE_RESET_METHOD FALSE
+ #define NXP_ESE_ETSI_READER_ENABLE FALSE
+ #define NXP_ESE_SVDD_SYNC FALSE
+ #define NXP_LEGACY_APDU_GATE FALSE
+ #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION FALSE
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION TRUE
#elif(NFC_NXP_CHIP_TYPE == PN553)
#define NFC_NXP_TRIPLE_MODE_PROTECTION FALSE
- #define NXP_ESE_FELICA_CLT FALSE
- #define NXP_ESE_WIRED_MODE_PRIO FALSE //eSE wired mode prio over UICC wired mode
- #define NXP_ESE_UICC_EXCLUSIVE_WIRED_MODE FALSE // UICC exclusive wired mode
+ #define NXP_ESE_FELICA_CLT FALSE
+ #define NXP_ESE_WIRED_MODE_PRIO FALSE //eSE wired mode prio over UICC wired mode
+ #define NXP_ESE_UICC_EXCLUSIVE_WIRED_MODE FALSE // UICC exclusive wired mode
//reset scheme
#define NXP_ESE_RESET_METHOD FALSE
#define NXP_ESE_POWER_MODE FALSE
#define NXP_ESE_P73_ISO_RST FALSE
#define NXP_BLOCK_PROPRIETARY_APDU_GATE FALSE
#define NXP_WIRED_MODE_STANDBY FALSE
+ #define NXP_ESE_ETSI_READER_ENABLE FALSE
+ #define NXP_ESE_SVDD_SYNC FALSE
+ #define NXP_ESE_DUAL_MODE_PRIO_SCHEME NXP_ESE_WIRED_MODE_TIMEOUT
+ #define NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION FALSE
+ #define NXP_ESE_JCOP_DWNLD_PROTECTION TRUE
#endif
#endif /*End of #if(NFC_NXP_ESE == TRUE)*/
diff --git a/src/include/NXP_NFCC_Features.h b/src/include/NXP_NFCC_Features.h
index 2607b03..d04f331 100755
--- a/src/include/NXP_NFCC_Features.h
+++ b/src/include/NXP_NFCC_Features.h
@@ -20,16 +20,38 @@
#ifndef NXP_NFCC_FEATURES_H
#define NXP_NFCC_FEATURES_H
-#define NXP_NFCC_EMPTY_DATA_PACKET TRUE
+/*Flags common to all chip types*/
+#define NXP_NFCC_EMPTY_DATA_PACKET TRUE
+#define GEMALTO_SE_SUPPORT TRUE
#if(NFC_NXP_CHIP_TYPE == PN553)
// Example: define macro like below for each feature
//#define NXP_NFCC_FEATURE_1 TRUE
-#define NXP_NFCC_MW_RCVRY_BLK_FW_DNLD TRUE
-#define NXP_NFCC_DYNAMIC_DUAL_UICC TRUE
-#define NXP_NFCC_FW_WA TRUE
-#define NXP_NFCC_ROUTING_BLOCK_BIT TRUE
+#define NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT TRUE
+#define NXP_NFCC_MIFARE_TIANJIN FALSE
+#define NXP_NFCC_MW_RCVRY_BLK_FW_DNLD TRUE
+#define NXP_NFCC_DYNAMIC_DUAL_UICC TRUE
+#define NXP_NFCC_FW_WA TRUE
+#define NXP_NFCC_FORCE_NCI1_0_INIT FALSE
+#define NXP_NFCC_ROUTING_BLOCK_BIT TRUE
+#define NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH FALSE
+#define NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH TRUE
+#define NXP_NFCC_SPI_FW_DOWNLOAD_SYNC TRUE
+#define NXP_HW_ANTENNA_LOOP4_SELF_TEST FALSE
#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
+#define NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT TRUE
+#define NXP_NFCC_AID_MATCHING_PLATFORM_CONFIG TRUE
+#define NXP_NFCC_DYNAMIC_DUAL_UICC FALSE
+#define NXP_NFCC_ROUTING_BLOCK_BIT_PROP TRUE
+#define NXP_NFCC_MIFARE_TIANJIN TRUE
+#define NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH TRUE
+#define NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH FALSE
+#define NXP_NFCC_SPI_FW_DOWNLOAD_SYNC FALSE
+#define NXP_HW_ANTENNA_LOOP4_SELF_TEST TRUE
+#elif(NFC_NXP_CHIP_TYPE == PN547C2)
+#define NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT FALSE
+#define NXP_NFCC_AID_MATCHING_PLATFORM_CONFIG TRUE
+#define NXP_NFCC_MIFARE_TIANJIN TRUE
+#define NXP_NFCC_SPI_FW_DOWNLOAD_SYNC FALSE
+#define NXP_HW_ANTENNA_LOOP4_SELF_TEST TRUE
#endif
#endif /* end of #ifndef NXP_NFCC_FEATURES_H */
diff --git a/src/include/NfcAdaptation.h b/src/include/NfcAdaptation.h
index d8331e6..ef6247e 100644
--- a/src/include/NfcAdaptation.h
+++ b/src/include/NfcAdaptation.h
@@ -91,6 +91,7 @@
void DownloadFirmware ();
#if(NXP_EXTNS == TRUE)
void MinInitialize ();
+ int HalGetFwDwnldFlag (UINT8* fwDnldRequest);
#endif
private:
diff --git a/src/include/config.h b/src/include/config.h
index b7e0246..0510f14 100644
--- a/src/include/config.h
+++ b/src/include/config.h
@@ -131,19 +131,29 @@
#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"
+#define NAME_NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT "NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT"
+#define NAME_NXP_NFCC_RF_FIELD_EVENT_TIMEOUT "NXP_NFCC_RF_FIELD_EVENT_TIMEOUT"
+#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
+#define NAME_NXP_PROP_BLACKLIST_ROUTING "NXP_PROP_BLACKLIST_ROUTING"
+#endif
+#if(NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_TIMEOUT)
#define NAME_NXP_MIFARE_DESFIRE_DISABLE "NXP_MIFARE_DESFIRE_DISABLE"
-#define NAME_NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT "NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT"
+#endif
#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
#define NAME_NXP_DUAL_UICC_ENABLE "NXP_DUAL_UICC_ENABLE"
#endif
-#define NAME_NXP_NFCC_PASSIVE_LISTEN_TIMEOUT "NXP_NFCC_PASSIVE_LISTEN_TIMEOUT"
+#if(NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
+#define NAME_NXP_NFCC_PASSIVE_LISTEN_TIMEOUT "NXP_NFCC_PASSIVE_LISTEN_TIMEOUT"
#endif
+#if(NXP_ESE_JCOP_DWNLD_PROTECTION == TRUE)
+#define NAME_OS_DOWNLOAD_TIMEOUT_VALUE "OS_DOWNLOAD_TIMEOUT_VALUE"
+#endif
+#define NAME_NXP_HCEF_CMD_RSP_TIMEOUT_VALUE "NXP_HCEF_CMD_RSP_TIMEOUT_VALUE"
+#endif
+
#define LPTD_PARAM_LEN (40)
// default configuration
diff --git a/src/include/nfc_target.h b/src/include/nfc_target.h
index d292d01..8434eb9 100644
--- a/src/include/nfc_target.h
+++ b/src/include/nfc_target.h
@@ -272,7 +272,7 @@
/* Maximum time to discover NFCEE */
#ifndef NFA_EE_DISCV_TIMEOUT_VAL
-#define NFA_EE_DISCV_TIMEOUT_VAL 2000
+#define NFA_EE_DISCV_TIMEOUT_VAL 4000
#endif
/* Number of times reader/writer should attempt to resend a command on failure */
@@ -746,6 +746,9 @@
*****************************************************************************/
#ifndef HAL_WRITE
#define HAL_WRITE(p) {nfc_cb.p_hal->write(p->len, (UINT8 *)(p+1) + p->offset); GKI_freebuf(p);}
+#if (NXP_EXTNS == TRUE)
+#define HAL_RE_WRITE(p) {nfc_cb.p_hal->write(p->len, (UINT8 *)(p+1) + p->offset);}
+#endif
#ifdef NFC_HAL_SHARED_GKI
diff --git a/src/nfa/ce/nfa_ce_act.c b/src/nfa/ce/nfa_ce_act.c
index b75c507..f89f2f0 100755
--- a/src/nfa/ce/nfa_ce_act.c
+++ b/src/nfa/ce/nfa_ce_act.c
@@ -354,6 +354,7 @@
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++;
@@ -380,12 +381,10 @@
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){
+ 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_act.c b/src/nfa/dm/nfa_dm_act.c
index 39f6199..c9ef7fa 100755
--- a/src/nfa/dm/nfa_dm_act.c
+++ b/src/nfa/dm/nfa_dm_act.c
@@ -382,12 +382,14 @@
break;
case NFC_EE_DISCOVER_REQ_REVT: /* EE Discover Req notification */
-// if (nfa_dm_is_active() &&
-// (nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_DISCOVERY) )
-// {
-// nfa_dm_rf_deactivate (NFA_DEACTIVATE_TYPE_IDLE);
-// }
- nfa_ee_proc_evt (event, p_data);
+#if((NFC_NXP_ESE == TRUE) && (NXP_EXTNS == TRUE) && (NXP_ESE_ETSI_READER_ENABLE != TRUE))
+ if (nfa_dm_is_active() &&
+ (nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_DISCOVERY) )
+ {
+ nfa_dm_rf_deactivate (NFA_DEACTIVATE_TYPE_IDLE);
+ }
+#endif
+ nfa_ee_proc_evt (event, p_data);
break;
#endif
@@ -464,7 +466,7 @@
else
{
#endif
-#if (NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if ((NFC_NXP_ESE == TRUE) && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
conn_evt.status = p_data->status;
nfa_dm_conn_cback_event_notify (NFA_RECOVERY_EVT, &conn_evt);
#endif
@@ -475,6 +477,12 @@
case NFC_NFCC_TRANSPORT_ERR_REVT:
NFA_TRACE_DEBUG1 ("flags:0x%08x", nfa_dm_cb.flags);
+#if(NXP_EXTNS == TRUE && NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE)
+ if(p_data->status == NFC_STATUS_FAILED)
+ {
+ dm_cback_data.status = p_data->status;
+ }
+#endif
dm_cback_evt = (event == NFC_NFCC_TIMEOUT_REVT) ? NFA_DM_NFCC_TIMEOUT_EVT : NFA_DM_NFCC_TRANSPORT_ERR_EVT;
(*nfa_dm_cb.p_dm_cback) (dm_cback_evt, NULL);
break;
@@ -1203,7 +1211,11 @@
NFA_TRACE_DEBUG0 ("nfa_dm_act_enable_listening ()");
- nfa_dm_cb.flags &= (~NFA_DM_FLAGS_LISTEN_DISABLED & ~NFA_DM_FLAGS_PASSIVE_LISTEN_DISABLED);
+ nfa_dm_cb.flags &= (~NFA_DM_FLAGS_LISTEN_DISABLED
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
+ & ~NFA_DM_FLAGS_PASSIVE_LISTEN_DISABLED
+#endif
+ );
evt_data.status = NFA_STATUS_OK;
nfa_dm_conn_cback_event_notify (NFA_LISTEN_ENABLED_EVT, &evt_data);
@@ -1233,6 +1245,7 @@
return (TRUE);
}
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
/*******************************************************************************
**
** Function nfa_dm_act_disable_passive_listening
@@ -1254,7 +1267,7 @@
return (TRUE);
}
-
+#endif
/*******************************************************************************
**
** Function nfa_dm_act_pause_p2p
diff --git a/src/nfa/dm/nfa_dm_api.c b/src/nfa/dm/nfa_dm_api.c
index 1e48e33..544f768 100755
--- a/src/nfa/dm/nfa_dm_api.c
+++ b/src/nfa/dm/nfa_dm_api.c
@@ -561,6 +561,7 @@
return (NFA_STATUS_FAILED);
}
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
/*******************************************************************************
**
** Function NFA_DisablePassiveListening
@@ -593,6 +594,8 @@
return (NFA_STATUS_FAILED);
}
+#endif
+
/*******************************************************************************
**
** Function NFA_PauseP2p
@@ -1358,6 +1361,25 @@
#if(NXP_EXTNS == TRUE)
/*******************************************************************************
**
+** Function NFA_checkNfcStateBusy()
+**
+** Description This function returns whether NFC process is busy or not
+
+**
+** Returns if Nfc state busy return true otherwise false.
+**
+*******************************************************************************/
+BOOLEAN NFA_checkNfcStateBusy()
+{
+
+ if(nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_DISCOVERY)
+ return FALSE;
+
+ return TRUE;
+}
+
+/*******************************************************************************
+**
** Function NFA_SetReaderMode
**
** Description:
diff --git a/src/nfa/dm/nfa_dm_discover.c b/src/nfa/dm/nfa_dm_discover.c
index 1d77bd9..f4d23a6 100755
--- a/src/nfa/dm/nfa_dm_discover.c
+++ b/src/nfa/dm/nfa_dm_discover.c
@@ -102,7 +102,7 @@
static UINT16 P2P_PRIO_LOGIC_DEACT_NTF_TIMEOUT = 200; /* timeout value 2 sec waiting for deactivate ntf */
#endif
-#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if(NFC_NXP_ESE == TRUE && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
BOOLEAN etsi_reader_in_progress = FALSE;
#endif
/*******************************************************************************
@@ -133,13 +133,14 @@
NFA_TRACE_DEBUG1 ("nfa_dm_get_rf_discover_config () removing active listen A/B 0x%x", dm_disc_mask);
dm_disc_mask &= ~NFA_DM_DISC_MASK_NFC_DEP;
}
-
+#if((NXP_EXTNS == TRUE) && (NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE))
if (nfa_dm_cb.flags & NFA_DM_FLAGS_PASSIVE_LISTEN_DISABLED)
{
NFA_TRACE_DEBUG1 ("nfa_dm_get_rf_discover_config () passive listen disabled, rm listen from 0x%x", dm_disc_mask);
dm_disc_mask &= NFA_DM_DISC_MASK_ACTIVE_LISTEN;
dm_disc_mask |= (NFA_DM_DISC_MASK_LAA_NFC_DEP | NFA_DM_DISC_MASK_LFA_NFC_DEP);
}
+#endif
/* Check polling A */
if (dm_disc_mask & ( NFA_DM_DISC_MASK_PA_T1T
|NFA_DM_DISC_MASK_PA_T2T
@@ -1156,7 +1157,7 @@
(void)p_tle;
NFA_TRACE_ERROR0 ("nfa_dm_disc_deact_ntf_timeout_cback()");
-#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if((NFC_NXP_ESE == TRUE) && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
if (nfc_cb.num_disc_maps == 1)
{
NFC_TRACE_ERROR0 ("reset Nfc..!!");
@@ -1168,7 +1169,7 @@
{
#endif
nfa_dm_disc_force_to_idle();
-#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if((NFC_NXP_ESE == TRUE) && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
}
#endif
}
@@ -3406,6 +3407,13 @@
}
else
{
+#if(NXP_EXTNS == TRUE)
+ if (nfa_dm_cb.disc_cb.kovio_tle.in_use)
+ {
+ nfa_sys_stop_timer (&nfa_dm_cb.disc_cb.kovio_tle);
+ nfa_dm_disc_kovio_timeout_cback (&nfa_dm_cb.disc_cb.kovio_tle);
+ }
+#endif
nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD, (void *) &deactivate_type);
return NFA_STATUS_OK;
}
diff --git a/src/nfa/dm/nfa_dm_main.c b/src/nfa/dm/nfa_dm_main.c
index 1dce30b..458f30a 100755
--- a/src/nfa/dm/nfa_dm_main.c
+++ b/src/nfa/dm/nfa_dm_main.c
@@ -90,7 +90,9 @@
nfa_dm_act_disable_polling, /* NFA_DM_API_DISABLE_POLLING_EVT */
nfa_dm_act_enable_listening, /* NFA_DM_API_ENABLE_LISTENING_EVT */
nfa_dm_act_disable_listening, /* NFA_DM_API_DISABLE_LISTENING_EVT */
+#if((NXP_EXTNS == TRUE) && (NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE))
nfa_dm_act_disable_passive_listening,/* NFA_DM_API_DISABLE_PASSIVE_LISTENING_EVT */
+#endif
nfa_dm_act_pause_p2p, /* NFA_DM_API_PAUSE_P2P_EVT */
nfa_dm_act_resume_p2p, /* NFA_DM_API_RESUME_P2P_EVT */
nfa_dm_act_send_raw_frame, /* NFA_DM_API_RAW_FRAME_EVT */
@@ -494,7 +496,7 @@
#endif
(updated_len || app_init)
#if(NXP_EXTNS == TRUE)
- && (appl_dta_mode_flag == 0x00 || nfa_dm_cb.eDtaMode == NFA_DTA_HCEF_MODE) )
+ && (appl_dta_mode_flag == 0x00 || nfa_dm_cb.eDtaMode == NFA_DTA_HCEF_MODE))
|| ((appl_dta_mode_flag) && (app_init)))
#endif
{
@@ -602,8 +604,10 @@
case NFA_DM_API_DISABLE_LISTENING_EVT:
return "NFA_DM_API_DISABLE_LISTENING_EVT";
+#if((NXP_EXTNS == TRUE) && (NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE))
case NFA_DM_API_DISABLE_PASSIVE_LISTENING_EVT:
return "NFA_DM_API_DISABLE_PASSIVE_LISTENING_EVT";
+#endif
case NFA_DM_API_PAUSE_P2P_EVT:
return "NFA_DM_API_PAUSE_P2P_EVT";
diff --git a/src/nfa/ee/nfa_ee_act.c b/src/nfa/ee/nfa_ee_act.c
index 44aac7e..9879ae2 100755
--- a/src/nfa/ee/nfa_ee_act.c
+++ b/src/nfa/ee/nfa_ee_act.c
@@ -2347,19 +2347,19 @@
UINT8 new_size;
tNFA_STATUS status = NFA_STATUS_OK;
#if(NXP_NFCC_ROUTING_BLOCK_BIT==TRUE)
- UINT8 value=0x00;
+ UINT8 route_blacklist_mask=0x00;
long retlen = 0;
- NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING enter=0x%x",value);
+ NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING enter=0x%x",route_blacklist_mask);
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);
+ route_blacklist_mask =NFA_EE_NXP_ROUTE_BLOCK_BIT;
+ NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING change=0x%x",route_blacklist_mask);
}
else
{
- NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING exit=0x%x",value);
+ NFA_TRACE_DEBUG1 ("NAME_NXP_PROP_BLACKLIST_ROUTING exit=0x%x",route_blacklist_mask);
}
}
#endif
@@ -2393,13 +2393,13 @@
//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;
+ *pp |= route_blacklist_mask;
#endif
} else {
//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;
+ *pp |= route_blacklist_mask;
#endif
}
*pp++;
@@ -2467,7 +2467,7 @@
/*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;
+ *proto_pp |= route_blacklist_mask;
}
#endif
*proto_pp++;
@@ -2500,7 +2500,6 @@
*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++)
{
@@ -2601,7 +2600,7 @@
/*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;
+ *pp |= route_blacklist_mask;
}
#endif
*pp++;
@@ -2664,12 +2663,12 @@
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)|((NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00);
+ *pp++ = (NFC_ROUTE_TAG_AID|NFA_EE_AE_NXP_PREFIX_MATCH)|(route_blacklist_mask);
#endif
} else {
#if(NXP_NFCC_ROUTING_BLOCK_BIT==FALSE)
//This aid is for exact match.
- *pp++ = NFC_ROUTE_TAG_AID|((NFA_EE_NXP_ROUTE_BLOCK_BIT & value)?NFA_EE_NXP_ROUTE_BLOCK_BIT:0x00);
+ *pp++ = NFC_ROUTE_TAG_AID|(route_blacklist_mask);
#endif
}
#else
@@ -2907,7 +2906,7 @@
void nfa_ee_discv_timeout(tNFA_EE_MSG *p_data)
{
(void)p_data;
-
+ NFA_TRACE_DEBUG0("nfa_ee_discv_timeout ()");
NFC_NfceeDiscover(FALSE);
if (nfa_ee_cb.p_enable_cback)
(*nfa_ee_cb.p_enable_cback)(NFA_EE_DISC_STS_OFF);
diff --git a/src/nfa/ee/nfa_ee_main.c b/src/nfa/ee/nfa_ee_main.c
index 91cc6dc..27554e2 100755
--- a/src/nfa/ee/nfa_ee_main.c
+++ b/src/nfa/ee/nfa_ee_main.c
@@ -710,7 +710,7 @@
NFA_TRACE_DEBUG2 ("nfa_ee_evt_hdlr (): Event 0x%02x, State: %d", p_evt_data->hdr.event, nfa_ee_cb.em_state);
#endif
-#if(NXP_EXTNS == TRUE)
+#if 0
/*This is required to receive Reader Over SWP event*/
if(p_evt_data->hdr.event == NFA_EE_NCI_DISC_NTF_EVT)
{
diff --git a/src/nfa/hci/nfa_hci_act.c b/src/nfa/hci/nfa_hci_act.c
index 4ec29c9..18f728d 100755
--- a/src/nfa/hci/nfa_hci_act.c
+++ b/src/nfa/hci/nfa_hci_act.c
@@ -1099,7 +1099,9 @@
{
nfa_hci_cb.w4_rsp_evt = TRUE;
nfa_hci_cb.hci_state = NFA_HCI_STATE_WAIT_RSP;
-
+#if (NXP_EXTNS == TRUE)
+ nfa_hci_cb.hciResponseTimeout = p_evt_data->send_evt.rsp_timeout;
+#endif
nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, p_evt_data->send_evt.rsp_timeout);
}
else if (p_pipe->local_gate == NFA_HCI_LOOP_BACK_GATE)
@@ -2769,6 +2771,7 @@
evt_data.admin_rsp_rcvd.status = status;
nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
/* Send NFA_HCI_CMD_SENT_EVT to notify success */
+ nfa_hciu_send_to_all_apps (NFA_HCI_CONFIG_DONE_EVT, &evt_data);
}
break;
}
diff --git a/src/nfa/hci/nfa_hci_api.c b/src/nfa/hci/nfa_hci_api.c
index 1293564..9c79a61 100755
--- a/src/nfa/hci/nfa_hci_api.c
+++ b/src/nfa/hci/nfa_hci_api.c
@@ -1058,7 +1058,6 @@
}
#endif
#if(NXP_EXTNS == TRUE)
-#if (JCOP_WA_ENABLE == TRUE)
/*******************************************************************************
**
** Function NFA_HciW4eSETransaction_Complete
@@ -1093,7 +1092,6 @@
}
NFA_TRACE_API0 ("NFA_HciW4eSETransaction_Complete; End");
}
-#endif
/*******************************************************************************
**
diff --git a/src/nfa/hci/nfa_hci_main.c b/src/nfa/hci/nfa_hci_main.c
index 02de5b9..e4f5c63 100755
--- a/src/nfa/hci/nfa_hci_main.c
+++ b/src/nfa/hci/nfa_hci_main.c
@@ -78,10 +78,10 @@
static void nfa_hci_sys_enable (void);
static void nfa_hci_sys_disable (void);
-void nfa_hci_rsp_timeout (tNFA_HCI_EVENT_DATA *p_evt_data);
static void nfa_hci_conn_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data);
static void nfa_hci_set_receive_buf (UINT8 pipe);
#if (NXP_EXTNS == TRUE)
+void nfa_hci_rsp_timeout (tNFA_HCI_EVENT_DATA *p_evt_data);
static void nfa_hci_assemble_msg (UINT8 *p_data, UINT16 data_len, UINT8 pipe);
static UINT8 nfa_ee_ce_p61_completed = 0x00;
#else
@@ -162,6 +162,18 @@
nfa_hciu_send_get_param_cmd (NFA_HCI_ADMIN_PIPE, NFA_HCI_HOST_LIST_INDEX);
}
}
+#if(NXP_EXTNS == TRUE)
+ /* All the EE_DISC_NTF's received
+ * Avoid 4sec delay during HCI initialization
+ */
+ if (nfa_hci_cb.w4_hci_netwk_init &&
+ nfa_hci_cb.timer.in_use)
+ {
+ nfa_sys_stop_timer (&nfa_hci_cb.timer);
+ nfa_hci_cb.w4_hci_netwk_init = FALSE;
+ nfa_hciu_send_get_param_cmd (NFA_HCI_ADMIN_PIPE, NFA_HCI_HOST_LIST_INDEX);
+ }
+#endif
}
else if (nfa_hci_cb.num_nfcee <= 1)
{
@@ -230,6 +242,8 @@
nfa_hci_cb.hci_state = NFA_HCI_STATE_STARTUP;
#if (NXP_EXTNS == TRUE)
nfa_ee_ce_p61_completed = 0;
+ nfa_hci_cb.bIsHciResponseTimedout = FALSE;
+ nfa_hci_cb.bIsRspPending = FALSE;
#endif
/* register message handler on NFA SYS */
nfa_sys_register (NFA_ID_HCI, &nfa_hci_sys_reg);
@@ -833,7 +847,20 @@
char buff[100];
static BOOLEAN is_first_chain_pkt = TRUE;
#endif
-
+#if ((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ if(event == NFC_HCI_RESTART_TIMER)
+ {
+ if(nfa_hci_cb.IsHciTimerExtended)
+ {
+ nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, NFA_HCI_EXTENDED_PKT_RSP_TIMEOUT);
+ }
+ else
+ {
+ nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, nfa_hci_cb.hciResponseTimeout);
+ }
+ return;
+ }
+#endif
if (event == NFC_CONN_CREATE_CEVT)
{
nfa_hci_cb.conn_id = conn_id;
@@ -1105,37 +1132,33 @@
/* If we got a response, cancel the response timer. Also, if waiting for */
/* a single response, we can go back to idle state */
- if (
-#if (NXP_EXTNS == TRUE)
- (pipe == NFA_HCI_APDU_PIPE) &&(
-#endif
- (nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_RSP)
- &&((nfa_hci_cb.type == NFA_HCI_RESPONSE_TYPE) || (nfa_hci_cb.w4_rsp_evt && (nfa_hci_cb.type == NFA_HCI_EVENT_TYPE)
- ))
-#if (NXP_EXTNS == TRUE)
- )
-#endif
- )
+ if ( (nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_RSP) &&
+ ((nfa_hci_cb.type == NFA_HCI_RESPONSE_TYPE) || (nfa_hci_cb.w4_rsp_evt && (nfa_hci_cb.type == NFA_HCI_EVENT_TYPE)))
+ )
{
- nfa_sys_stop_timer (&nfa_hci_cb.timer);
#if (NXP_EXTNS == TRUE)
- is_first_chain_pkt = TRUE;
- if(nfa_hci_cb.inst == NFA_HCI_EVT_WTX)
+ if(pipe == NFA_HCI_APDU_PIPE)
{
- if(nfa_hci_cb.w4_rsp_evt == TRUE)
+ nfa_sys_stop_timer (&nfa_hci_cb.timer);
+ is_first_chain_pkt = TRUE;
+ if(nfa_hci_cb.inst == NFA_HCI_EVT_WTX)
{
- const INT32 rsp_timeout = NFA_HCI_WTX_RESP_TIMEOUT; //3-sec
- nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, rsp_timeout);
+ if(nfa_hci_cb.w4_rsp_evt == TRUE)
+ {
+ const INT32 rsp_timeout = NFA_HCI_WTX_RESP_TIMEOUT; //3-sec
+ nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, rsp_timeout);
+ }
+ }
+ else
+ {
+ nfa_ee_ce_p61_completed = 0;
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
}
}
- else
+#else
+ nfa_sys_stop_timer (&nfa_hci_cb.timer);
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
#endif
- {
-#if (NXP_EXTNS == TRUE)
- nfa_ee_ce_p61_completed = 0;
-#endif
- nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
- }
}
switch (pipe)
@@ -1168,21 +1191,18 @@
break;
}
- if (
+ if ( (nfa_hci_cb.type == NFA_HCI_RESPONSE_TYPE) || (nfa_hci_cb.w4_rsp_evt && (nfa_hci_cb.type == NFA_HCI_EVENT_TYPE)
#if (NXP_EXTNS == TRUE)
- (pipe == NFA_HCI_APDU_PIPE) && (
+ && (nfa_hci_cb.inst != NFA_HCI_EVT_WTX)
#endif
- (nfa_hci_cb.type == NFA_HCI_RESPONSE_TYPE) || (nfa_hci_cb.w4_rsp_evt && (nfa_hci_cb.type == NFA_HCI_EVENT_TYPE)
-#if (NXP_EXTNS == TRUE)
- && (nfa_hci_cb.inst != NFA_HCI_EVT_WTX)
-#endif
- )
-#if (NXP_EXTNS == TRUE)
- )
-#endif
- )
+ ) )
{
- nfa_hci_cb.w4_rsp_evt = FALSE;
+#if (NXP_EXTNS == TRUE)
+ if(pipe == NFA_HCI_APDU_PIPE)
+#endif
+ {
+ nfa_hci_cb.w4_rsp_evt = FALSE;
+ }
}
/* Send a message to ouselves to check for anything to do */
@@ -1301,7 +1321,11 @@
case NFA_HCI_STATE_WAIT_RSP:
nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
-
+#if(NXP_EXTNS == TRUE)
+ nfa_hci_cb.IsChainedPacket = FALSE;
+ nfa_hci_cb.bIsHciResponseTimedout = TRUE;
+ nfa_hci_cb.bIsRspPending = FALSE;
+#endif
if (nfa_hci_cb.w4_rsp_evt)
{
nfa_hci_cb.w4_rsp_evt = FALSE;
@@ -1312,7 +1336,9 @@
evt_data.rcvd_evt.p_evt_buf = NULL;
nfa_hci_cb.rsp_buf_size = 0;
nfa_hci_cb.p_rsp_buf = NULL;
-
+#if (NXP_EXTNS == TRUE)
+ evt_data.evt_sent.evt_type = nfa_hci_cb.evt_sent.evt_type;
+#endif
break;
}
diff --git a/src/nfa/hci/nfa_hci_utils.c b/src/nfa/hci/nfa_hci_utils.c
index d69460e..3e6e7f8 100755
--- a/src/nfa/hci/nfa_hci_utils.c
+++ b/src/nfa/hci/nfa_hci_utils.c
@@ -339,7 +339,9 @@
UINT16 data_len;
tNFA_STATUS status = NFA_STATUS_OK;
UINT16 max_seg_hcp_pkt_size = nfa_hci_cb.buff_size;
-
+#if (NXP_EXTNS == TRUE)
+ nfa_hci_cb.IsChainedPacket = FALSE;
+#endif
#if (BT_TRACE_VERBOSE == TRUE)
char buff[100];
@@ -368,6 +370,9 @@
if (msg_len > data_len)
{
*p_data++ = (NFA_HCI_MESSAGE_FRAGMENTATION << 7) | (pipe_id & 0x7F);
+#if (NXP_EXTNS == TRUE)
+ nfa_hci_cb.IsChainedPacket = TRUE;
+#endif
}
else
{
@@ -421,7 +426,12 @@
nfa_hci_cb.hci_state = NFA_HCI_STATE_WAIT_RSP;
nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, p_nfa_hci_cfg->hcp_response_timeout);
}
-
+#if (NXP_EXTNS == TRUE)
+ else if (type == NFA_HCI_EVENT_TYPE)
+ {
+ nfa_hci_cb.evt_sent.evt_type = instruction;
+ }
+#endif
return status;
}
@@ -932,7 +942,9 @@
{
evt_data.deleted.status = NFA_STATUS_OK;
evt_data.deleted.pipe = pp->pipe_id;
-
+#if (NXP_EXTNS == TRUE)
+ evt_data.deleted.host = host;
+#endif
nfa_hciu_send_to_app (NFA_HCI_DELETE_PIPE_EVT, &evt_data, pg->gate_owner);
}
nfa_hciu_release_pipe (pp->pipe_id);
diff --git a/src/nfa/include/nfa_api.h b/src/nfa/include/nfa_api.h
index fe32186..422f505 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 Application ID in 7816-4 */
+/* Max length of Appliction ID in 7816-4 */
#define NFA_MAX_AID_LEN NFC_MAX_AID_LEN
#define NFA_MIN_AID_LEN 5 /* per NCI specification */
@@ -98,6 +98,9 @@
#define NFA_STATUS_BAD_LENGTH NFC_STATUS_BAD_LENGTH /* data len exceeds MIU */
#define NFA_STATUS_BAD_HANDLE NFC_STATUS_BAD_HANDLE /* invalid handle */
#define NFA_STATUS_CONGESTED NFC_STATUS_CONGESTED /* congested */
+#if (NXP_EXTNS == TRUE)
+#define NFA_STATUS_WIRED_SESSION_ABORTED NFC_STATUS_WIRED_SESSION_ABORTED /* WIRED_SESSION_ABORTED error */
+#endif
typedef UINT8 tNFA_STATUS;
/* Handle for NFA registrations and connections */
@@ -335,8 +338,10 @@
#define NFA_CE_ESE_LISTEN_CONFIGURED_EVT 40 /* ESE Listen configured */
#define NFA_ACTIVATED_UPDATE_EVT 41 /* Activated intf for updating the tech variables */
#define NFA_RECOVERY_EVT 42 /*Recovery*/
-#endif
+#if(NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
#define NFA_PASSIVE_LISTEN_DISABLED_EVT 44 /* Passive Listening disabled event */
+#endif
+#endif
/* NFC deactivation type */
#define NFA_DEACTIVATE_TYPE_IDLE NFC_DEACTIVATE_TYPE_IDLE
#define NFA_DEACTIVATE_TYPE_SLEEP NFC_DEACTIVATE_TYPE_SLEEP
@@ -988,6 +993,7 @@
*******************************************************************************/
NFC_API extern tNFA_STATUS NFA_DisableListening (void);
+#if((NXP_EXTNS == TRUE) && (NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE))
/*******************************************************************************
**
** Function NFA_DisablePassiveListening
@@ -1004,6 +1010,7 @@
**
*******************************************************************************/
NFC_API extern tNFA_STATUS NFA_DisablePassiveListening (void);
+#endif
/*******************************************************************************
**
@@ -1417,6 +1424,18 @@
**
*******************************************************************************/
NFC_API extern tNFA_MW_VERSION NFA_GetMwVersion ();
+
+/*******************************************************************************
+**
+** Function NFA_checkNfcStateBusy()
+**
+** Description This function returns whether NFC process is busy or not.
+**
+** Returns if Nfc state busy return true otherwise false.
+**
++*******************************************************************************/
+NFC_API extern BOOLEAN NFA_checkNfcStateBusy();
+
#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
NFC_API extern void NFA_EE_HCI_Control(BOOLEAN mode);
NFC_API extern tNFA_STATUS NFA_ResetNfcc();
diff --git a/src/nfa/include/nfa_ee_api.h b/src/nfa/include/nfa_ee_api.h
index 6b17bce..515141c 100644
--- a/src/nfa/include/nfa_ee_api.h
+++ b/src/nfa/include/nfa_ee_api.h
@@ -128,7 +128,18 @@
#define NFA_EE_STATUS_DEACTIVATING (NFA_EE_STATUS_PENDING+NFC_NFCEE_STATUS_INACTIVE)
typedef UINT8 tNFA_EE_STATUS;
-
+/* list of events for controlling DWP transceive state */
+typedef enum
+{
+ NFCC_RF_FIELD_EVT,
+ NFCC_ACTIVATED_NTF,
+ NFCC_DEACTIVATED_NTF,
+ NFCC_ACTION_NTF,
+ NFCC_CE_DATA_EVT,
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
+ NFCC_RF_TIMEOUT_EVT
+#endif
+}tNFCC_EVTS_NTF;
/* additional NFCEE Info */
typedef struct
diff --git a/src/nfa/include/nfa_hci_api.h b/src/nfa/include/nfa_hci_api.h
index 9e7fe45..3a78bd3 100755
--- a/src/nfa/include/nfa_hci_api.h
+++ b/src/nfa/include/nfa_hci_api.h
@@ -185,6 +185,9 @@
{
tNFA_STATUS status; /* Status of delete pipe operation */
UINT8 pipe; /* The dynamic pipe for delete operation */
+#if (NXP_EXTNS == TRUE)
+ UINT8 host; /* The host Id for delete pipe operation */
+#endif
} tNFA_HCI_DELETE_PIPE;
/* Data for NFA_HCI_HOST_LIST_EVT */
@@ -253,6 +256,9 @@
typedef struct
{
tNFA_STATUS status; /* Status of Event send operation */
+#if (NXP_EXTNS == TRUE)
+ UINT8 evt_type;
+#endif
} tNFA_HCI_EVENT_SENT;
/* Data for NFA_HCI_ADD_STATIC_PIPE_EVT */
@@ -675,7 +681,6 @@
NFC_API extern tNFA_STATUS NFA_HciConfigureNfceeETSI12 (UINT8 hostId);
#endif
#if(NXP_EXTNS == TRUE)
-#if (JCOP_WA_ENABLE == TRUE)
/*******************************************************************************
**
** Function NFA_HciW4eSETransaction_Complete
@@ -688,7 +693,6 @@
*******************************************************************************/
NFC_API extern void NFA_HciW4eSETransaction_Complete(tNFA_HCI_TRANSCV_STATE type);
#endif
-#endif
#ifdef __cplusplus
}
diff --git a/src/nfa/int/nfa_dm_int.h b/src/nfa/int/nfa_dm_int.h
index f65077f..4917965 100755
--- a/src/nfa/int/nfa_dm_int.h
+++ b/src/nfa/int/nfa_dm_int.h
@@ -66,7 +66,9 @@
NFA_DM_API_DISABLE_POLLING_EVT,
NFA_DM_API_ENABLE_LISTENING_EVT,
NFA_DM_API_DISABLE_LISTENING_EVT,
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
NFA_DM_API_DISABLE_PASSIVE_LISTENING_EVT,
+#endif
NFA_DM_API_PAUSE_P2P_EVT,
NFA_DM_API_RESUME_P2P_EVT,
NFA_DM_API_RAW_FRAME_EVT,
@@ -335,9 +337,10 @@
#define NFA_DM_DISC_MASK_LFA_NFC_DEP 0x08000000
#define NFA_DM_DISC_MASK_L_LEGACY 0x10000000
#define NFA_DM_DISC_MASK_LISTEN 0xFFFF0000
-
#define NFA_DM_DISC_MASK_NFC_DEP 0x0C481848
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
#define NFA_DM_DISC_MASK_ACTIVE_LISTEN 0xFF00FFFF
+#endif
typedef UINT32 tNFA_DM_DISC_TECH_PROTO_MASK;
@@ -447,7 +450,9 @@
#define NFA_DM_FLAGS_LISTEN_DISABLED 0x00001000 /* NFA_DisableListening() is called and engaged */
#define NFA_DM_FLAGS_P2P_PAUSED 0x00002000 /* NFA_PauseP2p() is called and engaged */
#define NFA_DM_FLAGS_POWER_OFF_SLEEP 0x00008000 /* Power Off Sleep */
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
#define NFA_DM_FLAGS_PASSIVE_LISTEN_DISABLED 0x00010000 /* NFA_DisablePassiveListening() is called and engaged */
+#endif
/* stored parameters */
typedef struct
{
@@ -620,7 +625,9 @@
BOOLEAN nfa_dm_act_disable_polling (tNFA_DM_MSG *p_data);
BOOLEAN nfa_dm_act_enable_listening (tNFA_DM_MSG *p_data);
BOOLEAN nfa_dm_act_disable_listening (tNFA_DM_MSG *p_data);
+#if(NXP_EXTNS == TRUE && NXP_NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION == TRUE)
BOOLEAN nfa_dm_act_disable_passive_listening (tNFA_DM_MSG *p_data);
+#endif
BOOLEAN nfa_dm_act_pause_p2p (tNFA_DM_MSG *p_data);
BOOLEAN nfa_dm_act_resume_p2p (tNFA_DM_MSG *p_data);
BOOLEAN nfa_dm_act_send_raw_frame (tNFA_DM_MSG *p_data);
diff --git a/src/nfa/int/nfa_hci_int.h b/src/nfa/int/nfa_hci_int.h
index 0dd1155..f472894 100755
--- a/src/nfa/int/nfa_hci_int.h
+++ b/src/nfa/int/nfa_hci_int.h
@@ -91,6 +91,7 @@
#define NFA_HCI_MAX_RSP_WAIT_TIME 0x0C
#define NFA_HCI_CHAIN_PKT_RSP_TIMEOUT 30000 /* After the reception of WTX, maximum response timeout value is 30 sec */
#define NFA_HCI_WTX_RESP_TIMEOUT 3000 /* Wait time to give response timeout to application if WTX not received*/
+#define NFA_HCI_EXTENDED_PKT_RSP_TIMEOUT 30000 /* extended time out for CE deactivation*/
#endif
typedef UINT8 tNFA_HCI_STATE;
@@ -481,6 +482,12 @@
UINT8 host_id[NFA_HCI_MAX_NO_HOST_ETSI12]; /* Host id ETSI 12 compliant */
UINT8 host_controller_version; /* no of host controller version */
UINT8 current_nfcee; /* current Nfcee under execution */
+ BOOLEAN IsHciTimerExtended;
+ UINT32 hciResponseTimeout;
+ BOOLEAN IsChainedPacket;
+ BOOLEAN bIsHciResponseTimedout;
+ BOOLEAN bIsRspPending;
+ tNFA_HCI_EVENT_SENT evt_sent;
#endif
UINT8 type; /* Instruction type of incoming message */
UINT8 inst; /* Instruction of incoming message */
diff --git a/src/nfc/include/nfc_api.h b/src/nfc/include/nfc_api.h
index b7abd71..b028a40 100755
--- a/src/nfc/include/nfc_api.h
+++ b/src/nfc/include/nfc_api.h
@@ -80,18 +80,20 @@
#define NFC_STATUS_EE_TIMEOUT NCI_STATUS_EE_TIMEOUT /* EE Timeout */
#if (NXP_EXTNS == TRUE)
+#define NFC_STATUS_WIRED_SESSION_ABORTED NCI_STATUS_WIRED_SESSION_ABORTED /* WIRED_SESSION_ABORT error */
+#define NFC_STATUS_DWP_APDU_DROPPPED NCI_STATUS_DWP_APDU_DROPPPED /* FW dropped the APDU because UICC switch */
//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 0
-#define NXP_EN_PN66T 0
-#define NXP_EN_PN551 0
-#define NXP_EN_PN67T 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 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 (4U) /* MW Minor Version */
+#define NFC_NXP_MW_VERSION_MIN (0x0D) /* MW Minor Version */
#endif
/* 0xE0 ~0xFF are proprietary status codes */
#define NFC_STATUS_CMD_STARTED 0xE3/* Command started successfully */
@@ -118,6 +120,15 @@
#define NFC_NFCC_INIT_MAX_RETRY 2
#define NFC_NORMAL_BOOT_MODE 0
#define NFC_FAST_BOOT_MODE 1
+#define NXP_FEATURE_ENABLED ((unsigned char)0x01) /* flag to indicate NXP feature is enabled*/
+#define NXP_FEATURE_DISABLED ((unsigned char)0x00) /* flag to indicate NXP feature is enabled*/
+ /**********************************************
+ * NFC Config Parameter IDs defined by NXP NFC
+ **********************************************/
+#define NXP_NFC_SET_CONFIG_PARAM_EXT ((unsigned char)0xA0) /* NXP NFC set config extension ID*/
+#define NXP_NFC_PARAM_ID_SWP1 ((unsigned char)0xEC) /*SWP1 parameter ID UICC*/
+#define NXP_NFC_PARAM_ID_SWP2 ((unsigned char)0xED) /*SWP1 parameter ID ESE */
+#define NXP_NFC_PARAM_ID_SWP1A ((unsigned char)0xD4) /*SWP1 parameter ID UICC2 */
#endif
@@ -208,7 +219,10 @@
#define NFC_FIRST_REVT 0x5000
#define NFC_FIRST_CEVT 0x6000
#define NFC_FIRST_TEVT 0x8000
-
+#if (NXP_EXTNS == TRUE)
+void nfc_ncif_rffield_ntf_timeout();
+void nfc_ncif_allow_dwp_transmission();
+#endif
/* the events reported on tNFC_RESPONSE_CBACK */
enum
{
@@ -245,8 +259,12 @@
NFC_ERROR_CEVT, /* 4 generic or interface error */
NFC_DATA_START_CEVT, /* 5 received the first fragment on RF link */
#if (NXP_EXTNS == TRUE)
- NFC_RF_WTX_CEVT /* 6 received rf wtx */
+ NFC_RF_WTX_CEVT, /* 6 received rf wtx */
#endif
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
+ NFC_RF_TRANSMISSION_ERROR, /* 7 CE Error events */
+#endif
+ NFC_HCI_RESTART_TIMER
};
typedef UINT16 tNFC_CONN_EVT;
@@ -293,8 +311,17 @@
UINT8 major_version; /* Major Version */
UINT8 minor_version; /* Minor Version */
} tNFC_FW_VERSION;
-#endif
+#if (NXP_ESE_JCOP_DWNLD_PROTECTION == TRUE)
+typedef enum jcop_dwnld_state{
+ JCP_DWNLD_IDLE, /* jcop dwnld is not ongoing*/
+ JCP_DWNLD_INIT, /* jcop dwonload init state*/
+ JCP_DWNLD_START, /* download started */
+ JCP_SPI_DWNLD_COMPLETE, /* jcop download complete in spi interface*/
+ JCP_DWP_DWNLD_COMPLETE, /* jcop download complete */
+} jcop_dwnld_state_t;
+#endif
+#endif
/* the data type associated with NFC_NFCEE_DISCOVER_REVT */
typedef struct
@@ -910,7 +937,9 @@
#define NFC_MAX_CONN_ID 15
#define NFC_ILLEGAL_CONN_ID 0xFF
#define NFC_RF_CONN_ID 0 /* the static connection ID for RF traffic */
-
+#if(NXP_EXTNS == TRUE)
+#define NFC_NFCEE_CONN_ID 0x03 /* the connection ID for NFCEE */
+#endif
/*************************************
@@ -1355,6 +1384,20 @@
*******************************************************************************/
NFC_API extern tNFC_STATUS NFC_SendNxpNciCommand (BT_HDR *p_data,
tNFC_VS_CBACK *p_cback);
+
+#if (NXP_ESE_JCOP_DWNLD_PROTECTION)
+/*******************************************************************************
+**
+** Function NFC_SetP61Status
+**
+** Description This function set the JCOP download
+** state to pn544 driver.
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+NFC_API extern INT32 NFC_SetP61Status (void *pdata, jcop_dwnld_state_t isJcopState);
+#endif
#endif
/*******************************************************************************
@@ -1510,14 +1553,14 @@
INT32 NFC_DisableWired (void *pdata);
/*******************************************************************************
**
-** Function NFC_P73ISOReset
+** Function NFC_eSEChipReset
**
-** Description This function request to reset P73
+** Description This function request to reset ESE using ISO_RST feature.
**
** Returns 0 if api call success, else -1
**
*******************************************************************************/
-INT32 NFC_P73ISOReset (void *pdata);
+INT32 NFC_eSEChipReset (void *pdata);
/*******************************************************************************
**
** Function NFC_EnableWired
@@ -1558,7 +1601,7 @@
#endif
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if(NXP_ESE_SVDD_SYNC == TRUE)
/*******************************************************************************
**
** Function NFC_RelSvddWait
diff --git a/src/nfc/int/nfc_int.h b/src/nfc/int/nfc_int.h
index 5a26390..337af9f 100644
--- a/src/nfc/int/nfc_int.h
+++ b/src/nfc/int/nfc_int.h
@@ -72,6 +72,7 @@
#define NFC_TTYPE_WAIT_2_DEACTIVATE 1
#if(NXP_EXTNS == TRUE)
#define NFC_TTYPE_NCI_WAIT_DATA_NTF 2
+#define NFC_TTYPE_NCI_WAIT_RF_FIELD_NTF 3
#endif
#define NFC_TTYPE_LLCP_LINK_MANAGER 100
#define NFC_TTYPE_LLCP_LINK_INACT 101
@@ -273,6 +274,11 @@
i2c_data i2c_data_t; /* holding i2c fragmentation data */
#if(NXP_EXTNS == TRUE)
UINT8 boot_mode;
+ BOOLEAN bBlockWiredMode;
+ BOOLEAN bRetransmitDwpPacket;
+ BOOLEAN bIsCreditNtfRcvd;
+ TIMER_LIST_ENT rf_filed_event_timeout_timer;
+ BT_HDR *temp_data;
#endif
} tNFC_CB;
@@ -351,6 +357,7 @@
NFC_API extern void nfc_ncif_proc_get_config_rsp (BT_HDR *p_msg);
NFC_API extern void nfc_ncif_proc_data (BT_HDR *p_msg);
#if(NXP_EXTNS == TRUE)
+NFC_API extern UINT8 nfc_ncif_retransmit_data (tNFC_CONN_CB *p_cb, BT_HDR *p_data);
NFC_API extern tNFC_STATUS nfc_ncif_store_FWVersion(UINT8 * p_buf);
#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);
diff --git a/src/nfc/llcp/llcp_dlc.c b/src/nfc/llcp/llcp_dlc.c
index 5613202..1851ed8 100755
--- a/src/nfc/llcp/llcp_dlc.c
+++ b/src/nfc/llcp/llcp_dlc.c
@@ -55,6 +55,10 @@
static tLLCP_STATUS llcp_dlsm_connected (tLLCP_DLCB *p_dlcb, tLLCP_DLC_EVENT event, void *p_data);
static tLLCP_STATUS llcp_dlsm_w4_remote_dm (tLLCP_DLCB *p_dlcb, tLLCP_DLC_EVENT event, void *p_data);
+#if(NXP_EXTNS == TRUE)
+extern unsigned char appl_dta_mode_flag;
+#endif
+
#if (BT_TRACE_VERBOSE == TRUE)
static char *llcp_dlsm_get_state_name (tLLCP_DLC_STATE state);
static char *llcp_dlsm_get_event_name (tLLCP_DLC_EVENT event);
@@ -662,7 +666,18 @@
if (llcp_util_parse_connect (p_data, length, ¶ms) != LLCP_STATUS_SUCCESS)
{
LLCP_TRACE_ERROR0 ("llcp_dlc_proc_connect_pdu (): Bad format CONNECT");
- llcp_util_send_dm (ssap, dsap, LLCP_SAP_DM_REASON_NO_SERVICE );
+ /* fix to pass TC_CTO_TAR_BI_02_x (x=5) test case
+ * As per the LLCP test specification v1.2.00 by receiving erroneous SNL PDU
+ * i'e with improper length and service name "urn:nfc:sn:dta-co-echo-in", the IUT should not
+ * send any PDU except SYMM PDU*/
+ if((appl_dta_mode_flag == 1)){
+ if(p_data[1] == strlen(&p_data[2])){
+ LLCP_TRACE_DEBUG0 ("llcp_dlc_proc_connect_pdu () Strings are not equal");
+ llcp_util_send_dm (ssap, dsap, LLCP_SAP_DM_REASON_NO_SERVICE );
+ }
+ }else{
+ llcp_util_send_dm (ssap, dsap, LLCP_SAP_DM_REASON_NO_SERVICE );
+ }
return;
}
diff --git a/src/nfc/llcp/llcp_link.c b/src/nfc/llcp/llcp_link.c
index fb56ab2..34fed58 100755
--- a/src/nfc/llcp/llcp_link.c
+++ b/src/nfc/llcp/llcp_link.c
@@ -467,11 +467,11 @@
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*/
+ /* 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)
|| ((appl_dta_mode_flag) && (reason == LLCP_LINK_REMOTE_INITIATED) && (llcp_cb.lcb.is_initiator == FALSE)))
@@ -944,7 +944,8 @@
*/
llcp_link_check_congestion ();
- if(llcp_cb.lcb.symm_state == LLCP_LINK_SYMM_LOCAL_XMIT_NEXT)
+ if(llcp_cb.lcb.symm_state == LLCP_LINK_SYMM_LOCAL_XMIT_NEXT ||
+ (appl_dta_mode_flag && llcp_cb.lcb.link_state == LLCP_LINK_STATE_DEACTIVATING))
{
LLCP_TRACE_DEBUG0 ("llcp_link_check_send_data () in state of LLCP_LINK_SYMM_LOCAL_XMIT_NEXT");
@@ -1388,7 +1389,10 @@
{
/* this indicates that DISC PDU had been sent out to peer */
/* initiator may wait for SYMM PDU */
- llcp_link_process_link_timeout ();
+ if(appl_dta_mode_flag == 0x01)
+ llcp_util_send_disc (LLCP_SAP_LM, LLCP_SAP_LM);
+ else
+ llcp_link_process_link_timeout ();
}
else
{
diff --git a/src/nfc/llcp/llcp_sdp.c b/src/nfc/llcp/llcp_sdp.c
index 4dd9001..201fd17 100755
--- a/src/nfc/llcp/llcp_sdp.c
+++ b/src/nfc/llcp/llcp_sdp.c
@@ -462,7 +462,23 @@
p_value = p;
BE_STREAM_TO_UINT8 (tid, p_value);
sap = llcp_sdp_get_sap_by_name ((char*) p_value, (UINT8) (length - 1));
+#if(NXP_EXTNS == TRUE)
+ /* fix to pass TC_CTO_TAR_BI_03_x (x=5) test case
+ * As per the LLCP test specification v1.2.00 by receiving erroneous SNL PDU
+ * i'e with improper service name "urn:nfc:sn:dta-co-echo-in", the IUT should not
+ * send any PDU except SYMM PDU*/
+ if((appl_dta_mode_flag == 1) && (sap == 0x00)){
+ LLCP_TRACE_DEBUG1 ("llcp_sdp_proc_snl () In dta mode sap == 0x00 p_value = %s", p_value);
+ if((length-1) == strlen(p_value)){
+ LLCP_TRACE_DEBUG0 ("DEBUG> llcp_sdp_proc_snl () Strings are not equal");
+ llcp_sdp_send_sdres (tid, sap);
+ }
+ }else{
+ llcp_sdp_send_sdres (tid, sap);
+ }
+#else
llcp_sdp_send_sdres (tid, sap);
+#endif
}
else
{
diff --git a/src/nfc/nfc/nfc_main.c b/src/nfc/nfc/nfc_main.c
index 9de4555..60cb45c 100644
--- a/src/nfc/nfc/nfc_main.c
+++ b/src/nfc/nfc/nfc_main.c
@@ -677,7 +677,7 @@
#else
NFC_TRACE_DEBUG2 ("nfc_main_hal_cback event: 0x%x, status=%d", event, status);
#endif
-#if(NXP_EXTNS == TRUE)
+#if((NXP_EXTNS == TRUE) && (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE))
tNFC_RESPONSE eventData;
#endif
switch (event)
@@ -707,7 +707,7 @@
case HAL_NFC_REQUEST_CONTROL_EVT:
case HAL_NFC_RELEASE_CONTROL_EVT:
case HAL_NFC_ERROR_EVT:
-#if(NXP_EXTNS == TRUE)
+#if((NXP_EXTNS == TRUE) && (NXP_NFCC_I2C_READ_WRITE_IMPROVEMENT == TRUE))
case HAL_NFC_POST_MIN_INIT_CPLT_EVT:
if(status == HAL_NFC_STATUS_ERR_CMD_TIMEOUT)
@@ -814,7 +814,7 @@
/* Open HAL transport. */
nfc_set_state (NFC_STATE_W4_HAL_OPEN);
#if(NXP_EXTNS == TRUE)
- UINT8 boot_mode = nfc_cb.boot_mode;
+ UINT16 boot_mode = nfc_cb.boot_mode;
if(nfc_cb.boot_mode == NFC_FAST_BOOT_MODE)
{
nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_SET_BOOT_MODE,(void*)&boot_mode);
@@ -843,7 +843,7 @@
{
NFC_TRACE_API1 ("NFC_Disable (): nfc_state = %d", nfc_cb.nfc_state);
#if(NXP_EXTNS == TRUE)
- UINT8 boot_mode = NFC_NORMAL_BOOT_MODE;
+ UINT16 boot_mode = NFC_NORMAL_BOOT_MODE;
#endif
if ((nfc_cb.nfc_state == NFC_STATE_NONE) || (nfc_cb.nfc_state == NFC_STATE_NFCC_POWER_OFF_SLEEP))
{
@@ -908,6 +908,10 @@
nfc_cb.reassembly = TRUE;
#if(NXP_EXTNS == TRUE)
nfc_cb.boot_mode = p_hal_entry_cntxt->boot_mode;
+ nfc_cb.bBlockWiredMode = FALSE;
+ nfc_cb.bRetransmitDwpPacket = FALSE;
+ nfc_cb.bIsCreditNtfRcvd = FALSE;
+ nfc_cb.temp_data = NULL;
if(p_hal_entry_cntxt->boot_mode == NFC_NORMAL_BOOT_MODE)
{
#endif
@@ -1628,7 +1632,8 @@
{
return (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_P61_ENABLE_MODE, pdata));
}
-#if (NXP_EXTNS == TRUE) && (NXP_WIRED_MODE_STANDBY == TRUE)
+#if (NXP_EXTNS == TRUE)
+#if (NXP_WIRED_MODE_STANDBY == TRUE)
/*******************************************************************************
+**
** Function NFC_Nfcee_PwrLinkCtrl
@@ -1649,20 +1654,42 @@
return nci_snd_pwr_nd_lnk_ctrl_cmd(nfcee_id, cfg_value);
}
#endif
-
+#if (NXP_ESE_JCOP_DWNLD_PROTECTION == TRUE)
/*******************************************************************************
**
-** Function NFC_P73ISOReset
+** Function NFC_SetP61Status
**
-** Description This function request to pn54x driver to
-** hard reset of P73 using ISO RST configuration.
+** Description This function set the JCOP download
+** state to pn544 driver.
**
** Returns 0 if api call success, else -1
**
*******************************************************************************/
-INT32 NFC_P73ISOReset (void *pdata)
+INT32 NFC_SetP61Status (void *pdata, jcop_dwnld_state_t isJcopState)
{
- return (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_P73_ISO_RST, pdata));
+ if(isJcopState == JCP_DWNLD_START)
+ isJcopState = (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_SET_JCP_DWNLD_ENABLE, pdata));
+ else if(isJcopState == JCP_DWP_DWNLD_COMPLETE)
+ isJcopState = (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_SET_JCP_DWNLD_DISABLE, pdata));
+
+ return isJcopState;
+}
+#endif
+#endif
+
+/*******************************************************************************
+**
+** Function NFC_eSEChipReset
+**
+** Description This function request to pn54x driver to
+** chip reset the ESE using ISO_RST pin configuration.
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+INT32 NFC_eSEChipReset (void *pdata)
+{
+ return (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_ESE_CHIP_RST, pdata));
}
#if((NFC_NXP_ESE_VER == JCOP_VER_3_1) || (NFC_NXP_ESE_VER == JCOP_VER_3_2))
@@ -1697,7 +1724,7 @@
}
#endif
-#if ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+#if(NXP_ESE_SVDD_SYNC == TRUE)
/*******************************************************************************
**
** Function NFC_RelSvddWait
diff --git a/src/nfc/nfc/nfc_ncif.c b/src/nfc/nfc/nfc_ncif.c
index a59d79b..0345a9c 100644
--- a/src/nfc/nfc/nfc_ncif.c
+++ b/src/nfc/nfc/nfc_ncif.c
@@ -74,6 +74,8 @@
#if(NXP_EXTNS == TRUE)
#define NFC_NCI_WAIT_DATA_NTF_TOUT 2
+#define NFC_NCI_RFFIELD_EVT_TIMEOUT 2
+UINT8 temp_buff[660];
#endif
#define NFC_PB_ATTRIB_REQ_FIXED_BYTES 1
@@ -93,7 +95,7 @@
extern void nfa_hci_rsp_timeout (tNFA_HCI_EVENT_DATA *p_evt_data);
#endif
-#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if((NFC_NXP_ESE == TRUE) && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
void disc_deact_ntf_timeout_handler(tNFC_RESPONSE_EVT event);
extern BOOLEAN etsi_reader_in_progress;
#endif
@@ -186,7 +188,7 @@
*/
UINT8 *buffer = NULL;
UINT16 bufflen = 0x100;
- UINT8 fw_dwnld_status = NFC_STATUS_FAILED;
+ UINT16 fw_dwnld_status = NFC_STATUS_FAILED;
tNFC_STATUS status = NFC_STATUS_FAILED;
tNFC_FWUpdate_Info_t fw_update_inf;
tNFC_CONN_CB * p_cb = NULL;
@@ -342,8 +344,36 @@
nfc_cb.flags &= ~NFC_FL_DEACTIVATING;
nci_snd_deactivate_cmd ((UINT8) ((TIMER_PARAM_TYPE) nfc_cb.deactivate_timer.param));
}
+#if (NXP_EXTNS == TRUE)
+/*******************************************************************************
+**
+** Function nfc_ncif_retransmit_data
+**
+** Description Retransmission of lost packet
+**
+** Returns void
+**
+*******************************************************************************/
+UINT8 nfc_ncif_retransmit_data (tNFC_CONN_CB *p_cb, BT_HDR *p_data)
+{
+ NFC_TRACE_ERROR0 ("nfc_ncif_retransmit_data");
+ if(p_data == NULL)
+ {
+ NFC_TRACE_ERROR0 ("nfc_ncif_retransmit_data: p_data is NULL");
+ return NCI_STATUS_FAILED;
+ }
+ if (p_cb->num_buff != NFC_CONN_NO_FC)
+ p_cb->num_buff--;
-
+ HAL_RE_WRITE(p_data);
+ if(p_cb->conn_id != NFC_RF_CONN_ID)
+ {
+ //Start waiting for credit ntf
+ nfc_start_timer (&nfc_cb.nci_wait_data_ntf_timer, (UINT16)(NFC_TTYPE_NCI_WAIT_DATA_NTF), NFC_NCI_WAIT_DATA_NTF_TOUT);
+ }
+ return NCI_STATUS_OK;
+}
+#endif
/*******************************************************************************
**
** Function nfc_ncif_send_data
@@ -357,16 +387,16 @@
*******************************************************************************/
UINT8 nfc_ncif_send_data (tNFC_CONN_CB *p_cb, BT_HDR *p_data)
{
- UINT8 *pp;
- UINT8 *ps;
+ UINT8 *pp;
+ UINT8 *ps;
UINT8 ulen = NCI_MAX_PAYLOAD_SIZE;
- BT_HDR *p;
+ BT_HDR *p;
UINT8 pbf = 1;
UINT8 buffer_size = p_cb->buff_size;
UINT8 hdr0 = p_cb->conn_id;
BOOLEAN fragmented = FALSE;
-
#if(NXP_EXTNS == TRUE)
+ UINT8* pTemp;
if(core_reset_init_num_buff == TRUE)
{
NFC_TRACE_ERROR0("Reinitializing the num_buff");
@@ -415,6 +445,14 @@
GKI_enqueue (&p_cb->tx_q, p_data);
}
+#if((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ if((nfc_cb.bBlockWiredMode) && (p_cb->conn_id == NFC_NFCEE_CONN_ID))
+ {
+ /* CE is activated on UICC hence return simply without sedning data */
+ return (NCI_STATUS_OK);
+ }
+#endif
+
/* try to send the first data packet in the tx queue */
p_data = (BT_HDR *)GKI_getfirst (&p_cb->tx_q);
@@ -469,6 +507,18 @@
if (p_cb->num_buff != NFC_CONN_NO_FC)
p_cb->num_buff--;
+#if((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ if(p_cb->conn_id == NFC_NFCEE_CONN_ID)
+ {
+ nfc_cb.temp_data = (BT_HDR*)temp_buff;
+ nfc_cb.temp_data->offset = p->offset;
+ pTemp = (UINT8*)(nfc_cb.temp_data+1) + nfc_cb.temp_data->offset;
+ nfc_cb.temp_data->len = p->len;
+ memcpy(pTemp, (UINT8*)(p+1)+(p->offset), p->len);
+ nfa_hci_cb.bIsRspPending = TRUE;
+ }
+#endif
+
/* send to HAL */
HAL_WRITE(p);
#if(NXP_EXTNS == TRUE)
@@ -479,6 +529,8 @@
}
if(p_cb->conn_id != NFC_RF_CONN_ID)
{
+ /* Start waiting for credit ntf */
+ nfc_cb.bIsCreditNtfRcvd = FALSE;
nfc_start_timer (&nfc_cb.nci_wait_data_ntf_timer, (UINT16)(NFC_TTYPE_NCI_WAIT_DATA_NTF), NFC_NCI_WAIT_DATA_NTF_TOUT);
}
if (!fragmented)
@@ -607,7 +659,8 @@
nfc_cb.nxpCbflag = TRUE;
}
#endif
-
+ /* Indicate command is pending */
+ nfc_cb.nci_cmd_window--;
/* send to HAL */
HAL_WRITE(p_buf);
if (get_i2c_fragmentation_enabled () == I2C_FRAGMENATATION_ENABLED)
@@ -615,8 +668,6 @@
nfc_cb.i2c_data_t.nci_cmd_channel_busy= 1;
NFC_TRACE_DEBUG0 ("setting channel busy flag");
}
- /* Indicate command is pending */
- nfc_cb.nci_cmd_window--;
/* start NFC command-timeout timer */
nfc_start_timer (&nfc_cb.nci_wait_rsp_timer, (UINT16)(NFC_TTYPE_NCI_WAIT_RSP), nfc_cb.nci_wait_rsp_tout);
@@ -760,7 +811,7 @@
/* make sure this is the RSP we are waiting for before updating the command window */
if ((old_gid != gid) || (old_oid != oid))
{
-#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if(NFC_NXP_ESE == TRUE && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
if(((gid == NCI_GID_RF_MANAGE)&&(oid == NCI_MSG_RF_DISCOVER)) && (etsi_reader_in_progress == TRUE))
{
NFC_TRACE_DEBUG0 ("Changing disc_state and disc_flags");
@@ -783,7 +834,7 @@
NFC_TRACE_ERROR2 ("nfc_ncif_process_event unexpected rsp: gid:0x%x, oid:0x%x", gid, oid);
return TRUE;
}
-#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if((NFC_NXP_ESE == TRUE) && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
}
#endif
}
@@ -929,6 +980,30 @@
void nfc_ncif_event_status (tNFC_RESPONSE_EVT event, UINT8 status)
{
tNFC_RESPONSE evt_data;
+
+#if((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ if((status == NFC_STATUS_WIRED_SESSION_ABORTED) || (status == NFC_STATUS_DWP_APDU_DROPPPED))
+ {
+ tNFC_CONN_CB *p_cb;
+ nfc_cb.bBlockWiredMode = TRUE;
+ p_cb = nfc_find_conn_cb_by_conn_id(nfa_hci_cb.conn_id);
+ if(!nfa_hci_cb.IsHciTimerExtended)
+ {
+ nfa_sys_stop_timer(&nfa_hci_cb.timer);
+ nfa_hci_cb.IsHciTimerExtended = TRUE;
+ if(p_cb && p_cb->p_cback)
+ (*p_cb->p_cback)(nfa_hci_cb.conn_id, NFC_HCI_RESTART_TIMER, (tNFC_CONN *)&evt_data);
+ }
+ if((status == NFC_STATUS_DWP_APDU_DROPPPED) && (!nfc_cb.bIsCreditNtfRcvd))
+ {
+ nfc_cb.bRetransmitDwpPacket = TRUE;
+ nfc_stop_timer(&nfc_cb.nci_wait_data_ntf_timer);
+ if(!p_cb->num_buff)
+ p_cb->num_buff++;
+ }
+ }
+#endif
+
if (nfc_cb.p_resp_cback)
{
evt_data.status = (tNFC_STATUS) status;
@@ -968,6 +1043,27 @@
void nfc_ncif_proc_rf_field_ntf (UINT8 rf_status)
{
tNFC_RESPONSE evt_data;
+
+ NFC_TRACE_DEBUG0( "nfc_ncif_proc_rf_field_ntf");
+
+#if((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ if(rf_status == 0x01)
+ {
+ NFC_TRACE_DEBUG0("nfc_ncif_proc_rf_field_ntf ON_EVT");
+ nfc_cb.bBlockWiredMode = TRUE;
+ nfc_start_timer(&nfc_cb.rf_filed_event_timeout_timer, (UINT16)(NFC_TTYPE_NCI_WAIT_RF_FIELD_NTF), NFC_NCI_RFFIELD_EVT_TIMEOUT);
+ }
+ else
+ {
+ nfc_stop_timer(&nfc_cb.rf_filed_event_timeout_timer);
+ if(nfc_cb.bBlockWiredMode)
+ {
+ nfc_cb.bBlockWiredMode = FALSE;
+ nfc_ncif_allow_dwp_transmission();
+ }
+ }
+#endif
+
if (nfc_cb.p_resp_cback)
{
evt_data.status = (tNFC_STATUS) NFC_STATUS_OK;
@@ -977,6 +1073,76 @@
}
#endif
+#if (NXP_EXTNS == TRUE)
+/*******************************************************************************
+**
+** Function nfc_ncif_allow_dwp_transmission
+**
+** Description This function is called when CE deactivation/RF event timedout/RF OFF event
+** eSE action notification
+**
+** Returns void
+**
+*******************************************************************************/
+void nfc_ncif_allow_dwp_transmission()
+{
+ tNFC_RESPONSE evt_data;
+ tNFC_CONN_CB *p_cb;
+ NFC_TRACE_DEBUG0("nfc_ncif_allow_dwp_transmission");
+ p_cb = nfc_find_conn_cb_by_conn_id(nfa_hci_cb.conn_id);
+
+ if((p_cb)&&(p_cb->conn_id == NFC_NFCEE_CONN_ID))
+ {
+ if(nfa_hci_cb.bIsHciResponseTimedout)
+ {
+ nfa_hci_cb.IsHciTimerExtended = FALSE;
+ nfc_cb.bRetransmitDwpPacket = FALSE;
+ nfa_hci_cb.bIsHciResponseTimedout = FALSE;
+ nfa_hci_cb.bIsRspPending = FALSE;
+ }
+ if(nfa_hci_cb.IsHciTimerExtended)
+ {
+ nfa_sys_stop_timer(&nfa_hci_cb.timer);
+ nfa_hci_cb.IsHciTimerExtended = FALSE;
+ }
+ if(nfc_cb.bRetransmitDwpPacket)
+ {
+ nfc_ncif_retransmit_data(p_cb, nfc_cb.temp_data);
+ nfc_cb.bRetransmitDwpPacket = FALSE;
+ if(p_cb->p_cback)
+ (*p_cb->p_cback)(nfa_hci_cb.conn_id, NFC_HCI_RESTART_TIMER, (tNFC_CONN *)&evt_data);
+ }
+ else if(((nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_RSP) && (nfa_hci_cb.w4_rsp_evt)) ||
+ (nfa_hci_cb.IsChainedPacket))
+ {
+ nfc_ncif_send_data (p_cb, NULL);
+ if(p_cb->p_cback)
+ (*p_cb->p_cback)(nfa_hci_cb.conn_id, NFC_HCI_RESTART_TIMER, (tNFC_CONN *)&evt_data);
+ }
+ }
+}
+
+/*******************************************************************************
+**
+** Function nfc_ncif_rffield_ntf_timeout
+**
+** Description This function is called when RF field event timedout
+** To aviod infinite dwp block on RF_ON event
+**
+** Returns void
+**
+*******************************************************************************/
+void nfc_ncif_rffield_ntf_timeout()
+{
+ NFC_TRACE_DEBUG0("nfc_ncif_rffield_ntf_timeout");
+ if (nfc_cb.bBlockWiredMode)
+ {
+ nfc_cb.bBlockWiredMode = FALSE;
+ nfc_ncif_allow_dwp_transmission();
+ }
+}
+#endif
+
/*******************************************************************************
**
** Function nfc_ncif_proc_credits
@@ -1016,6 +1182,7 @@
{
nfc_stop_timer (&nfc_cb.nci_wait_data_ntf_timer);
}
+ nfc_cb.bIsCreditNtfRcvd = TRUE;
#endif
if(get_i2c_fragmentation_enabled() == I2C_FRAGMENATATION_ENABLED){
nfc_ncif_update_data_queue();
@@ -1369,6 +1536,13 @@
#if (NFC_RW_ONLY == FALSE)
else if(evt_data.activate.intf_param.type == NCI_INTERFACE_NFC_DEP)
{
+#if((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ if(nfc_cb.bBlockWiredMode)
+ {
+ nfc_cb.bBlockWiredMode = FALSE;
+ nfc_ncif_allow_dwp_transmission();
+ }
+#endif
/* Make max payload of NCI aligned to max payload of NFC-DEP for better performance */
if (buff_size > NCI_NFC_DEP_MAX_DATA)
buff_size = NCI_NFC_DEP_MAX_DATA;
@@ -1487,6 +1661,19 @@
GKI_freebuf (p_data);
}
+#if((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ if((is_ntf) && (nfc_cb.bBlockWiredMode))
+ {
+ nfc_cb.bBlockWiredMode = FALSE;
+ if((nfa_hci_cb.bIsRspPending) && (!nfa_hci_cb.bIsHciResponseTimedout))
+ {
+ nci_snd_nfcee_mode_set(0xC0, NFC_MODE_ACTIVATE);
+ nfa_hci_cb.bIsRspPending = FALSE;
+ }
+ nfc_ncif_allow_dwp_transmission();
+ }
+#endif
+
if (p_cb->p_cback)
(*p_cb->p_cback) (NFC_RF_CONN_ID, NFC_DEACTIVATE_CEVT, (tNFC_CONN *) p_deact);
@@ -1580,6 +1767,37 @@
}
break;
}
+
+#if((NXP_EXTNS == TRUE) && (NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME))
+ nfc_stop_timer(&nfc_cb.rf_filed_event_timeout_timer);
+ tNFC_CONN_CB *p_cb;
+ p_cb = nfc_find_conn_cb_by_conn_id(nfa_hci_cb.conn_id);
+ if(evt_data.nfcee_id != 0xC0)
+ {
+ nfc_cb.bBlockWiredMode = TRUE;
+ if(nfa_hci_cb.IsChainedPacket)
+ {
+ nfa_hci_cb.IsHciTimerExtended = TRUE;
+ if(p_cb && p_cb->p_cback)
+ (*p_cb->p_cback)(nfa_hci_cb.conn_id, NFC_HCI_RESTART_TIMER, (tNFC_CONN *)&evt_data);
+ }
+ }
+ else
+ {
+ if((evt_data.act_data.trigger == NCI_EE_TRIG_RF_TECHNOLOGY) ||
+ ((evt_data.act_data.trigger == NCI_EE_TRIG_RF_PROTOCOL) &&
+ (evt_data.act_data.param.protocol == NCI_PROTOCOL_ISO_DEP)))
+ {
+ nfc_cb.bBlockWiredMode = TRUE;
+ }
+ else
+ {
+ nfc_cb.bBlockWiredMode = FALSE;
+ nfc_ncif_allow_dwp_transmission();
+ }
+ }
+#endif
+
(*p_cback) (NFC_EE_ACTION_REVT, (void *) &evt_data);
}
}
@@ -1978,7 +2196,7 @@
tNFC_CONN_CB * p_cb = &nfc_cb.conn_cb[NFC_RF_CONN_ID];
#if (NXP_EXTNS == TRUE)
static UINT8 retry_cnt = 0;
- UINT8 fw_status,
+ UINT16 fw_status,
fw_dwnld_status = NCI_STATUS_FAILED,
fw_mw_ver_status = NCI_STATUS_FAILED;
tNFC_FWUpdate_Info_t fw_update_inf;
@@ -2494,7 +2712,7 @@
}
#endif
-#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+#if((NFC_NXP_ESE == TRUE) && (NXP_EXTNS == TRUE) && (NXP_ESE_ETSI_READER_ENABLE == TRUE))
void disc_deact_ntf_timeout_handler(tNFC_RESPONSE_EVT event)
{
tNFC_RESPONSE evt_data;
diff --git a/src/nfc/nfc/nfc_task.c b/src/nfc/nfc/nfc_task.c
index 80c3aa5..01236c6 100755
--- a/src/nfc/nfc/nfc_task.c
+++ b/src/nfc/nfc/nfc_task.c
@@ -159,10 +159,15 @@
nfc_cb.i2c_data_t.data_stored = 0;
}
nfc_ncif_credit_ntf_timeout();
-#endif
break;
}
-#if(NXP_EXTNS == TRUE)
+#if(NXP_ESE_DUAL_MODE_PRIO_SCHEME == NXP_ESE_WIRED_MODE_RESUME)
+ case NFC_TTYPE_NCI_WAIT_RF_FIELD_NTF:
+ {
+ nfc_ncif_rffield_ntf_timeout();
+ break;
+ }
+#endif
case NFC_TTYPE_LISTEN_ACTIVATION:
{
extern uint8_t sListenActivated;
diff --git a/src/nfc/tags/rw_t1t.c b/src/nfc/tags/rw_t1t.c
index f119aef..0111813 100755
--- a/src/nfc/tags/rw_t1t.c
+++ b/src/nfc/tags/rw_t1t.c
@@ -291,11 +291,6 @@
GKI_freebuf ((BT_HDR *) (p_data->data.p_data));
p_data->data.p_data = NULL;
}
- }else if((p_data != NULL) && (p_data->data.p_data != NULL))
- {
- /* Free the response buffer in case of invalid response*/
- GKI_freebuf((BT_HDR *) (p_data->data.p_data));
- p_data->data.p_data = NULL;
}
/* Data event with error status...fall through to NFC_ERROR_CEVT case */
diff --git a/src/nfc/tags/rw_t2t.c b/src/nfc/tags/rw_t2t.c
index d9fd147..54557e9 100644
--- a/src/nfc/tags/rw_t2t.c
+++ b/src/nfc/tags/rw_t2t.c
@@ -340,12 +340,6 @@
p_data->data.p_data = NULL;
}
}
- else if((p_data != NULL) && (p_data->data.p_data != NULL))
- {
- /* Free the response buffer in case of invalid response*/
- GKI_freebuf((BT_HDR *) (p_data->data.p_data));
- p_data->data.p_data = NULL;
- }
/* Data event with error status...fall through to NFC_ERROR_CEVT case */
case NFC_ERROR_CEVT:
diff --git a/src/nfc/tags/rw_t3t.c b/src/nfc/tags/rw_t3t.c
index a6ac5f2..bf44026 100644
--- a/src/nfc/tags/rw_t3t.c
+++ b/src/nfc/tags/rw_t3t.c
@@ -2399,7 +2399,7 @@
rw_t3t_data_cback (conn_id, &(p_data->data));
break;
}
- else if (p_data->data.p_data != NULL)
+ else if ((p_data != NULL) && (p_data->data.p_data != NULL))
{
RW_TRACE_DEBUG2 ("rw_t3t_conn_cback: p_data->data.p_data=0x%X p_data->data.status=0x%02x", p_data->data.p_data, p_data->data.status);
/* Free the response buffer in case of error response */
diff --git a/src/nfc/tags/rw_t4t.c b/src/nfc/tags/rw_t4t.c
index 46a6525..e8bb7fb 100644
--- a/src/nfc/tags/rw_t4t.c
+++ b/src/nfc/tags/rw_t4t.c
@@ -2074,6 +2074,9 @@
}
else if (p_t4t->state != RW_T4T_STATE_IDLE)
{
+#if (NXP_EXTNS == TRUE)
+ rw_data.status = (tNFC_STATUS) (*(UINT8*) p_data);
+#endif
rw_t4t_handle_error (rw_data.status, 0, 0);
}
else