NFC_NCIHALx_AR3C.4.5.0_M_OpnSrc
diff --git a/Android.mk b/Android.mk
index 880297a..c9a295a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,10 +1,3 @@
-# function to find all *.cpp files under a directory
-define all-cpp-files-under
-$(patsubst ./%,%, \
- $(shell cd $(LOCAL_PATH) ; \
- find $(1) -name "*.cpp" -and -not -name ".*") \
- )
-endef
LOCAL_PATH:= $(call my-dir)
@@ -14,15 +7,22 @@
HAL := src/hal
UDRV := src/udrv
-D_CFLAGS := -DANDROID -DBUILDCFG=1
+D_CFLAGS := -DANDROID -DBUILDCFG=1 \
+ -Wno-deprecated-register \
+ -Wno-unused-parameter \
#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
+D_CFLAGS += -DNXP_NFCC_HCE_F=TRUE
+
#variables for NFC_NXP_CHIP_TYPE
PN547C2 := 1
PN548C2 := 2
+PN551 := 3
NQ110 := $PN547C2
NQ120 := $PN547C2
@@ -35,17 +35,16 @@
ifeq ($(PN548C2),2)
D_CFLAGS += -DPN548C2=2
endif
+ifeq ($(PN551),3)
+D_CFLAGS += -DPN551=3
+endif
#### Select the JCOP OS Version ####
-JCOP_VER_3_0 := 1
-JCOP_VER_3_1_1 := 2
-JCOP_VER_3_1_2 := 3
-JCOP_VER_3_2 := 4
-JCOP_VER_3_3 := 5
+JCOP_VER_3_1 := 1
+JCOP_VER_3_2 := 2
+JCOP_VER_3_3 := 3
-LOCAL_CFLAGS += -DJCOP_VER_3_0=$(JCOP_VER_3_0)
-LOCAL_CFLAGS += -DJCOP_VER_3_1_1=$(JCOP_VER_3_1_1)
-LOCAL_CFLAGS += -DJCOP_VER_3_1_2=$(JCOP_VER_3_1_2)
+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)
@@ -58,12 +57,14 @@
endif
#### Select the CHIP ####
-NXP_CHIP_TYPE := $(PN548C2)
+NXP_CHIP_TYPE := $(PN551)
ifeq ($(NXP_CHIP_TYPE),$(PN547C2))
D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN547C2
else ifeq ($(NXP_CHIP_TYPE),$(PN548C2))
D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN548C2
+else ifeq ($(NXP_CHIP_TYPE),$(PN551))
+D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN551
endif
#Gemalto SE support
@@ -77,7 +78,6 @@
LOCAL_ARM_MODE := arm
LOCAL_MODULE := libnfc-nci
-LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES := libhardware_legacy libcutils liblog libdl libhardware
LOCAL_CFLAGS += $(D_CFLAGS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src/include \
diff --git a/README.md b/README.md
index a33821f..5110523 100644
--- a/README.md
+++ b/README.md
@@ -18,5 +18,6 @@
| :-------------: |:-------------:| :-----:|
| android-6.0.0_r1 | 4.2.0_M (PN547C2/PN548C2) | NFC_NCIHALx_AR0F.4.2.0_M_OpnSrc |
| android-6.0.0_r1 | 4.3.0_M (PN547C2/PN548C2) | NFC_NCIHALx_AR0F.4.3.0_M_OpnSrc |
+| android-6.0.1_r17 | 4.5.0_M (PN551/PN548C2) | NFC_NCIHALx_AR3C.4.5.0_M_OpnSrc |
diff --git a/halimpl/pn54x/Android.mk b/halimpl/pn54x/Android.mk
index 1d27253..e6b4451 100644
--- a/halimpl/pn54x/Android.mk
+++ b/halimpl/pn54x/Android.mk
@@ -13,15 +13,6 @@
# limitations under the License.
-# function to find all *.cpp files under a directory
-define all-cpp-files-under
-$(patsubst ./%,%, \
- $(shell cd $(LOCAL_PATH) ; \
- find $(1) -name "*.cpp" -and -not -name ".*") \
- )
-endef
-
-
HAL_SUFFIX := $(TARGET_DEVICE)
ifeq ($(TARGET_DEVICE),crespo)
HAL_SUFFIX := herring
@@ -33,56 +24,66 @@
#variables for NFC_NXP_CHIP_TYPE
PN547C2 := 1
PN548C2 := 2
+PN551 := 3
NQ110 := $PN547C2
NQ120 := $PN547C2
NQ210 := $PN548C2
NQ220 := $PN548C2
+
+#Enable HCE-F specific
+D_CFLAGS += -DNXP_NFCC_HCE_F=TRUE
+
#NXP PN547 Enable
ifeq ($(PN547C2),1)
-LOCAL_CFLAGS += -DPN547C2=1
+D_CFLAGS += -DPN547C2=1
endif
ifeq ($(PN548C2),2)
-LOCAL_CFLAGS += -DPN548C2=2
+D_CFLAGS += -DPN548C2=2
+endif
+ifeq ($(PN551),3)
+D_CFLAGS += -DPN551=3
endif
#### Select the CHIP ####
-NXP_CHIP_TYPE := $(PN548C2)
+NXP_CHIP_TYPE := $(PN551)
ifeq ($(NXP_CHIP_TYPE),$(PN547C2))
D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN547C2
else ifeq ($(NXP_CHIP_TYPE),$(PN548C2))
D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN548C2
+else ifeq ($(NXP_CHIP_TYPE),$(PN551))
+D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN551
endif
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_PRELINK_MODULE := false
-LOCAL_ARM_MODE := arm
ifeq ($(NXP_CHIP_TYPE),$(PN547C2))
LOCAL_MODULE := nfc_nci_pn547.grouper
else ifeq ($(NXP_CHIP_TYPE),$(PN548C2))
LOCAL_MODULE := nfc_nci.pn54x.default
+else ifeq ($(NXP_CHIP_TYPE),$(PN551))
+LOCAL_MODULE := nfc_nci.pn54x.default
endif
LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SRC_FILES := $(call all-c-files-under, .) $(call all-cpp-files-under, .)
+LOCAL_SRC_FILES := $(call all-subdir-c-files) $(call all-subdir-cpp-files)
LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware_legacy libdl
-LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS := $(D_CFLAGS)
LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/utils \
- $(LOCAL_PATH)/inc \
- $(LOCAL_PATH)/common \
- $(LOCAL_PATH)/dnld \
- $(LOCAL_PATH)/hal \
- $(LOCAL_PATH)/log \
- $(LOCAL_PATH)/tml \
- $(LOCAL_PATH)/self-test
+ $(LOCAL_PATH)/utils \
+ $(LOCAL_PATH)/inc \
+ $(LOCAL_PATH)/common \
+ $(LOCAL_PATH)/dnld \
+ $(LOCAL_PATH)/hal \
+ $(LOCAL_PATH)/log \
+ $(LOCAL_PATH)/tml \
+ $(LOCAL_PATH)/self-test
LOCAL_CFLAGS += -DANDROID \
-DNXP_UICC_ENABLE -DNXP_HW_SELF_TEST
LOCAL_CFLAGS += -DNFC_NXP_HFO_SETTINGS=FALSE
LOCAL_CFLAGS += -DNFC_NXP_ESE=TRUE
+LOCAL_CFLAGS += -DNFC_NXP_STAT_DUAL_UICC_EXT_SWITCH=TRUE
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 5b8b516..65b8097 100644
--- a/halimpl/pn54x/common/phNfcCommon.h
+++ b/halimpl/pn54x/common/phNfcCommon.h
@@ -40,14 +40,21 @@
/* Actual FW library name*/
#define FW_LIB_PATH FW_DLL_ROOT_DIR "libpn548ad_fw" FW_DLL_EXTENSION
-/* Restore Currupted PLL Setttings/etc */
+/* Restore Corrupted PLL Setttings/etc */
#define PLATFORM_LIB_PATH FW_DLL_ROOT_DIR "libpn548ad_fw_platform" FW_DLL_EXTENSION
/* Upgrade the public Key */
#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libpn548ad_fw_pku" FW_DLL_EXTENSION
+#elif(NFC_NXP_CHIP_TYPE == PN551)
+/* Actual FW library name*/
+#define FW_LIB_PATH FLASH_CONF_ROOT_DIR "libpn551_fw" FW_DLL_EXTENSION
+/* Restore Corrupted PLL Settings/etc */
+#define PLATFORM_LIB_PATH FW_DLL_ROOT_DIR "libpn551_fw_platform" FW_DLL_EXTENSION
+/* Upgrade the public Key */
+#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libpn551_fw_pku" FW_DLL_EXTENSION
#else
/* Actual FW library name*/
#define FW_LIB_PATH FW_DLL_ROOT_DIR "libpn547_fw" FW_DLL_EXTENSION
-/* Restore Currupted PLL Settings/etc */
+/* Restore Corrupted PLL Settings/etc */
#define PLATFORM_LIB_PATH FW_DLL_ROOT_DIR "libpn547_fw_platform" FW_DLL_EXTENSION
/* Upgrade the public Key */
#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libpn547_fw_pku" FW_DLL_EXTENSION
@@ -55,12 +62,14 @@
#if(NFC_NXP_CHIP_TYPE == PN548C2)
#define COMPILATION_MW "PN548C2"
+#elif(NFC_NXP_CHIP_TYPE == PN551)
+#define COMPILATION_MW "PN551"
#else
#define COMPILATION_MW "PN547C2"
#endif
/* HAL Version number (Updated as per release) */
-#define NXP_MW_VERSION_MAJ (3U)
-#define NXP_MW_VERSION_MIN (0U)
+#define NXP_MW_VERSION_MAJ (4U)
+#define NXP_MW_VERSION_MIN (6U)
#define GET_EEPROM_DATA (1U)
#define SET_EEPROM_DATA (2U)
diff --git a/halimpl/pn54x/dnld/phDnldNfc.c b/halimpl/pn54x/dnld/phDnldNfc.c
index ca6b29d..69df125 100644
--- a/halimpl/pn54x/dnld/phDnldNfc.c
+++ b/halimpl/pn54x/dnld/phDnldNfc.c
@@ -29,8 +29,8 @@
static void *pFwLibHandle; /* Global firmware lib handle used in this file only */
uint16_t wMwVer = 0; /* Middleware version no */
uint16_t wFwVer = 0; /* Firmware version no */
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
-uint8_t gRecFWDwnld; // flag set to true to indicate dummy FW download
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
+uint8_t gRecFWDwnld; // flag set to true to indicate dummy FW download
#endif
static pphDnldNfc_DlContext_t gpphDnldContext = NULL; /* Download contex */
static pphDnldNfc_RspCb_t UserCb; /* Upper layer call back function */
@@ -283,8 +283,13 @@
}
else
{
- if((PHDNLDNFC_HWVER_MRA2_1 == bChipVer) || (PHDNLDNFC_HWVER_MRA2_2 == bChipVer) ||
- (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bChipVer))
+ if((PHDNLDNFC_HWVER_MRA2_1 == bChipVer) || (PHDNLDNFC_HWVER_MRA2_2 == bChipVer)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ || (PHDNLDNFC_HWVER_PN551_MRA1_0 == bChipVer)
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
+ || (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bChipVer)
+#endif
+ )
{
(gpphDnldContext->FrameInp.Type) = phDnldNfc_ChkIntg;
}
@@ -876,7 +881,7 @@
phDnldNfc_SetHwDevHandle();
/*Read Firmware file name from config file*/
- if(GetNxpStrValue(NAME_NXP_FW_NAME, fwFileName, sizeof(fwFileName)) == TRUE)
+ if(GetNxpStrValue(NAME_NXP_FW_NAME, (char *)fwFileName, sizeof(fwFileName)) == TRUE)
{
strcpy(fwpathName, FW_DLL_ROOT_DIR);
strncat(fwpathName, fwFileName, strlen(fwFileName));
@@ -884,7 +889,7 @@
}
/* load the library and get the image info pointer */
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(gRecFWDwnld == TRUE)
wStatus = phDnldNfc_LoadRecoveryFW(pathName, &pImageInfo, &ImageInfoLen);
else
@@ -892,7 +897,7 @@
wStatus = phDnldNfc_LoadFW(pathName, &pImageInfo, &ImageInfoLen);
NXPLOG_FWDNLD_D("FW Image Length - ImageInfoLen %d",ImageInfoLen);
- NXPLOG_FWDNLD_D("FW Image Info Pointer - pImageInfo %x",(uintptr_t)pImageInfo);
+ NXPLOG_FWDNLD_D("FW Image Info Pointer - pImageInfo %p",pImageInfo);
if((pImageInfo == NULL) || (ImageInfoLen == 0))
{
@@ -922,7 +927,7 @@
NXPLOG_FWDNLD_D("FW Major Version Num - %x",gpphDnldContext->nxp_nfc_fw[5]);
NXPLOG_FWDNLD_D("FW Minor Version Num - %x",gpphDnldContext->nxp_nfc_fw[4]);
NXPLOG_FWDNLD_D("FW Image Length - %d",ImageInfoLen);
- NXPLOG_FWDNLD_D("FW Image Info Pointer - %x",(uintptr_t)pImageInfo);
+ NXPLOG_FWDNLD_D("FW Image Info Pointer - %p",pImageInfo);
/* get the FW version */
wFwVer = (((uint16_t)(gpphDnldContext->nxp_nfc_fw[5]) << 8U) | (gpphDnldContext->nxp_nfc_fw[4]));
@@ -959,7 +964,7 @@
/* if memory is not allocated then allocate memory for donwload context structure */
phDnldNfc_SetHwDevHandle();
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(gRecFWDwnld == TRUE)
wStatus = phDnldNfc_LoadRecoveryFW(PLATFORM_LIB_PATH, &pImageInfo, &ImageInfoLen);
else
@@ -985,7 +990,7 @@
if((NULL != gpphDnldContext->nxp_nfc_fwp) && (0 != gpphDnldContext->nxp_nfc_fwp_len))
{
NXPLOG_FWDNLD_D("Recovery Image Length - %d",ImageInfoLen);
- NXPLOG_FWDNLD_D("Recovery Image Info Pointer - %x",(uintptr_t)pImageInfo);
+ NXPLOG_FWDNLD_D("Recovery Image Info Pointer - %p",pImageInfo);
wStatus = NFCSTATUS_SUCCESS;
}
else
@@ -1020,7 +1025,7 @@
phDnldNfc_SetHwDevHandle();
/* load the PKU image library */
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(gRecFWDwnld == TRUE)
wStatus = phDnldNfc_LoadRecoveryFW(PKU_LIB_PATH, &pImageInfo, &ImageInfoLen);
else
@@ -1046,7 +1051,7 @@
if((NULL != gpphDnldContext->nxp_nfc_fwp) && (0 != gpphDnldContext->nxp_nfc_fwp_len))
{
NXPLOG_FWDNLD_D("PKU Image Length - %d",ImageInfoLen);
- NXPLOG_FWDNLD_D("PKU Image Info Pointer - %x",(uintptr_t)pImageInfo);
+ NXPLOG_FWDNLD_D("PKU Image Info Pointer - %p",pImageInfo);
wStatus = NFCSTATUS_SUCCESS;
}
else
@@ -1104,19 +1109,16 @@
{
void* pImageInfo = NULL;
void* pImageInfoLen = NULL;
-
+ if(pathName == NULL)
+ {
#if(NFC_NXP_CHIP_TYPE == PN548C2)
- /* check for path name */
- if(pathName == NULL)
- {
pathName = "/system/vendor/firmware/libpn548ad_fw.so";
- }
+#elif(NFC_NXP_CHIP_TYPE == PN551)
+ pathName = "/system/vendor/firmware/libpn551_fw.so";
#else
- if(pathName == NULL)
- {
pathName = "/system/vendor/firmware/libpn547_fw.so";
- }
#endif
+ }
/* check if the handle is not NULL then free the library */
if(pFwLibHandle != NULL)
@@ -1159,7 +1161,8 @@
return NFCSTATUS_SUCCESS;
}
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
/*******************************************************************************
**
** Function phDnldNfc_LoadRecoveryFW
@@ -1172,7 +1175,7 @@
** pImgInfo - Firmware image handle
** pImgInfoLen - Firmware image length
**
-** Returns NFC
+** Returns NFCSTATUS
**
*******************************************************************************/
NFCSTATUS phDnldNfc_LoadRecoveryFW(const char* pathName, uint8_t **pImgInfo, uint16_t* pImgInfoLen)
@@ -1180,18 +1183,17 @@
void* pImageInfo = NULL;
void* pImageInfoLen = NULL;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
/* check for path name */
if(pathName == NULL)
{
+#if(NFC_NXP_CHIP_TYPE == PN548C2)
pathName = "/system/vendor/firmware/libpn548ad_fw.so";
- }
+#elif(NFC_NXP_CHIP_TYPE == PN551)
+ pathName = "/system/vendor/firmware/libpn551_fw.so";
#else
- if(pathName == NULL)
- {
- pathName = "/system/vendor/firmware/libpn547_fw.so";
- }
+ pathName = "/system/vendor/firmware/libpn547_fw.so";
#endif
+ }
/* check if the handle is not NULL then free the library */
if(pFwLibHandle != NULL)
{
diff --git a/halimpl/pn54x/dnld/phDnldNfc.h b/halimpl/pn54x/dnld/phDnldNfc.h
index 10aeed1..118f060 100644
--- a/halimpl/pn54x/dnld/phDnldNfc.h
+++ b/halimpl/pn54x/dnld/phDnldNfc.h
@@ -42,6 +42,8 @@
#define PHDNLDNFC_HWVER_MRA2_2 (0x05U) /* ChipVersion MRA2.2 */
#define PHDNLDNFC_HWVER_PN548AD_MRA1_0 (0x08U) /* PN548AD ChipVersion MRA1.0 */
+
+#define PHDNLDNFC_HWVER_PN551_MRA1_0 (0x08U) /* PN551 ChipVersion MRA1.0 */
/*
* Enum definition contains Download Life Cycle States
*/
@@ -104,7 +106,7 @@
extern NFCSTATUS phDnldNfc_LoadPKInfo(void);
extern void phDnldNfc_CloseFwLibHandle(void);
extern NFCSTATUS phDnldNfc_LoadFW(const char* pathName, uint8_t **pImgInfo, uint16_t* pImgInfoLen);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
extern NFCSTATUS phDnldNfc_LoadRecoveryFW(const char* pathName, uint8_t **pImgInfo, uint16_t* pImgInfoLen);
#endif
extern NFCSTATUS phDnldNfc_UnloadFW(void);
diff --git a/halimpl/pn54x/dnld/phDnldNfc_Internal.c b/halimpl/pn54x/dnld/phDnldNfc_Internal.c
index c54666e..2a8f623 100644
--- a/halimpl/pn54x/dnld/phDnldNfc_Internal.c
+++ b/halimpl/pn54x/dnld/phDnldNfc_Internal.c
@@ -57,14 +57,18 @@
#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0DC0U) /* 16 bits length of user data area */
#else
-#if(NFC_NXP_CHIP_TYPE == PN547C2)
-/* EEPROM offset and length value for PN547C2 */
-#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x023CU) /* 16 bits offset indicating user data area start location */
-#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0C80U) /* 16 bits length of user data area */
-#else
+#if((NFC_NXP_CHIP_TYPE == PN548C2))
/* EEPROM offset and length value for PN548AD */
#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x02BCU) /* 16 bits offset indicating user data area start location */
#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0C00U) /* 16 bits length of user data area */
+#elif(NFC_NXP_CHIP_TYPE == PN551)
+/* EEPROM offset and length value for PN551 */
+#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x02BCU) /* 16 bits offset indicating user data area start location */
+#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0C00U) /* 16 bits length of user data area */
+#else
+/* EEPROM offset and length value for PN547C2 */
+#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x023CU) /* 16 bits offset indicating user data area start location */
+#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0C80U) /* 16 bits length of user data area */
#endif
#endif
@@ -663,6 +667,11 @@
{
wFrameLen = 0;
wFrameLen = (pDlContext->tCmdRspFrameInfo.dwSendlength);
+ if(wFrameLen > PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE)
+ {
+ NXPLOG_FWDNLD_D("wFrameLen exceeds the limit");
+ return NFCSTATUS_FAILED;
+ }
if(phDnldNfc_FTRaw != (pDlContext->FrameInp.Type))
{
diff --git a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c b/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
index 95ff877..7a89a48 100644
--- a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
+++ b/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
@@ -35,7 +35,7 @@
/* External global variable to get FW version */
extern uint16_t wFwVer;
extern uint16_t wMwVer;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
extern uint8_t gRecFWDwnld; // flag set to true to indicate dummy FW download
#endif
/* RF Configuration structure */
@@ -180,7 +180,8 @@
phNxpNciHal_fw_dnld_chk_integrity,
NULL
};
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
/* Array of pointers to start dummy fw download seq */
static NFCSTATUS (*phNxpNciHal_dummy_rec_dwnld_seqhandler[])(
void* pContext, NFCSTATUS status, void* pInfo) = {
@@ -562,8 +563,13 @@
bHwVer = (pRespBuff->pBuff[0]);
bHwVer &= 0x0F; /* 0x0F is the mask to extract chip version */
- if ((PHDNLDNFC_HWVER_MRA2_1 == bHwVer) || (PHDNLDNFC_HWVER_MRA2_2 == bHwVer) ||
- (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bHwVer))
+ if ((PHDNLDNFC_HWVER_MRA2_1 == bHwVer) || (PHDNLDNFC_HWVER_MRA2_2 == bHwVer)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ || (PHDNLDNFC_HWVER_PN551_MRA1_0 == bHwVer)
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
+ || (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bHwVer)
+#endif
+ )
{
bExpectedLen = PHLIBNFC_IOCTL_DNLD_GETVERLEN_MRA2_1;
(gphNxpNciHal_fw_IoctlCtx.bChipVer) = bHwVer;
@@ -1874,11 +1880,12 @@
if (NFCSTATUS_SUCCESS == phDnldNfc_InitImgInfo())
{
NXPLOG_FWDNLD_D("phDnldNfc_InitImgInfo:SUCCESS");
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(gRecFWDwnld == TRUE)
{
status = phNxpNciHal_fw_seq_handler(phNxpNciHal_dummy_rec_dwnld_seqhandler);
- }else
+ }
+ else
#endif
{
status = phNxpNciHal_fw_seq_handler(phNxpNciHal_dwnld_seqhandler);
@@ -1907,8 +1914,13 @@
NFCSTATUS
phLibNfc_VerifyCrcStatus(uint8_t bCrcStatus)
{
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ uint8_t bBitPos = 1;
+ uint8_t bShiftVal = 2;
+#else
uint8_t bBitPos = 0;
uint8_t bShiftVal = 1;
+#endif
NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
while(bBitPos < 7)
{
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
index e049b43..bd79b13 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ b/halimpl/pn54x/hal/phNxpNciHal.c
@@ -34,7 +34,7 @@
extern uint8_t icode_send_eof;
extern uint8_t icode_detected;
static uint8_t cmd_icode_eof[] = { 0x00, 0x00, 0x00 };
-
+static uint8_t read_failed_disable_nfc = FALSE;
static uint8_t config_access = FALSE;
static NFCSTATUS phNxpNciHal_FwDwnld(void);
static NFCSTATUS phNxpNciHal_SendCmd(uint8_t cmd_len, uint8_t* pcmd_buff);
@@ -61,7 +61,7 @@
extern int send_to_upper_kovio;
extern int kovio_detected;
extern int disable_kovio;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
extern uint8_t gRecFWDwnld;// flag set to true to indicate dummy FW download
static uint8_t gRecFwRetryCount; //variable to hold dummy FW recovery count
#endif
@@ -94,8 +94,8 @@
static void phNxpNciHal_core_MinInitialized_complete(NFCSTATUS status);
static NFCSTATUS phNxpNciHal_set_Boot_Mode(uint8_t mode);
NFCSTATUS phNxpNciHal_check_clock_config(void);
-NFCSTATUS phNxpNciHal_china_tianjin_rf_setting(void);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+NFCSTATUS phNxpNciHal_set_china_region_configs(void);
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
static NFCSTATUS phNxpNciHalRFConfigCmdRecSequence();
static NFCSTATUS phNxpNciHal_CheckRFCmdRespStatus();
#endif
@@ -241,6 +241,7 @@
NXPLOG_NCIHAL_D("NxpNciHal thread stopped");
+ pthread_exit(NULL);
return NULL;
}
@@ -313,7 +314,11 @@
static NFCSTATUS phNxpNciHal_CheckValidFwVersion(void)
{
NFCSTATUS status = NFCSTATUS_NOT_ALLOWED;
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ const unsigned char sfw_mobile_major_no = 0x05;
+#else
const unsigned char sfw_mobile_major_no = 0x01;
+#endif
const unsigned char sfw_infra_major_no = 0x02;
unsigned char ufw_current_major_no = 0x00;
unsigned long num = 0;
@@ -353,7 +358,7 @@
NXPLOG_NCIHAL_D("Firmware download not allowed (NXP_FW_PROTECION_OVERRIDE not defiend)");
}
}
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
else if(gRecFWDwnld == TRUE)
{
status = NFCSTATUS_SUCCESS;
@@ -452,20 +457,17 @@
{
NXPLOG_NCIHAL_E ("FW Download failed - NFCC init will continue");
}
- else
+ /* call read pending */
+ wConfigStatus = phTmlNfc_Read(
+ nxpncihal_ctrl.p_cmd_data,
+ NCI_MAX_DATA_LEN,
+ (pphTmlNfc_TransactCompletionCb_t) &phNxpNciHal_read_complete,
+ NULL);
+ if (wConfigStatus != NFCSTATUS_PENDING)
{
- /* call read pending */
- wConfigStatus = phTmlNfc_Read(
- nxpncihal_ctrl.p_cmd_data,
- NCI_MAX_DATA_LEN,
- (pphTmlNfc_TransactCompletionCb_t) &phNxpNciHal_read_complete,
- NULL);
- if (wConfigStatus != NFCSTATUS_PENDING)
- {
- NXPLOG_NCIHAL_E("TML Read status error status = %x", status);
- phTmlNfc_Shutdown();
- status = NFCSTATUS_FAILED;
- }
+ NXPLOG_NCIHAL_E("TML Read status error status = %x", status);
+ phTmlNfc_Shutdown();
+ status = NFCSTATUS_FAILED;
}
}
else
@@ -497,6 +499,7 @@
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*/
@@ -509,6 +512,11 @@
/*Create the timer for extns write response*/
timeoutTimerId = phOsalNfc_Timer_Create();
+ if(timeoutTimerId == PH_OSALNFC_TIMER_ID_INVALID)
+ {
+ NXPLOG_NCIHAL_E("Invalid Timer Id, Timer Creation failed");
+ return NFCSTATUS_FAILED;
+ }
if (phNxpNciHal_init_monitor() == NULL)
{
@@ -534,7 +542,16 @@
nxpncihal_ctrl.gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
nxpncihal_ctrl.gDrvCfg.nLinkType = ENUM_LINK_TYPE_I2C;/* For PN54X */
nxpncihal_ctrl.hal_boot_mode = boot_mode;
- tTmlConfig.pDevName = (int8_t *) "/dev/pn544";
+
+ /*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)))
+ {
+ NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/pn544");
+ strcpy ((char *)nfc_dev_node, "/dev/pn544");
+ }
+
+ tTmlConfig.pDevName = (int8_t *) nfc_dev_node;
tOsalConfig.dwCallbackThreadId
= (uintptr_t) nxpncihal_ctrl.gDrvCfg.nClientId;
tOsalConfig.pLogFile = NULL;
@@ -544,7 +561,10 @@
status = phTmlNfc_Init(&tTmlConfig);
if(status == NFCSTATUS_SUCCESS)
{
- if(pthread_create(&nxpncihal_ctrl.client_thread, NULL,
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+ if(pthread_create(&nxpncihal_ctrl.client_thread, &attr,
phNxpNciHal_client_thread, &nxpncihal_ctrl) == 0x00)
{
status = phTmlNfc_Read(
@@ -630,6 +650,14 @@
NFCSTATUS wConfigStatus = NFCSTATUS_SUCCESS;
NFCSTATUS status = NFCSTATUS_SUCCESS;
+ /*structure related to set config management
+ Initialising pointer variable
+ */
+ mGetCfg_info = NULL;
+ mGetCfg_info = malloc(sizeof(phNxpNci_getCfg_info_t));
+ if(mGetCfg_info != NULL)
+ memset(mGetCfg_info,0x00,sizeof(phNxpNci_getCfg_info_t));
+
if(nxpncihal_ctrl.hal_boot_mode == NFC_FAST_BOOT_MODE)
{
NXPLOG_NCIHAL_E (" HAL NFC fast init mode calling min_open %d",nxpncihal_ctrl.hal_boot_mode);
@@ -637,13 +665,6 @@
return wConfigStatus;
}
- /*structure related to set config management
- Initialising pointer variable
- */
- mGetCfg_info = NULL;
- mGetCfg_info = malloc(sizeof(phNxpNci_getCfg_info_t));
- memset(mGetCfg_info,0x00,sizeof(phNxpNci_getCfg_info_t));
-
/*NCI_INIT_CMD*/
static uint8_t cmd_init_nci[] = {0x20,0x01,0x00};
/*NCI_RESET_CMD*/
@@ -658,6 +679,11 @@
/*Create the timer for extns write response*/
timeoutTimerId = phOsalNfc_Timer_Create();
+ if(timeoutTimerId == PH_OSALNFC_TIMER_ID_INVALID)
+ {
+ NXPLOG_NCIHAL_E("Invalid Timer Id, Timer Creation failed");
+ return NFCSTATUS_FAILED;
+ }
if (phNxpNciHal_init_monitor() == NULL)
{
@@ -685,16 +711,16 @@
NXPLOG_NCIHAL_E("malloc of nfc_dev_node failed ");
goto clean_and_return;
}
- else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, nfc_dev_node, sizeof (nfc_dev_node)))
+ else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, (char *)nfc_dev_node, sizeof (nfc_dev_node)))
{
NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/pn544");
- strcpy (nfc_dev_node, "/dev/pn544");
+ strcpy ((char *)nfc_dev_node, "/dev/pn544");
}
/* Configure hardware link */
nxpncihal_ctrl.gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
nxpncihal_ctrl.gDrvCfg.nLinkType = ENUM_LINK_TYPE_I2C;/* For PN54X */
- tTmlConfig.pDevName = (uint8_t *) nfc_dev_node;
+ tTmlConfig.pDevName = (int8_t *) nfc_dev_node;
tOsalConfig.dwCallbackThreadId
= (uintptr_t) nxpncihal_ctrl.gDrvCfg.nClientId;
tOsalConfig.pLogFile = NULL;
@@ -781,7 +807,10 @@
int phNxpNciHal_fw_mw_ver_check()
{
NFCSTATUS status = NFCSTATUS_FAILED;
-
+ if((!(strcmp(COMPILATION_MW,"PN551")) && (rom_version==0x10) && (fw_maj_ver == 0x05)))
+ {
+ status = NFCSTATUS_SUCCESS;
+ }
if((!(strcmp(COMPILATION_MW,"PN548C2")) && (rom_version==0x10) && (fw_maj_ver == 0x01)))
{
status = NFCSTATUS_SUCCESS;
@@ -1041,6 +1070,18 @@
nxpncihal_ctrl.read_retry_cnt = 0;
}
+ if(pInfo->wStatus == NFCSTATUS_READ_FAILED)
+ {
+ if (nxpncihal_ctrl.p_nfc_stack_cback != NULL)
+ {
+ read_failed_disable_nfc = TRUE;
+ /* Send the event */
+ (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_ERROR_EVT,
+ HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
+ }
+ return;
+ }
+
if (pInfo->wStatus == NFCSTATUS_SUCCESS)
{
NXPLOG_NCIHAL_D("read successful status = 0x%x", pInfo->wStatus);
@@ -1147,9 +1188,9 @@
uint8_t fw_dwnld_flag = FALSE, setConfigAlways = FALSE;
/* Temp fix to re-apply the proper clock setting */
- int temp_fix = 1;
- unsigned long num = 0;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+ int temp_fix = 1;
+ unsigned long num = 0;
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
//initialize dummy FW recovery variables
gRecFwRetryCount = 0;
gRecFWDwnld = 0;
@@ -1174,6 +1215,14 @@
}
if(retry_core_init_cnt > 3)
{
+ if (nxpncihal_ctrl.p_nfc_stack_cback != NULL)
+ {
+ NXPLOG_NCIHAL_D("Posting Core Init Failed\n");
+ read_failed_disable_nfc = TRUE;
+ /* Send the event */
+ (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_ERROR_EVT,
+ HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
+ }
return NFCSTATUS_FAILED;
}
@@ -1266,7 +1315,7 @@
}
NXPLOG_NCIHAL_D ("EEPROM_fw_dwnld_flag : 0x%02x SetConfigAlways flag : 0x%02x", fw_dwnld_flag, setConfigAlways);
- if((TRUE == fw_dwnld_flag) || (TRUE == setConfigAlways))
+ if((TRUE == fw_dwnld_flag) || (TRUE == setConfigAlways) || isNxpConfigModified())
{
config_access = TRUE;
retlen = 0;
@@ -1334,7 +1383,7 @@
}
retlen = 0;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
NXPLOG_NCIHAL_D ("Performing TVDD Settings");
isfound = GetNxpNumValue(NAME_NXP_EXT_TVDD_CFG, &num, sizeof(num));
if (isfound > 0) {
@@ -1381,7 +1430,7 @@
}
#endif
retlen = 0;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
config_access = FALSE;
#endif
NXPLOG_NCIHAL_D ("Performing RF Settings BLK 1");
@@ -1389,7 +1438,7 @@
bufflen, &retlen);
if (retlen > 0) {
status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(status == NFCSTATUS_SUCCESS)
{
status = phNxpNciHal_CheckRFCmdRespStatus();
@@ -1400,7 +1449,8 @@
retry_core_init_cnt++;
goto retry_core_init;
}
- }else
+ }
+ else
#endif
if (status != NFCSTATUS_SUCCESS) {
NXPLOG_NCIHAL_E("RF Settings BLK 1 failed");
@@ -1415,7 +1465,7 @@
bufflen, &retlen);
if (retlen > 0) {
status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(status == NFCSTATUS_SUCCESS)
{
status = phNxpNciHal_CheckRFCmdRespStatus();
@@ -1426,7 +1476,8 @@
retry_core_init_cnt++;
goto retry_core_init;
}
- }else
+ }
+ else
#endif
if (status != NFCSTATUS_SUCCESS) {
NXPLOG_NCIHAL_E("RF Settings BLK 2 failed");
@@ -1441,7 +1492,7 @@
bufflen, &retlen);
if (retlen > 0) {
status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(status == NFCSTATUS_SUCCESS)
{
status = phNxpNciHal_CheckRFCmdRespStatus();
@@ -1452,7 +1503,8 @@
retry_core_init_cnt++;
goto retry_core_init;
}
- }else
+ }
+ else
#endif
if (status != NFCSTATUS_SUCCESS) {
NXPLOG_NCIHAL_E("RF Settings BLK 3 failed");
@@ -1467,7 +1519,7 @@
bufflen, &retlen);
if (retlen > 0) {
status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(status == NFCSTATUS_SUCCESS)
{
status = phNxpNciHal_CheckRFCmdRespStatus();
@@ -1478,7 +1530,8 @@
retry_core_init_cnt++;
goto retry_core_init;
}
- }else
+ }
+ else
#endif
if (status != NFCSTATUS_SUCCESS) {
NXPLOG_NCIHAL_E("RF Settings BLK 4 failed");
@@ -1493,7 +1546,7 @@
bufflen, &retlen);
if (retlen > 0) {
status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(status == NFCSTATUS_SUCCESS)
{
status = phNxpNciHal_CheckRFCmdRespStatus();
@@ -1504,7 +1557,8 @@
retry_core_init_cnt++;
goto retry_core_init;
}
- }else
+ }
+ else
#endif
if (status != NFCSTATUS_SUCCESS) {
NXPLOG_NCIHAL_E("RF Settings BLK 5 failed");
@@ -1519,7 +1573,7 @@
bufflen, &retlen);
if (retlen > 0) {
status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
if(status == NFCSTATUS_SUCCESS)
{
status = phNxpNciHal_CheckRFCmdRespStatus();
@@ -1530,7 +1584,8 @@
retry_core_init_cnt++;
goto retry_core_init;
}
- }else
+ }
+ else
#endif
if (status != NFCSTATUS_SUCCESS) {
NXPLOG_NCIHAL_E("RF Settings BLK 6 failed");
@@ -1539,7 +1594,7 @@
}
}
retlen = 0;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
config_access = TRUE;
#endif
NXPLOG_NCIHAL_D ("Performing NAME_NXP_CORE_CONF_EXTN Settings");
@@ -1585,7 +1640,7 @@
}
retlen = 0;
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
config_access = FALSE;
#endif
isfound = GetNxpByteArrayValue(NAME_NXP_CORE_RF_FIELD,
@@ -1593,8 +1648,8 @@
if (retlen > 0) {
/* NXP ACT Proprietary Ext */
status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
- if(status == NFCSTATUS_SUCCESS)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
+ if (status == NFCSTATUS_SUCCESS)
{
status = phNxpNciHal_CheckRFCmdRespStatus();
/*STATUS INVALID PARAM 0x09*/
@@ -1604,7 +1659,8 @@
retry_core_init_cnt++;
goto retry_core_init;
}
- }else
+ }
+ else
#endif
if (status != NFCSTATUS_SUCCESS) {
NXPLOG_NCIHAL_E("Setting NXP_CORE_RF_FIELD status failed");
@@ -1612,11 +1668,11 @@
goto retry_core_init;
}
}
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
config_access = TRUE;
#endif
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
retlen = 0;
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
/* NXP SWP switch timeout Setting*/
if(GetNxpNumValue(NAME_NXP_SWP_SWITCH_TIMEOUT, (void *)&retlen, sizeof(retlen)))
@@ -1627,11 +1683,11 @@
if( 0 < retlen)
{
uint16_t timeout = retlen * 1000;
- uint16_t timeoutHx = 0x0000;
+ unsigned int timeoutHx = 0x0000;
uint8_t tmpbuffer[10];
- snprintf ( tmpbuffer, 10, "%04x", timeout );
- sscanf (tmpbuffer,"%x",&timeoutHx);
+ snprintf ((char *)tmpbuffer, 10, "%04x", timeout );
+ sscanf ((const char *)tmpbuffer,"%x",(unsigned int *)&timeoutHx);
swp_switch_timeout_cmd[7]= (timeoutHx & 0xFF);
swp_switch_timeout_cmd[8]= ((timeoutHx & 0xFF00) >> 8);
@@ -1652,11 +1708,12 @@
}
}
-
- status = phNxpNciHal_china_tianjin_rf_setting();
+#endif
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
+ status = phNxpNciHal_set_china_region_configs();
if (status != NFCSTATUS_SUCCESS)
{
- NXPLOG_NCIHAL_E("phNxpNciHal_china_tianjin_rf_setting failed");
+ NXPLOG_NCIHAL_E("phNxpNciHal_set_china_region_configs failed");
retry_core_init_cnt++;
goto retry_core_init;
}
@@ -1803,6 +1860,28 @@
goto retry_core_init;
}
+ // Set the proper screen state
+ switch(p_core_init_rsp_params[255])
+ {
+ case 0x0:
+ case 0x3:
+ NXPLOG_NCIHAL_E ("Last Screen State Sent = 0x0");
+ set_screen_state[3] = 0x00; //SCREEN ON UNLOCKED (listen and poll mode)
+ break;
+ case 0x1:
+ NXPLOG_NCIHAL_E ("Last Screen State Sent = 0x1");
+ set_screen_state[3] = 0x01; //SCREEN OFF
+ break;
+ case 0x2:
+ NXPLOG_NCIHAL_E ("Last Screen State Sent = 0x2");
+ set_screen_state[3] = 0x02; //SCREEN ON LOCKED (only listen mode)
+ break;
+ default:
+ NXPLOG_NCIHAL_E ("Setting default as SCREEN ON UNLOCKED");
+ set_screen_state[3] = 0x00; //SCREEN ON UNLOCKED (listen and poll mode)
+ break;
+ }
+
if(*(p_core_init_rsp_params + 1) == 1) // RF state is Discovery!!
{
NXPLOG_NCIHAL_E("Sending Set Screen ON State Command as raw packet!!");
@@ -1828,7 +1907,6 @@
else
{
NXPLOG_NCIHAL_E("Sending Set Screen OFF State Command as raw packet!!");
- set_screen_state[3] = 0x01; //Screen OFF
status = phNxpNciHal_send_ext_cmd (sizeof(set_screen_state),
set_screen_state);
if (status != NFCSTATUS_SUCCESS)
@@ -1900,7 +1978,8 @@
free(buffer);
buffer = NULL;
}
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+ config_access = FALSE;
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
//initialize dummy FW recovery variables
gRecFWDwnld = 0;
gRecFwRetryCount = 0;
@@ -1928,7 +2007,7 @@
#endif*/
return NFCSTATUS_SUCCESS;
}
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
/******************************************************************************
* Function phNxpNciHal_CheckRFCmdRespStatus
*
@@ -1944,7 +2023,7 @@
{
NFCSTATUS status = NFCSTATUS_SUCCESS;
static uint16_t INVALID_PARAM = 0x09;
- if(nxpncihal_ctrl.rx_data_len > 0 && nxpncihal_ctrl.p_rx_data[2] > 0)
+ if ((nxpncihal_ctrl.rx_data_len > 0) && (nxpncihal_ctrl.p_rx_data[2] > 0))
{
if(nxpncihal_ctrl.p_rx_data[3] == 0x09)
{
@@ -1984,7 +2063,6 @@
return NFCSTATUS_FAILED;
}
do{
- status = phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
phDnldNfc_InitImgInfo();
if (NFCSTATUS_SUCCESS == phNxpNciHal_CheckValidFwVersion())
{
@@ -2257,7 +2335,11 @@
static uint8_t cmd_ce_disc_nci[] = {0x21,0x03,0x07,0x03,0x80,0x01,0x81,0x01,0x82,0x01};
CONCURRENCY_LOCK();
-
+ if(read_failed_disable_nfc)
+ {
+ read_failed_disable_nfc = FALSE;
+ goto close_and_return;
+ }
status = phNxpNciHal_send_ext_cmd(sizeof(cmd_ce_disc_nci),cmd_ce_disc_nci);
if(status != NFCSTATUS_SUCCESS)
{
@@ -2271,7 +2353,7 @@
{
NXPLOG_NCIHAL_E ("NCI_CORE_RESET: Failed");
}
-
+ close_and_return:
if (NULL != gpphTmlNfc_Context->pDevHandle)
{
phNxpNciHal_close_complete(NFCSTATUS_SUCCESS);
@@ -2594,14 +2676,32 @@
ret = 0;
}
break;
+ case HAL_NFC_IOCTL_P61_GET_ACCESS:
+ NXPLOG_NCIHAL_D("HAL_NFC_IOCTL_P61_GET_ACCESS timeout = %d",(*(int32_t *)p_data));
+ status = phTmlNfc_get_ese_access(gpphTmlNfc_Context->pDevHandle, (*(int32_t *)p_data));
+ if(NFCSTATUS_SUCCESS == status)
+ {
+ ret = 0;
+ }
+ break;
+ case HAL_NFC_IOCTL_P61_REL_ACCESS:
+ status = phTmlNfc_IoCtl(phTmlNfc_e_RelP61Access);
+ NXPLOG_NCIHAL_D("HAL_NFC_IOCTL_P61_REL_ACCESS retval = %d\n",status);
+ if(NFCSTATUS_SUCCESS == status)
+ {
+ ret = 0;
+ }
+ break;
#endif
case HAL_NFC_IOCTL_SET_BOOT_MODE:
- status = phNxpNciHal_set_Boot_Mode(*(uint8_t*)p_data);
- if(NFCSTATUS_FAILED != status)
+ if(NULL != p_data)
{
- if(NULL != p_data)
- *(uint16_t*)p_data = (uint16_t)status;
- ret = 0;
+ status = phNxpNciHal_set_Boot_Mode(*(uint8_t*)p_data);
+ if(NFCSTATUS_FAILED != status)
+ {
+ *(uint16_t*)p_data = (uint16_t)status;
+ ret = 0;
+ }
}
break;
@@ -2614,7 +2714,10 @@
FwRfInfo = (phNxpNciHal_FwRfupdateInfo_t *) p_data;
status = phNxpNciHal_CheckFwRegFlashRequired(&FwRfInfo->fw_update_reqd,
&FwRfInfo->rf_update_reqd);
- ret = 0;
+ if(NFCSTATUS_SUCCESS == status)
+ {
+ ret = 0;
+ }
break;
case HAL_NFC_IOCTL_FW_DWNLD:
status = phNxpNciHal_FwDwnld();
@@ -2788,22 +2891,25 @@
}
/******************************************************************************
- * Function phNxpNciHal_china_tianjin_rf_setting
+ * Function phNxpNciHal_set_china_region_configs
*
- * Description This function is called to check RF Setting
+ * Description This function is called to set china region specific configs
*
* Returns Status.
*
******************************************************************************/
-NFCSTATUS phNxpNciHal_china_tianjin_rf_setting(void)
+NFCSTATUS phNxpNciHal_set_china_region_configs(void)
{
NFCSTATUS status = NFCSTATUS_SUCCESS;
int isfound = 0;
int rf_enable = FALSE;
+ int cfg_blk_chk_enable = FALSE;
int rf_val = 0;
- int send_flag;
+ int flag_send_tianjin_config=TRUE;
+ int flag_send_transit_config=TRUE;
uint8_t retry_cnt =0;
int enable_bit =0;
+ int enable_blk_num_chk_bit =0;
static uint8_t get_rf_cmd[] = {0x20, 0x03,0x03, 0x01, 0xA0, 0x85};
retry_send_ext:
@@ -2811,7 +2917,7 @@
{
return NFCSTATUS_FAILED;
}
- send_flag = TRUE;
+
phNxpNciRfSet.isGetRfSetting = TRUE;
status = phNxpNciHal_send_ext_cmd(sizeof(get_rf_cmd),get_rf_cmd);
if(status != NFCSTATUS_SUCCESS)
@@ -2827,6 +2933,8 @@
NXPLOG_NCIHAL_E("GET_CONFIG_RSP is FAILED for CHINA TIANJIN");
return status;
}
+
+ /* check if tianjin_rf_setting is required */
rf_val = phNxpNciRfSet.p_rx_data[10];
isfound = (GetNxpNumValue(NAME_NXP_CHINA_TIANJIN_RF_ENABLED, (void *)&rf_enable, sizeof(rf_enable)));
if(isfound >0)
@@ -2842,20 +2950,40 @@
}
else
{
- send_flag = FALSE; // No need to change in RF setting
+ flag_send_tianjin_config = FALSE; // No need to change in RF setting
}
+ }
- if(send_flag == TRUE)
+ /*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)));
+ if(isfound >0)
+ {
+ enable_blk_num_chk_bit = rf_val & 0x40;
+ if((enable_blk_num_chk_bit != 0x40) && (cfg_blk_chk_enable == 1))
{
- static uint8_t set_rf_cmd[] = {0x20, 0x02, 0x08, 0x01, 0xA0, 0x85, 0x04, 0x50, 0x08, 0x68, 0x00};
- memcpy(&set_rf_cmd[4],&phNxpNciRfSet.p_rx_data[5],7);
- status = phNxpNciHal_send_ext_cmd(sizeof(set_rf_cmd),set_rf_cmd);
- if(status != NFCSTATUS_SUCCESS)
- {
- NXPLOG_NCIHAL_E("unable to set the RF setting");
- retry_cnt++;
- goto retry_send_ext;
- }
+ phNxpNciRfSet.p_rx_data[8] |= 0x40; // Enable if it is disabled
+ }
+ else if((enable_blk_num_chk_bit == 0x40) && (cfg_blk_chk_enable == 0))
+ {
+ phNxpNciRfSet.p_rx_data[8] &= ~0x40; // Disable if it is Enabled
+ }
+ else
+ {
+ flag_send_transit_config = FALSE; // No need to change in RF setting
+ }
+ }
+
+ if(flag_send_tianjin_config || flag_send_transit_config)
+ {
+ static uint8_t set_rf_cmd[] = {0x20, 0x02, 0x08, 0x01, 0xA0, 0x85, 0x04, 0x50, 0x08, 0x68, 0x00};
+ memcpy(&set_rf_cmd[4],&phNxpNciRfSet.p_rx_data[5],7);
+ status = phNxpNciHal_send_ext_cmd(sizeof(set_rf_cmd),set_rf_cmd);
+ if(status != NFCSTATUS_SUCCESS)
+ {
+ NXPLOG_NCIHAL_E("unable to set the RF setting");
+ retry_cnt++;
+ goto retry_send_ext;
}
}
diff --git a/halimpl/pn54x/hal/phNxpNciHal_Kovio.c b/halimpl/pn54x/hal/phNxpNciHal_Kovio.c
index 1479d54..623ce84 100644
--- a/halimpl/pn54x/hal/phNxpNciHal_Kovio.c
+++ b/halimpl/pn54x/hal/phNxpNciHal_Kovio.c
@@ -19,7 +19,7 @@
#define KOVIO_TIMEOUT 1000 /* Timeout value to wait for RF INTF Activated NTF.*/
-#define KOVIO_ACT_NTF_TEMP_BUFF_LEN (32+16) /* length of temp buffer to manipulate
+#define KOVIO_ACT_NTF_TEMP_BUFF_LEN 64 /* length of temp buffer to manipulate
the activated notification to match BCM format*/
#define MAX_WRITE_RETRY 5
@@ -152,7 +152,7 @@
send_to_upper_kovio = 1;
if((p_ntf[0]==0x61)&&(p_ntf[1]==0x05))
{
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
if((p_ntf[5]==0x81)&&(p_ntf[6]==0x70))
#else
if((p_ntf[5]==0x8A)&&(p_ntf[6]==0x77))
diff --git a/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.c b/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.c
index b1fcdc1..bac4327 100644
--- a/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.c
+++ b/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.c
@@ -560,6 +560,7 @@
}
NXPLOG_NCIHAL_E("tmp_thread: exit");
+ pthread_exit(NULL);
return NULL;
}
/*******************************************************************************
diff --git a/halimpl/pn54x/hal/phNxpNciHal_ext.c b/halimpl/pn54x/hal/phNxpNciHal_ext.c
index 535ab8a..39abcbb 100644
--- a/halimpl/pn54x/hal/phNxpNciHal_ext.c
+++ b/halimpl/pn54x/hal/phNxpNciHal_ext.c
@@ -211,7 +211,7 @@
case 0x80:
NXPLOG_NCIHAL_D("NxpNci: Protocol = MIFARE");
break;
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
case 0x81:
#else
case 0x8A:
@@ -305,6 +305,10 @@
p_ntf[2]--;
(*p_len)--;
}
+ else
+ {
+ p_ntf[p_ntf[2]+ 2] |= 0x01;
+ }
}
else if (p_ntf[2] == 0x02 &&
p_ntf[1] == 0x00 && icode_detected == 1)
@@ -695,10 +699,10 @@
*cmd_len = 8;
}
}
-#if(NFC_NXP_CHIP_TYPE == PN547C2)
+
if (retval == 0x01 &&
- p_cmd_data[0] == 0x21 &&
- p_cmd_data[1] == 0x00)
+ p_cmd_data[0] == 0x21 &&
+ p_cmd_data[1] == 0x00)
{
NXPLOG_NCIHAL_D ("Going through extns - Adding Mifare in RF Discovery");
p_cmd_data[2] += 3;
@@ -711,13 +715,12 @@
NXPLOG_NCIHAL_D ("Going through extns - Adding Mifare in RF Discovery - END");
}
else
-#endif
if (p_cmd_data[3] == 0x81 &&
p_cmd_data[4] == 0x01 &&
p_cmd_data[5] == 0x03)
{
NXPLOG_NCIHAL_D("> Going through the set host list");
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
*cmd_len = 8;
p_cmd_data[2] = 0x05;
@@ -1059,14 +1062,14 @@
{
//Clear the buffer first
- memset(set_cfg_eeprom+setCfgStartIndex,0x00,sizeof(set_cfg_eeprom) - setCfgStartIndex);
+ memset(set_cfg_eeprom+setCfgStartIndex,0x00,(set_cfg_cmd_len - setCfgStartIndex));
//copy get config data into set_cfg_eeprom
memcpy(set_cfg_eeprom+setCfgStartIndex, nxpncihal_ctrl.p_rx_data+getCfgStartIndex, fieldLen);
if(mEEPROM_info->update_mode == BITWISE)
{
cur_value = (set_cfg_eeprom[setCfgStartIndex+memIndex] >> b_position) & 0x01;
- if(cur_value != mEEPROM_info->buffer)
+ if(cur_value != mEEPROM_info->buffer[0])
{
update_req = TRUE;
if(mEEPROM_info->buffer[0]== 1)
diff --git a/halimpl/pn54x/libnfc-brcm.conf b/halimpl/pn54x/libnfc-brcm.conf
index c98668a..934720f 100644
--- a/halimpl/pn54x/libnfc-brcm.conf
+++ b/halimpl/pn54x/libnfc-brcm.conf
@@ -146,10 +146,12 @@
UICC_LISTEN_TECH_MASK=0x07
###############################################################################
-# Force HOST listen feature enable or disable.
-# 0: Disable
-# 1: Enable
-HOST_LISTEN_ENABLE=0x01
+# Forcing HOST to listen for a selected technology
+# 0x00 : Disable Host Listen
+# 0x01 : Enable Host Listen for Tech A
+# 0x02 : Enable Host Listen for Tech B
+# 0x03 : Enable Host Listen for Tech AB
+HOST_LISTEN_TECH_MASK=0x03
###############################################################################
# Enabling/Disabling Forward functionality
@@ -313,7 +315,7 @@
# 2 NFA_RW_PRES_CHK_RESET; Deactivate to Sleep, then re-activate
# 3 NFA_RW_PRES_CHK_RB_CH0; Type-4 tag protocol's ReadBinary command on channel 0
# 4 NFA_RW_PRES_CHK_RB_CH3; Type-4 tag protocol's ReadBinary command on channel 3
-#PRESENCE_CHECK_ALGORITHM=0
+PRESENCE_CHECK_ALGORITHM=1
###############################################################################
# Force tag polling for the following technology(s).
@@ -328,7 +330,7 @@
# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */
# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */
-# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
+# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
# NFA_TECHNOLOGY_MASK_A_ACTIVE 0x40 /* NFC Technology A active mode */
# NFA_TECHNOLOGY_MASK_F_ACTIVE 0x80 /* NFC Technology F active mode */
POLLING_TECH_MASK=0xEF
@@ -378,8 +380,25 @@
AID_MATCHING_MODE=0x01
###############################################################################
-# Preferred Secure Element for Technology based routing
-# eSE 0x01
-# UICC 0x02
+# Default Secure Element route id
+DEFAULT_OFFHOST_ROUTE=0x02
-NXP_PRFD_TECH_SE=0x01
+###############################################################################
+# Vendor Specific Proprietary Protocol & Discovery Configuration
+# Set to 0xFF if unsupported
+# byte[0] NCI_PROTOCOL_18092_ACTIVE
+# byte[1] NCI_PROTOCOL_B_PRIME
+# byte[2] NCI_PROTOCOL_DUAL
+# byte[3] NCI_PROTOCOL_15693
+# byte[4] NCI_PROTOCOL_KOVIO
+# byte[5] NCI_PROTOCOL_MIFARE
+# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO
+# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME
+# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
+NFA_PROPRIETARY_CFG={05:FF:FF:06:81:80:70:FF:FF}
+
+#################################################################################
+# Bail out mode
+# If set to 1, NFCC is using bail out mode for either Type A or Type B poll.
+NFA_POLL_BAIL_OUT_MODE=0x01
+#################################################################################
diff --git a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
index 8b47c52..e092f3c 100644
--- a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
@@ -66,7 +66,7 @@
###############################################################################
# Standby enable settings
-NXP_CORE_STANDBY={2F, 00, 01, 01}
+#NXP_CORE_STANDBY={2F, 00, 01, 01}
###############################################################################
#Atonomous Mode
diff --git a/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
index bcce366..55b769b 100644
--- a/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN548C2_example.conf
@@ -73,7 +73,7 @@
###############################################################################
# Standby enable settings
-NXP_CORE_STANDBY={2F, 00, 01, 01}
+#NXP_CORE_STANDBY={2F, 00, 01, 01}
###############################################################################
# NXP TVDD configurations settings
@@ -310,6 +310,11 @@
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.
diff --git a/halimpl/pn54x/libnfc-nxp-PN551_example.conf b/halimpl/pn54x/libnfc-nxp-PN551_example.conf
new file mode 100644
index 0000000..25be0df
--- /dev/null
+++ b/halimpl/pn54x/libnfc-nxp-PN551_example.conf
@@ -0,0 +1,327 @@
+## 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
+# NXPLOG_DEFAULT_LOGLEVEL 0x01
+# ANDROID_LOG_DEBUG 0x03
+# 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"
+
+###############################################################################
+# Extension for Mifare reader enable
+MIFARE_READER_ENABLE=0x01
+
+###############################################################################
+# Vzw Feature enable
+VZW_FEATURE_ENABLE=0x01
+
+###############################################################################
+# File name for Firmware
+NXP_FW_NAME="libpn551_fw.so"
+
+###############################################################################
+# System clock source selection configuration
+#define CLK_SRC_XTAL 1
+#define CLK_SRC_PLL 2
+
+NXP_SYS_CLK_SRC_SEL=0x01
+
+###############################################################################
+# System clock frequency selection configuration
+#define CLK_FREQ_13MHZ 1
+#define CLK_FREQ_19_2MHZ 2
+#define CLK_FREQ_24MHZ 3
+#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
+
+###############################################################################
+# NXP proprietary settings
+NXP_ACT_PROP_EXTN={2F, 02, 00}
+
+###############################################################################
+# NFC forum profile settings
+NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
+
+###############################################################################
+# NFCC Configuration Control
+# Allow NFCC to manage RF Config 0x01
+# Don't allow NFCC to manage RF Config 0x00
+NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
+
+###############################################################################
+# 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.
+
+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}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_1={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_2={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_3={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_4={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_5={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_6={
+#}
+
+###############################################################################
+## Set configuration optimization decision setting
+## Enable = 0x01
+## Disable = 0x00
+NXP_SET_CONFIG_ALWAYS=0x00
+
+###############################################################################
+# Core configuration extensions
+# It includes
+# Wired mode settings A0ED, A0EE
+# Tag Detector A040, A041, A043
+# Low Power mode A007
+# Clock settings A002, A003
+# PbF settings A008
+NXP_CORE_CONF_EXTN={20, 02, 19, 06,
+ A0, EC, 01, 01,
+ A0, ED, 01, 00,
+ A0, 5E, 01, 01,
+ A0, 40, 01, 01,
+ A0, DD, 01, 2D,
+ A0, 96, 01, 01
+ }
+# A0, 41, 01, 02,
+# A0, 43, 01, 04,
+# A0, 02, 01, 01,
+# A0, 03, 01, 11,
+# A0, 07, 01, 03,
+# A0, 08, 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
+NXP_I2C_FRAGMENTATION_ENABLED=0x00
+
+###############################################################################
+# Core configuration settings
+NXP_CORE_CONF={ 20, 02, 2E, 0E,
+ 28, 01, 00,
+ 21, 01, 00,
+ 30, 01, 08,
+ 31, 01, 03,
+ 32, 01, 60,
+ 38, 01, 01,
+ 33, 04, 01, 02, 03, 04,
+ 54, 01, 06,
+ 50, 01, 02,
+ 5B, 01, 00,
+ 80, 01, 01,
+ 81, 01, 01,
+ 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,
+# A0, 52, 06, D3, F7, D3, F7, D3, F7,
+# 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
+# eSE 0x01
+# UICC 0x02
+
+NXP_DEFAULT_SE=0x03
+
+###############################################################################
+#Enable SWP full power mode when phone is power off
+NXP_SWP_FULL_PWR_ON=0x00
+
+###############################################################################
+#### Select the CHIP ####
+#PN547C2 0x01
+#PN65T 0x02
+#PN548AD 0x03
+#PN66T 0x04
+#PN551 0x05
+#PN67T 0x06
+
+NXP_NFC_CHIP=0x05
+###############################################################################
+# CE when Screen state is locked
+# 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
+# eSE 0x01
+# UICC 0x02
+DEFAULT_AID_ROUTE=0x00
+
+###############################################################################
+#Set the Mifare Desfire route Location :
+#This settings will be used when application does not set this parameter
+# host 0x00
+# eSE 0x01
+# UICC 0x02
+DEFAULT_DESFIRE_ROUTE=0x02
+
+###############################################################################
+#Set the Mifare CLT route Location :
+#This settings will be used when application does not set this parameter
+# host 0x00
+# eSE 0x01
+# UICC 0x02
+DEFAULT_MIFARE_CLT_ROUTE=0x02
+
+###############################################################################
+#Set the default AID Power state :
+#This settings will be used when application does not set this parameter
+# bit pos 0 = Switch On
+# bit pos 1 = Switch Off
+# bit pos 2 = Battery Off
+# bit pos 3 = Screen Lock
+# bit pos 4 = Screen Off
+DEFAULT_AID_PWR_STATE=0x19
+
+###############################################################################
+#Set the Mifare Desfire Power state :
+#This settings will be used when application does not set this parameter
+# bit pos 0 = Switch On
+# bit pos 1 = Switch Off
+# bit pos 2 = Battery Off
+# bit pos 3 = Screen Lock
+# bit pos 4 = Screen Off
+DEFAULT_DESFIRE_PWR_STATE=0x1B
+
+###############################################################################
+#Set the Mifare CLT Power state :
+#This settings will be used when application does not set this parameter
+# bit pos 0 = Switch On
+# bit pos 1 = Switch Off
+# bit pos 2 = Battery Off
+# bit pos 3 = Screen Lock
+# bit pos 4 = Screen Off
+DEFAULT_MIFARE_CLT_PWR_STATE=0x1B
+
+###############################################################################
+# AID Matching platform options
+# 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].
+# Timeout in milliseconds, for example
+# 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
diff --git a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf b/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
index 62f5fdb..fab964c 100644
--- a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
@@ -66,7 +66,7 @@
###############################################################################
# Standby enable settings
-NXP_CORE_STANDBY={2F, 00, 01, 01}
+#NXP_CORE_STANDBY={2F, 00, 01, 01}
###############################################################################
#Atonomous Mode
diff --git a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf b/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
index 71d42bb..24954cb 100644
--- a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
@@ -72,7 +72,7 @@
###############################################################################
# Standby enable settings
-NXP_CORE_STANDBY={2F, 00, 01, 01}
+#NXP_CORE_STANDBY={2F, 00, 01, 01}
###############################################################################
# NXP TVDD configurations settings
@@ -374,6 +374,11 @@
#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 CP TIMEOUT
@@ -383,3 +388,9 @@
# 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
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN67T_example.conf b/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
new file mode 100644
index 0000000..5c5aabe
--- /dev/null
+++ b/halimpl/pn54x/libnfc-nxp-PN67T_example.conf
@@ -0,0 +1,397 @@
+## 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
+# NXPLOG_DEFAULT_LOGLEVEL 0x01
+# ANDROID_LOG_DEBUG 0x03
+# 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"
+
+###############################################################################
+# Extension for Mifare reader enable
+MIFARE_READER_ENABLE=0x01
+
+###############################################################################
+# Vzw Feature enable
+VZW_FEATURE_ENABLE=0x01
+
+###############################################################################
+# File name for Firmware
+NXP_FW_NAME="libpn551_fw.so"
+
+###############################################################################
+# System clock source selection configuration
+#define CLK_SRC_XTAL 1
+#define CLK_SRC_PLL 2
+
+NXP_SYS_CLK_SRC_SEL=0x01
+
+###############################################################################
+# System clock frequency selection configuration
+#define CLK_FREQ_13MHZ 1
+#define CLK_FREQ_19_2MHZ 2
+#define CLK_FREQ_24MHZ 3
+#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
+
+###############################################################################
+# NXP proprietary settings
+NXP_ACT_PROP_EXTN={2F, 02, 00}
+
+###############################################################################
+# NFC forum profile settings
+NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
+
+###############################################################################
+# NFCC Configuration Control
+# Allow NFCC to manage RF Config 0x01
+# Don't allow NFCC to manage RF Config 0x00
+NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
+
+###############################################################################
+# 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.
+
+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}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_1={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_2={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_3={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_4={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_5={
+#}
+
+###############################################################################
+# NXP RF configuration ALM/PLM settings
+# This section needs to be updated with the correct values based on the platform
+#NXP_RF_CONF_BLK_6={
+#}
+
+
+###############################################################################
+# Set configuration optimization decision setting
+# Enable = 0x01
+# Disable = 0x00
+NXP_SET_CONFIG_ALWAYS=0x00
+
+###############################################################################
+# Core configuration extensions
+# It includes
+# Wired mode settings A0ED, A0EE
+# Tag Detector A040, A041, A043
+# Low Power mode A007
+# Clock settings A002, A003
+# PbF settings A008
+# Clock timeout settings A004
+NXP_CORE_CONF_EXTN={20, 02, 21, 08,
+ A0, EC, 01, 01,
+ A0, ED, 01, 03,
+ A0, 5E, 01, 01,
+ A0, 12, 01, 02,
+ A0, 40, 01, 01,
+ A0, DD, 01, 2D,
+ A0, F2, 01, 01,
+ A0, 96, 01, 01
+ }
+# A0, 41, 01, 02,
+# A0, 43, 01, 04,
+# A0, 02, 01, 01,
+# A0, 03, 01, 11,
+# A0, 07, 01, 03,
+# A0, 08, 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
+NXP_I2C_FRAGMENTATION_ENABLED=0x00
+
+###############################################################################
+# Core configuration settings
+NXP_CORE_CONF={ 20, 02, 2E, 0E,
+ 28, 01, 00,
+ 21, 01, 00,
+ 30, 01, 08,
+ 31, 01, 03,
+ 32, 01, 60,
+ 38, 01, 01,
+ 33, 04, 01, 02, 03, 04,
+ 54, 01, 06,
+ 50, 01, 02,
+ 5B, 01, 00,
+ 80, 01, 01,
+ 81, 01, 01,
+ 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,
+# A0, 52, 06, D3, F7, D3, F7, D3, F7,
+# 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
+# eSE 0x01
+# UICC 0x02
+
+NXP_DEFAULT_SE=0x03
+
+###############################################################################
+#Enable SWP full power mode when phone is power off
+NXP_SWP_FULL_PWR_ON=0x00
+
+###############################################################################
+#### Select the CHIP ####
+#PN547C2 0x01
+#PN65T 0x02
+#PN548AD 0x03
+#PN66T 0x04
+#PN551 0x05
+#PN67T 0x06
+NXP_NFC_CHIP=0x06
+
+###############################################################################
+# CE when Screen state is locked
+# 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
+# eSE 0x01
+# UICC 0x02
+DEFAULT_AID_ROUTE=0x00
+
+###############################################################################
+#Set the Mifare Desfire route Location :
+#This settings will be used when application does not set this parameter
+# host 0x00
+# eSE 0x01
+# UICC 0x02
+DEFAULT_DESFIRE_ROUTE=0x02
+
+###############################################################################
+#Set the Mifare CLT route Location :
+#This settings will be used when application does not set this parameter
+# host 0x00
+# eSE 0x01
+# UICC 0x02
+DEFAULT_MIFARE_CLT_ROUTE=0x02
+###############################################################################
+#Set the default AID Power state :
+#This settings will be used when application does not set this parameter
+# bit pos 0 = Switch On
+# bit pos 1 = Switch Off
+# bit pos 2 = Battery Off
+# bit pos 3 = Screen Lock
+# bit pos 4 = Screen Off
+DEFAULT_AID_PWR_STATE=0x19
+
+###############################################################################
+#Set the Mifare Desfire Power state :
+#This settings will be used when application does not set this parameter
+# bit pos 0 = Switch On
+# bit pos 1 = Switch Off
+# bit pos 2 = Battery Off
+# bit pos 3 = Screen Lock
+# bit pos 4 = Screen Off
+DEFAULT_DESFIRE_PWR_STATE=0x1B
+
+###############################################################################
+#Set the Mifare CLT Power state :
+#This settings will be used when application does not set this parameter
+# bit pos 0 = Switch On
+# bit pos 1 = Switch Off
+# bit pos 2 = Battery Off
+# bit pos 3 = Screen Lock
+# bit pos 4 = Screen Off
+DEFAULT_MIFARE_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].
+# Timeout in milliseconds, for example
+# 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
+# LS2.0 0x20
+# LS2.1 0x21
+# 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.
+NXP_NFCC_STANDBY_TIMEOUT=20000
+
+###############################################################################
+#Dynamic RSSI feature enable
+# 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
+# For ISO-DEP Protocol routing to ESE Mask = 2
+# It can also take TECH|PROTO = 6
+# To ignore the delay set mask to = 0
+NXP_ESE_WIRED_PRT_MASK=0x00
+
+###############################################################################
+#Virtual Mode UICC and Wired Mode ongoing delay Wired Mode
+#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
+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 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
\ No newline at end of file
diff --git a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
index b5bdf1d..a3e4ef4 100644
--- a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
+++ b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
@@ -105,7 +105,9 @@
#endif
},
{
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ 0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
#else
0x4, {0x40,0x01,0x17,0x00 }
@@ -175,7 +177,9 @@
#endif
},
{
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ 0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
#else
0x4, {0x40,0x01,0x17,0x00 }
@@ -243,7 +247,9 @@
#endif
},
{
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ 0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
#else
0x4, {0x40,0x01,0x17,0x00 } /* exp_rsp */
@@ -300,7 +306,9 @@
#endif
},
{
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ 0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
#else
0x4, {0x40,0x01,0x17,0x00 } /* exp_rsp */
@@ -401,7 +409,9 @@
#endif
},
{
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ 0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
#else
0x4, {0x40,0x01,0x17,0x00 } /* exp_rsp */
@@ -540,7 +550,9 @@
#endif
},
{
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_CHIP_TYPE == PN551)
+ 0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
+#elif(NFC_NXP_CHIP_TYPE == PN548C2)
0x4, {0x40,0x01,0x19,0x00 } /* exp_rsp */
#else
0x4, {0x40,0x01,0x17,0x00 } /* exp_rsp */
@@ -1175,6 +1187,7 @@
NXPLOG_NCIHAL_D("Self test thread stopped");
+ pthread_exit(NULL);
return NULL;
}
@@ -1419,15 +1432,15 @@
NXPLOG_NCIHAL_E("malloc of nfc_dev_node failed ");
goto clean_and_return;
}
- else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, nfc_dev_node, sizeof (nfc_dev_node)))
+ else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, (char*)nfc_dev_node, sizeof (nfc_dev_node)))
{
NXPLOG_NCIHAL_E("Invalid nfc device node name keeping the default device node /dev/pn544");
- strcpy (nfc_dev_node, "/dev/pn544");
+ strcpy ((char *)nfc_dev_node, "/dev/pn544");
}
gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
gDrvCfg.nLinkType = ENUM_LINK_TYPE_I2C;/* For PN54X */
- tTmlConfig.pDevName = (uint8_t *) nfc_dev_node;
+ tTmlConfig.pDevName = (int8_t *) nfc_dev_node;
tOsalConfig.dwCallbackThreadId = (uintptr_t) gDrvCfg.nClientId;
tOsalConfig.pLogFile = NULL;
tTmlConfig.dwGetMsgThreadId = (uintptr_t) gDrvCfg.nClientId;
@@ -1624,7 +1637,7 @@
nci_test_data_t prbs_cmd_data;
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
uint8_t rsp_cmd_info[] = {0x4F, 0x30, 0x01, 0x00};
prbs_cmd_data.cmd.len = 0x09;
#else
@@ -1747,7 +1760,7 @@
NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - tech 0x%x bitrate = 0x%x", tech, bitrate);
if(NULL == prbs_cmd ||
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
prbs_cmd_len != 0x09)
#else
prbs_cmd_len != 0x07)
@@ -1758,7 +1771,7 @@
prbs_cmd[0] = 0x2F;
prbs_cmd[1] = 0x30;
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
prbs_cmd[2] = 0x06;
prbs_cmd[3] = (uint8_t)prbs_type;
//0xFF Error value used for validation.
diff --git a/halimpl/pn54x/tml/phTmlNfc.c b/halimpl/pn54x/tml/phTmlNfc.c
index be19b25..87cbfd9 100644
--- a/halimpl/pn54x/tml/phTmlNfc.c
+++ b/halimpl/pn54x/tml/phTmlNfc.c
@@ -33,6 +33,7 @@
*/
#define PHTMLNFC_MAXTIME_RETRANSMIT (200U)
#define MAX_WRITE_RETRY_COUNT 0x03
+#define MAX_READ_RETRY_COUNT 0x05
/* Retry Count = Standby Recovery time of NFCC / Retransmission time + 1 */
static uint8_t bCurrentRetryCount = (2000 / PHTMLNFC_MAXTIME_RETRANSMIT) + 1;
@@ -45,7 +46,7 @@
/* Initialize Context structure pointer used to access context structure */
phTmlNfc_Context_t *gpphTmlNfc_Context = NULL;
-extern phTmlNfc_i2cfragmentation_t fragmentation_enabled = I2C_FRAGMENATATION_DISABLED;
+extern phTmlNfc_i2cfragmentation_t fragmentation_enabled;
/* Local Function prototypes */
static NFCSTATUS phTmlNfc_StartThread(void);
static void phTmlNfc_CleanUp(void);
@@ -116,7 +117,7 @@
if (NFCSTATUS_SUCCESS != wInitStatus)
{
wInitStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_INVALID_DEVICE);
- gpphTmlNfc_Context->pDevHandle = (void *) NFCSTATUS_INVALID_DEVICE;
+ gpphTmlNfc_Context->pDevHandle = NULL;
}
else
{
@@ -346,6 +347,7 @@
NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
int32_t dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
uint8_t temp[260];
+ static uint8_t read_count = 0;
/* Transaction info buffer to be passed to Callback Thread */
static phTmlNfc_TransactInfo_t tTransactionInfo;
/* Structure containing Tml callback function and parameters to be invoked
@@ -375,7 +377,7 @@
dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
/* Read the data from the file onto the buffer */
- if (NFCSTATUS_INVALID_DEVICE != (uintptr_t)gpphTmlNfc_Context->pDevHandle)
+ if (((uintptr_t)gpphTmlNfc_Context->pDevHandle) > 0)
{
NXPLOG_TML_D("PN54X - Invoking I2C Read.....\n");
dwNoBytesWrRd = phTmlNfc_i2c_read(gpphTmlNfc_Context->pDevHandle, temp, 260);
@@ -383,17 +385,41 @@
if (-1 == dwNoBytesWrRd)
{
NXPLOG_TML_E("PN54X - Error in I2C Read.....\n");
+ if(read_count < MAX_READ_RETRY_COUNT)
+ {
+ read_count++;
+ }
+ else
+ {
+ /* Fill the Transaction info structure to be passed to Callback Function */
+ tTransactionInfo.wStatus = NFCSTATUS_READ_FAILED;
+ //tTransactionInfo.pBuff = gpphTmlNfc_Context->tReadInfo.pBuffer;
+ /* Actual number of bytes read is filled in the structure */
+ //tTransactionInfo.wLength = gpphTmlNfc_Context->tReadInfo.wLength;
+
+ /* Read operation Failed. Post a Message onto Callback Thread*/
+ /* Prepare the message to be posted on User thread */
+ tDeferredInfo.pCallback = &phTmlNfc_ReadDeferredCb;
+ tDeferredInfo.pParameter = &tTransactionInfo;
+ tMsg.eMsgType = PH_LIBNFC_DEFERREDCALL_MSG;
+ tMsg.pMsgData = &tDeferredInfo;
+ tMsg.Size = sizeof(tDeferredInfo);
+ NXPLOG_TML_D("PN54X - Posting read failure message.....\n");
+ phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId, &tMsg);
+ return;
+ }
sem_post(&gpphTmlNfc_Context->rxSemaphore);
}
else if(dwNoBytesWrRd > 260)
{
NXPLOG_TML_E("Numer of bytes read exceeds the limit 260.....\n");
+ read_count = 0;
sem_post(&gpphTmlNfc_Context->rxSemaphore);
}
else
{
memcpy(gpphTmlNfc_Context->tReadInfo.pBuffer, temp, dwNoBytesWrRd);
-
+ read_count = 0;
NXPLOG_TML_D("PN54X - I2C Read successful.....\n");
/* This has to be reset only after a successful read */
gpphTmlNfc_Context->tReadInfo.bEnable = 0;
@@ -491,7 +517,7 @@
NXPLOG_TML_D("PN54X - Write requested.....\n");
/* Set the variable to success initially */
wStatus = NFCSTATUS_SUCCESS;
- if (NFCSTATUS_INVALID_DEVICE != (uintptr_t)gpphTmlNfc_Context->pDevHandle)
+ if (((uintptr_t)gpphTmlNfc_Context->pDevHandle) > 0)
{
retry:
@@ -574,7 +600,7 @@
}
else
{
- NXPLOG_TML_D("PN54X - NFCSTATUS_INVALID_DEVICE != gpphTmlNfc_Context->pDevHandle");
+ NXPLOG_TML_D("PN54X - NFCSTATUS_INVALID_DEVICE == gpphTmlNfc_Context->pDevHandle");
}
/* If Data packet is sent, then NO retransmission */
@@ -921,29 +947,27 @@
switch (eControlCode)
{
case phTmlNfc_e_ResetDevice:
- {
- /*Reset PN54X*/
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 1);
- usleep(100 * 1000);
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 0);
- usleep(100 * 1000);
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 1);
- break;
- }
case phTmlNfc_e_EnableNormalMode:
{
+ /*Block reader thread until VEN Toggling is completed*/
/*Reset PN54X*/
+ 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);
break;
}
case phTmlNfc_e_EnableDownloadMode:
{
phTmlNfc_ConfigNciPktReTx(phTmlNfc_e_DisableRetrans, 0);
+ gpphTmlNfc_Context->tReadInfo.bEnable = 0;
(void)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)
@@ -977,6 +1001,9 @@
wStatus = phTmlNfc_i2c_set_p61_power_state(gpphTmlNfc_Context->pDevHandle, 3);
break;
}
+ case phTmlNfc_e_RelP61Access:
+ wStatus = phTmlNfc_i2c_set_p61_power_state(gpphTmlNfc_Context->pDevHandle, 4);
+ break;
#endif
default:
{
diff --git a/halimpl/pn54x/tml/phTmlNfc.h b/halimpl/pn54x/tml/phTmlNfc.h
index 64d4360..ce12db9 100644
--- a/halimpl/pn54x/tml/phTmlNfc.h
+++ b/halimpl/pn54x/tml/phTmlNfc.h
@@ -106,7 +106,8 @@
phTmlNfc_e_SetP61WiredMode, /* Set the current P61 mode of operation to Wired*/
phTmlNfc_e_SetP61IdleMode, /* Set the current P61 mode of operation to Idle*/
phTmlNfc_e_SetP61DisableMode, /* Set the ese vdd gpio to low*/
- phTmlNfc_e_SetP61EnableMode /* Set the ese vdd gpio to high*/
+ phTmlNfc_e_SetP61EnableMode, /* Set the ese vdd gpio to high*/
+ phTmlNfc_e_RelP61Access /*Release the P61 lock*/
#endif
} phTmlNfc_ControlCode_t ; /* Control code for IOCTL call */
@@ -211,6 +212,7 @@
NFCSTATUS phTmlNfc_WriteAbort(void);
NFCSTATUS phTmlNfc_ReadAbort(void);
NFCSTATUS phTmlNfc_IoCtl(phTmlNfc_ControlCode_t eControlCode);
+NFCSTATUS phTmlNfc_get_ese_access(void *pDevHandle, long timeout);
void phTmlNfc_DeferredCall(uintptr_t dwThreadId, phLibNfc_Message_t *ptWorkerMsg);
void phTmlNfc_ConfigNciPktReTx( phTmlNfc_ConfigRetrans_t eConfig, uint8_t bRetryCount);
void phTmlNfc_set_fragmentation_enabled(phTmlNfc_i2cfragmentation_t enable);
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.c b/halimpl/pn54x/tml/phTmlNfc_i2c.c
index 20c45b5..bc1e13b 100644
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.c
+++ b/halimpl/pn54x/tml/phTmlNfc_i2c.c
@@ -85,7 +85,7 @@
NXPLOG_TML_D("Opening port=%s\n", pConfig->pDevName);
/* open port */
- nHandle = open((char const *)pConfig->pDevName, O_RDWR);
+ nHandle = open((const char *)pConfig->pDevName, O_RDWR);
if (nHandle < 0)
{
NXPLOG_TML_E("_i2c_open() Failed: retval %x",nHandle);
@@ -455,6 +455,41 @@
wStatus = p61_current_state;
return wStatus;
}
+/*******************************************************************************
+**
+** Function phTmlNfc_get_ese_access
+**
+** Description
+**
+** Parameters pDevHandle - valid device handle
+** timeout - timeout to wait for ese access
+**
+** Returns success or failure
+**
+*******************************************************************************/
+NFCSTATUS phTmlNfc_get_ese_access(void *pDevHandle, long timeout)
+{
+ int ret = -1;
+ NFCSTATUS status = NFCSTATUS_SUCCESS;
+ NXPLOG_TML_D("phTmlNfc_get_ese_access(), enter timeout %ld", timeout);
+
+ if (NULL == pDevHandle)
+ {
+ return NFCSTATUS_FAILED;
+ }
+
+ ret = ioctl((intptr_t)pDevHandle, P544_GET_ESE_ACCESS, timeout);
+ if (ret < 0)
+ {
+ if (ret == -EBUSY)
+ status = NFCSTATUS_BUSY;
+ else
+ status = NFCSTATUS_FAILED;
+ }
+ NXPLOG_TML_D("phTmlNfc_get_ese_access(), exit ret %d, status %d", ret, status);
+ return status;
+}
+
#endif
/*******************************************************************************
**
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.h b/halimpl/pn54x/tml/phTmlNfc_i2c.h
index 22aba63..fb8cce8 100644
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.h
+++ b/halimpl/pn54x/tml/phTmlNfc_i2c.h
@@ -70,4 +70,8 @@
*/
#define P544_SET_NFC_SERVICE_PID _IOW(PN544_MAGIC, 0x05, long)
+/*
+ NFC and SPI will call the ioctl to get the i2c/spi bus access
+*/
+#define P544_GET_ESE_ACCESS _IOW(PN544_MAGIC, 0x06, long)
#endif
diff --git a/halimpl/pn54x/utils/phNxpConfig.cpp b/halimpl/pn54x/utils/phNxpConfig.cpp
index 79da1cd..a337bc4 100644
--- a/halimpl/pn54x/utils/phNxpConfig.cpp
+++ b/halimpl/pn54x/utils/phNxpConfig.cpp
@@ -58,7 +58,11 @@
#endif
#define config_name "libnfc-nxp.conf"
+#if (NXP_EXTNS == TRUE)
+#define extra_config_base "libnfc-"
+#else
#define extra_config_base "libnfc-nxp-"
+#endif
#define extra_config_ext ".conf"
#define IsStringValue 0x80000000
@@ -237,8 +241,19 @@
moveToList();
}
- while (!feof(fd) && fread(&c, 1, 1, fd) == 1)
+ for (;;)
{
+ if (feof(fd) || fread(&c, 1, 1, fd) != 1)
+ {
+ if (state == BEGIN_LINE)
+ break;
+
+ // got to the EOF but not in BEGIN_LINE state so the file
+ // probably does not end with a newline, so the parser has
+ // not processed current line, simulate a newline in the file
+ c = '\n';
+ }
+
switch (state & 0xff)
{
case BEGIN_LINE:
diff --git a/halimpl/pn54x/utils/phNxpConfig.h b/halimpl/pn54x/utils/phNxpConfig.h
index 994be49..dd0d48e 100644
--- a/halimpl/pn54x/utils/phNxpConfig.h
+++ b/halimpl/pn54x/utils/phNxpConfig.h
@@ -87,6 +87,7 @@
#define NAME_NXP_CORE_STANDBY "NXP_CORE_STANDBY"
#define NAME_NXP_NFC_PROFILE_EXTN "NXP_NFC_PROFILE_EXTN"
#define NAME_NXP_CHINA_TIANJIN_RF_ENABLED "NXP_CHINA_TIANJIN_RF_ENABLED"
+#define NAME_NXP_CHINA_BLK_NUM_CHK_ENABLE "NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE"
#define NAME_NXP_SWP_SWITCH_TIMEOUT "NXP_SWP_SWITCH_TIMEOUT"
#define NAME_NXP_SWP_FULL_PWR_ON "NXP_SWP_FULL_PWR_ON"
#define NAME_NXP_CORE_RF_FIELD "NXP_CORE_RF_FIELD"
diff --git a/src/adaptation/NfcAdaptation.cpp b/src/adaptation/NfcAdaptation.cpp
index 1260fca..26078ef 100644
--- a/src/adaptation/NfcAdaptation.cpp
+++ b/src/adaptation/NfcAdaptation.cpp
@@ -41,6 +41,8 @@
#include "gki.h"
#include "nfa_api.h"
#include "nfc_int.h"
+ #include "nfc_target.h"
+ #include "vendor_cfg.h"
}
#include "config.h"
#include "android_logmsg.h"
@@ -74,13 +76,16 @@
char nci_hal_module[64];
static UINT8 nfa_dm_cfg[sizeof ( tNFA_DM_CFG ) ];
+static UINT8 nfa_proprietary_cfg[sizeof ( tNFA_PROPRIETARY_CFG )];
extern tNFA_DM_CFG *p_nfa_dm_cfg;
+extern tNFA_PROPRIETARY_CFG *p_nfa_proprietary_cfg;
extern UINT8 nfa_ee_max_ee_cfg;
extern const UINT8 nfca_version_string [];
extern const UINT8 nfa_version_string [];
static UINT8 deviceHostWhiteList [NFA_HCI_MAX_HOST_IN_NETWORK];
static tNFA_HCI_CFG jni_nfa_hci_cfg;
extern tNFA_HCI_CFG *p_nfa_hci_cfg;
+extern BOOLEAN nfa_poll_bail_out_mode;
/*******************************************************************************
**
@@ -161,14 +166,23 @@
initializeProtocolLogLevel ();
if ( GetStrValue ( NAME_NFA_DM_CFG, (char*)nfa_dm_cfg, sizeof ( nfa_dm_cfg ) ) )
- p_nfa_dm_cfg = ( tNFA_DM_CFG * ) &nfa_dm_cfg[0];
+ p_nfa_dm_cfg = ( tNFA_DM_CFG * ) ((void*)&nfa_dm_cfg[0]);
if ( GetNumValue ( NAME_NFA_MAX_EE_SUPPORTED, &num, sizeof ( num ) ) )
{
nfa_ee_max_ee_cfg = num;
ALOGD("%s: Overriding NFA_EE_MAX_EE_SUPPORTED 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;
+ ALOGD("%s: Overriding NFA_POLL_BAIL_OUT_MODE to use %d", func, nfa_poll_bail_out_mode);
+ }
+ if ( GetStrValue ( NAME_NFA_PROPRIETARY_CFG, (char*)nfa_proprietary_cfg, sizeof ( tNFA_PROPRIETARY_CFG ) ) )
+ {
+ p_nfa_proprietary_cfg = (tNFA_PROPRIETARY_CFG*)(void*)( &nfa_proprietary_cfg[0]);
+ }
//configure device host whitelist of HCI host ID's; see specification ETSI TS 102 622 V11.1.10
//(2012-10), section 6.1.3.1
num = GetStrValue ( NAME_DEVICE_HOST_WHITE_LIST, (char*) deviceHostWhiteList, sizeof ( deviceHostWhiteList ) );
@@ -290,6 +304,7 @@
UINT32 NfcAdaptation::NFCA_TASK (UINT32 arg)
{
const char* func = "NfcAdaptation::NFCA_TASK";
+ (void)(arg);
ALOGD ("%s: enter", func);
GKI_run (0);
ALOGD ("%s: exit", func);
@@ -308,6 +323,7 @@
UINT32 NfcAdaptation::Thread (UINT32 arg)
{
const char* func = "NfcAdaptation::Thread";
+ (void)(arg);
ALOGD ("%s: enter", func);
{
@@ -671,7 +687,9 @@
static UINT8 cmd_init_nci[] = {0x20,0x01,0x00};
static UINT8 cmd_reset_nci_size = sizeof(cmd_reset_nci) / sizeof(UINT8);
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;
#endif
HalInitialize ();
@@ -693,9 +711,23 @@
HalWrite(cmd_init_nci_size , cmd_init_nci);
mHalCoreInitCompletedEvent.wait();
mHalInitCompletedEvent.lock ();
- ALOGD ("%s: try init HAL", func);
- HalCoreInitialized (&p_core_init_rsp_params);
- mHalInitCompletedEvent.wait ();
+
+ mHalEntryFuncs.ioctl(HAL_NFC_IOCTL_CHECK_FLASH_REQ, &fw_update_inf);
+ NFC_TRACE_DEBUG1 ("fw_update required -> %d", fw_update_inf.fw_update_reqd);
+ if(fw_update_inf.fw_update_reqd == TRUE)
+ {
+ mHalEntryFuncs.ioctl(HAL_NFC_IOCTL_FW_DWNLD, &fw_dwnld_status);
+ if (fw_dwnld_status != NFC_STATUS_OK)
+ {
+ ALOGD ("%s: FW Download failed", func);
+ }
+ else
+ {
+ ALOGD ("%s: try init HAL", func);
+ HalCoreInitialized (&p_core_init_rsp_params);
+ mHalInitCompletedEvent.wait ();
+ }
+ }
#endif
mHalCloseCompletedEvent.lock ();
@@ -719,6 +751,7 @@
void NfcAdaptation::HalDownloadFirmwareCallback (nfc_event_t event, nfc_status_t event_status)
{
const char* func = "NfcAdaptation::HalDownloadFirmwareCallback";
+ (void)(event_status);
ALOGD ("%s: event=0x%X", func, event);
switch (event)
{
diff --git a/src/adaptation/config.cpp b/src/adaptation/config.cpp
index 7e96e82..7b9acab 100644
--- a/src/adaptation/config.cpp
+++ b/src/adaptation/config.cpp
@@ -46,7 +46,11 @@
const char transport_config_path[] = "/etc/";
#define config_name "libnfc-brcm.conf"
+#if(NXP_EXTNS == TRUE)
+#define extra_config_base "libnfc-"
+#else
#define extra_config_base "libnfc-brcm-"
+#endif
#define extra_config_ext ".conf"
#define IsStringValue 0x80000000
@@ -72,8 +76,7 @@
public:
virtual ~CNfcConfig();
static CNfcConfig& GetInstance();
- friend void readOptionalConfig(const char* optional);
-
+ friend void readOptionalConfigExt(const char* optional);
bool getValue(const char* name, char* pValue, size_t& len) const;
bool getValue(const char* name, unsigned long& rValue) const;
bool getValue(const char* name, unsigned short & rValue) const;
@@ -416,6 +419,10 @@
strPath.assign(transport_config_path);
strPath += config_name;
theInstance.readConfig(strPath.c_str(), true);
+#if(NXP_EXTNS == TRUE)
+ readOptionalConfigExt("nxp");
+#endif
+
}
return theInstance;
@@ -758,7 +765,7 @@
** Returns: none
**
*******************************************************************************/
-void readOptionalConfig(const char* extra)
+void readOptionalConfigExt(const char* extra)
{
string strPath;
strPath.assign(transport_config_path);
diff --git a/src/adaptation/libmain.c b/src/adaptation/libmain.c
index 93b4942..3ab046e 100644
--- a/src/adaptation/libmain.c
+++ b/src/adaptation/libmain.c
@@ -21,6 +21,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
+#include <nfa_nv_ci.h>
#include "buildcfg.h"
#include "nfa_nv_co.h"
#include "config.h"
diff --git a/src/gki/ulinux/gki_ulinux.c b/src/gki/ulinux/gki_ulinux.c
index bea706a..e9562cb 100755
--- a/src/gki/ulinux/gki_ulinux.c
+++ b/src/gki/ulinux/gki_ulinux.c
@@ -234,6 +234,8 @@
int policy, ret = 0;
pthread_condattr_t attr;
pthread_attr_t attr1;
+ (void)stack;
+ (void)stacksize;
pthread_condattr_init(&attr);
pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
@@ -360,8 +362,8 @@
#if ( FALSE == GKI_PTHREAD_JOINABLE )
i = 0;
- while ((gki_cb.com.OSWaitEvt[task_id - 1] != 0) && (++i < 10))
- usleep(100 * 1000);
+ while ((gki_cb.com.OSWaitEvt[task_id - 1] != 0) && (++i < 5))
+ usleep(2 * 1000);
#else
/* wait for proper Arnold Schwarzenegger task state */
result = pthread_join( gki_cb.os.thread_id[task_id-1], NULL );
@@ -509,6 +511,7 @@
int err = 0;
#if(NXP_EXTNS == TRUE)
UINT8 rtask = 0;
+ (void)p_task_id;
#endif
volatile int * p_run_cond = &gki_cb.os.no_timer_suspend;
#if (NXP_EXTNS == TRUE)
@@ -1186,6 +1189,7 @@
*******************************************************************************/
UINT8 GKI_suspend_task (UINT8 task_id)
{
+ (void)task_id;
GKI_TRACE_1("GKI_suspend_task %d - NOT implemented", task_id);
@@ -1212,6 +1216,8 @@
*******************************************************************************/
UINT8 GKI_resume_task (UINT8 task_id)
{
+ (void)task_id;
+
GKI_TRACE_1("GKI_resume_task %d - NOT implemented", task_id);
diff --git a/src/hal/include/nci_defs.h b/src/hal/include/nci_defs.h
index e8c09a0..34baed2 100755
--- a/src/hal/include/nci_defs.h
+++ b/src/hal/include/nci_defs.h
@@ -373,7 +373,7 @@
#define NCI_INTERFACE_FIRST_VS 0x80
#if (NXP_EXTNS == TRUE)
#define NCI_INTERFACE_MIFARE 0x80
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
#define NCI_INTERFACE_UICC_DIRECT 0x82
#define NCI_INTERFACE_ESE_DIRECT 0x83
#else
@@ -412,53 +412,6 @@
* Proprietary Protocols
**********************************************/
#if (NXP_EXTNS == TRUE)
-#ifndef NCI_PROTOCOL_ISO7816
-#define NCI_PROTOCOL_ISO7816 0xA0
-#endif
-#ifndef NCI_PROTOCOL_MIFARE
-#define NCI_PROTOCOL_MIFARE 0x80
-#endif
-#ifndef NCI_PROTOCOL_18092_ACTIVE
-#define NCI_PROTOCOL_18092_ACTIVE 0x05
-#endif
-#else
-#ifndef NCI_PROTOCOL_MIFARE
-#define NCI_PROTOCOL_MIFARE 0xFF
-#endif
-#ifndef NCI_PROTOCOL_18092_ACTIVE
-#define NCI_PROTOCOL_18092_ACTIVE 0x80
-#endif
-#endif
-
-#ifndef NCI_PROTOCOL_B_PRIME
-#define NCI_PROTOCOL_B_PRIME 0x81
-#endif
-#ifndef NCI_PROTOCOL_DUAL
-#define NCI_PROTOCOL_DUAL 0x82
-#endif
-#if (NXP_EXTNS == TRUE)
-#ifndef NCI_PROTOCOL_15693
-#define NCI_PROTOCOL_15693 0x06
-#endif
-#else
-#ifndef NCI_PROTOCOL_15693
-#define NCI_PROTOCOL_15693 0x83
-#endif
-#endif
-
-
-#ifndef NCI_PROTOCOL_KOVIO
-#if (NXP_EXTNS == TRUE)
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
-#define NCI_PROTOCOL_KOVIO 0x81
-#else
-#define NCI_PROTOCOL_KOVIO 0x8A
-#endif
-#else
-#define NCI_PROTOCOL_KOVIO 0x8A
-#endif
-#endif
-#if(NXP_EXTNS == TRUE)
#ifndef NCI_PROTOCOL_T3BT
#define NCI_PROTOCOL_T3BT 0x8b
#endif
@@ -471,22 +424,11 @@
#define NCI_DISCOVERY_TYPE_POLL_F 0x02
#define NCI_DISCOVERY_TYPE_POLL_A_ACTIVE 0x03
#define NCI_DISCOVERY_TYPE_POLL_F_ACTIVE 0x05
-#define NCI_DISCOVERY_TYPE_POLL_B_PRIME 0x74
-#if (NXP_EXTNS == TRUE)
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
-#define NCI_DISCOVERY_TYPE_POLL_KOVIO 0x70
-#else
-#define NCI_DISCOVERY_TYPE_POLL_KOVIO 0x77
-#endif
-#else
-#define NCI_DISCOVERY_TYPE_POLL_KOVIO 0x77
-#endif
#define NCI_DISCOVERY_TYPE_LISTEN_A 0x80
#define NCI_DISCOVERY_TYPE_LISTEN_B 0x81
#define NCI_DISCOVERY_TYPE_LISTEN_F 0x82
#define NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE 0x83
#define NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE 0x85
-#define NCI_DISCOVERY_TYPE_LISTEN_B_PRIME 0xF4
#define NCI_DISCOVERY_TYPE_POLL_ISO15693 0x06
#define NCI_DISCOVERY_TYPE_LISTEN_ISO15693 0x86
#define NCI_DISCOVERY_TYPE_MAX NCI_DISCOVERY_TYPE_LISTEN_ISO15693
@@ -543,6 +485,7 @@
#define NCI_PARAM_ID_PB_BAILOUT 0x11
#define NCI_PARAM_ID_PB_ATTRIB_PARAM1 0x12
#define NCI_PARAM_ID_PF_BIT_RATE 0x18
+#define NCI_PARAM_ID_PF_RC 0x19
#define NCI_PARAM_ID_PB_H_INFO 0x20
#define NCI_PARAM_ID_PI_BIT_RATE 0x21
@@ -618,6 +561,8 @@
#define NCI_PARAM_LEN_PA_FSDI 1
+#define NCI_PARAM_LEN_PF_RC 1
+
#define NCI_PARAM_LEN_LA_BIT_FRAME_SDD 1
#define NCI_PARAM_LEN_LA_PLATFORM_CONFIG 1
#define NCI_PARAM_LEN_LA_SEL_INFO 1
@@ -632,7 +577,7 @@
#define NCI_PARAM_LEN_LF_T3T_PMM 8
#define NCI_PARAM_LEN_LF_T3T_ID 10
#define NCI_PARAM_LEN_LF_CON_ADV_FEAT 1 //FelicaOnHost
-
+#define NCI_PARAM_LEN_LF_T3T_ID 10
#define NCI_PARAM_LEN_FWI 1
#define NCI_PARAM_LEN_WT 1
diff --git a/src/hal/int/nfc_brcm_defs.h b/src/hal/int/nfc_brcm_defs.h
index 6e8670a..ff242f5 100755
--- a/src/hal/int/nfc_brcm_defs.h
+++ b/src/hal/int/nfc_brcm_defs.h
@@ -181,6 +181,7 @@
/**********************************************
* NCI Interface Types
**********************************************/
+#define NCI_INTERFACE_VS_MIFARE 0x80
#define NCI_INTERFACE_VS_CALYPSO_CE 0x81
#define NCI_INTERFACE_VS_T2T_CE 0x82 /* for Card Emulation side */
#define NCI_INTERFACE_VS_15693 0x83 /* for both Reader/Writer and Card Emulation side */
diff --git a/src/include/bt_types.h b/src/include/bt_types.h
index ec12331..78b3512 100644
--- a/src/include/bt_types.h
+++ b/src/include/bt_types.h
@@ -263,7 +263,7 @@
#define UINT24_TO_BE_STREAM(p, u24) {*(p)++ = (UINT8)((u24) >> 16); *(p)++ = (UINT8)((u24) >> 8); *(p)++ = (UINT8)(u24);}
#define UINT16_TO_BE_STREAM(p, u16) {*(p)++ = (UINT8)((u16) >> 8); *(p)++ = (UINT8)(u16);}
#define UINT8_TO_BE_STREAM(p, u8) {*(p)++ = (UINT8)(u8);}
-#define ARRAY_TO_BE_STREAM(p, a, len) {register int ijk; for (ijk = 0; ijk < len; ijk++) *(p)++ = (UINT8) a[ijk];}
+#define ARRAY_TO_BE_STREAM(p, a, len) {register unsigned int ijk; for (ijk = 0; ijk < len; ijk++) *(p)++ = (UINT8) a[ijk];}
#define BE_STREAM_TO_UINT8(u8, p) {u8 = (UINT8)(*(p)); (p) += 1;}
#define BE_STREAM_TO_UINT16(u16, p) {u16 = (UINT16)(((UINT16)(*(p)) << 8) + (UINT16)(*((p) + 1))); (p) += 2;}
diff --git a/src/include/config.h b/src/include/config.h
index 14be80c..a2f6dfe 100644
--- a/src/include/config.h
+++ b/src/include/config.h
@@ -86,7 +86,6 @@
#define NAME_NFA_DTA_START_UP_VSC_CFG "NFA_DTA_START_UP_VSC_CFG"
#define NAME_UICC_LISTEN_TECH_MASK "UICC_LISTEN_TECH_MASK"
#define NAME_UICC_LISTEN_TECH_EX_MASK "UICC_LISTEN_TECH_EXCLUDE_MASK"
-#define NAME_HOST_LISTEN_ENABLE "HOST_LISTEN_ENABLE"
#if (NXP_EXTNS == TRUE)
#define NAME_APPL_DTA_MODE "APPL_DTA_MODE"
#define NAME_DEFAULT_AID_ROUTE "DEFAULT_AID_ROUTE"
@@ -98,8 +97,9 @@
#define NAME_CHECK_DEFAULT_PROTO_SE_ID "NXP_CHECK_DEFAULT_PROTO_SE_ID"
#define NAME_NFA_DM_DISC_NTF_TIMEOUT "NFA_DM_DISC_NTF_TIMEOUT"
#define NAME_NXP_FWD_FUNCTIONALITY_ENABLE "NXP_FWD_FUNCTIONALITY_ENABLE"
+#define NAME_HOST_LISTEN_TECH_MASK "HOST_LISTEN_TECH_MASK"
#endif
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
#define NAME_NXP_PRFD_TECH_SE "NXP_PRFD_TECH_SE"
#endif
#define NAME_SNOOZE_MODE_CFG "SNOOZE_MODE_CFG"
@@ -125,12 +125,16 @@
#define NAME_POWER_OFF_MODE "POWER_OFF_MODE"
#define NAME_GLOBAL_RESET "DO_GLOBAL_RESET"
#define NAME_NCI_HAL_MODULE "NCI_HAL_MODULE"
+#define NAME_NFA_POLL_BAIL_OUT_MODE "NFA_POLL_BAIL_OUT_MODE"
+#define NAME_NFA_PROPRIETARY_CFG "NFA_PROPRIETARY_CFG"
+#if(NXP_EXTNS == TRUE)
#define NAME_NXP_NFCC_STANDBY_TIMEOUT "NXP_NFCC_STANDBY_TIMEOUT"
#define NAME_NXP_CP_TIMEOUT "NXP_CP_TIMEOUT"
-#if(NFC_NXP_CHIP_TYPE == PN547C2)
#define NAME_NXP_CORE_SCRN_OFF_AUTONOMOUS_ENABLE "NXP_CORE_SCRN_OFF_AUTONOMOUS_ENABLE"
+#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
+#define NAME_NXP_DUAL_UICC_ENABLE "NXP_DUAL_UICC_ENABLE"
#endif
-
+#endif
#define LPTD_PARAM_LEN (40)
// default configuration
@@ -146,7 +150,7 @@
extern struct tUART_CONFIG uartConfig;
#define MAX_CHIPID_LEN (16)
-void readOptionalConfig(const char* option);
+void readOptionalConfigExt(const char* option);
/* Snooze mode configuration structure */
typedef struct
diff --git a/src/include/nfc_target.h b/src/include/nfc_target.h
index becd3d7..20ef9f5 100644
--- a/src/include/nfc_target.h
+++ b/src/include/nfc_target.h
@@ -707,7 +707,8 @@
#ifndef NFA_EE_MAX_AID_ENTRIES
#if(NXP_EXTNS == TRUE)
#define NFA_EE_MIN_AID_SIZE (5)
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#define NFA_EE_MIN_AID_ENTRY_SIZE (NFA_EE_MIN_AID_SIZE + 4)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
#define NFA_EE_MAX_AID_ENTRIES (50)
#else
#define NFA_EE_MAX_AID_ENTRIES (20)
diff --git a/src/include/vendor_cfg.h b/src/include/vendor_cfg.h
new file mode 100644
index 0000000..71d2a46
--- /dev/null
+++ b/src/include/vendor_cfg.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/******************************************************************************
+ *
+ * This file contains compile-time configurable constants for vendor specific proprietary protocols
+ *
+ ******************************************************************************/
+#ifndef __NFC_VENDOR_CFG_H__
+#define __NFC_VENDOR_CFG_H__
+
+/* compile-time configuration structure for proprietary protocol and discovery value */
+typedef struct
+{
+ UINT8 pro_protocol_18092_active;
+ UINT8 pro_protocol_b_prime;
+ UINT8 pro_protocol_dual;
+ UINT8 pro_protocol_15693;
+ UINT8 pro_protocol_kovio;
+ UINT8 pro_protocol_mfc;
+
+ UINT8 pro_discovery_kovio_poll;
+ UINT8 pro_discovery_b_prime_poll;
+ UINT8 pro_discovery_b_prime_listen;
+} tNFA_PROPRIETARY_CFG;
+
+
+extern tNFA_PROPRIETARY_CFG *p_nfa_proprietary_cfg;
+
+ /**********************************************
+ * Proprietary Protocols
+ **********************************************/
+#ifndef NCI_PROTOCOL_18092_ACTIVE
+#define NCI_PROTOCOL_18092_ACTIVE (p_nfa_proprietary_cfg->pro_protocol_18092_active)
+#endif
+#ifndef NCI_PROTOCOL_B_PRIME
+#define NCI_PROTOCOL_B_PRIME (p_nfa_proprietary_cfg->pro_protocol_b_prime)
+#endif
+#ifndef NCI_PROTOCOL_DUAL
+#define NCI_PROTOCOL_DUAL (p_nfa_proprietary_cfg->pro_protocol_dual)
+#endif
+#ifndef NCI_PROTOCOL_15693
+#define NCI_PROTOCOL_15693 (p_nfa_proprietary_cfg->pro_protocol_15693)
+#endif
+#ifndef NCI_PROTOCOL_KOVIO
+#define NCI_PROTOCOL_KOVIO (p_nfa_proprietary_cfg->pro_protocol_kovio)
+#endif
+#ifndef NCI_PROTOCOL_MIFARE
+#define NCI_PROTOCOL_MIFARE (p_nfa_proprietary_cfg->pro_protocol_mfc)
+#endif
+
+ /**********************************************
+ * Proprietary Discovery technology and mode
+ **********************************************/
+#ifndef NCI_DISCOVERY_TYPE_POLL_KOVIO
+#define NCI_DISCOVERY_TYPE_POLL_KOVIO (p_nfa_proprietary_cfg->pro_discovery_kovio_poll)
+#endif
+
+#ifndef NCI_DISCOVERY_TYPE_POLL_B_PRIME
+#define NCI_DISCOVERY_TYPE_POLL_B_PRIME (p_nfa_proprietary_cfg->pro_discovery_b_prime_poll)
+#endif
+
+#ifndef NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
+#define NCI_DISCOVERY_TYPE_LISTEN_B_PRIME (p_nfa_proprietary_cfg->pro_discovery_b_prime_listen)
+#endif
+
+#endif /* __NFC_VENDOR_CFG_H__ */
diff --git a/src/nfa/ce/nfa_ce_act.c b/src/nfa/ce/nfa_ce_act.c
index e05d55c..cb04f3f 100755
--- a/src/nfa/ce/nfa_ce_act.c
+++ b/src/nfa/ce/nfa_ce_act.c
@@ -70,6 +70,20 @@
tNFA_CONN_EVT_DATA conn_evt;
NFA_TRACE_DEBUG1 ("nfa_ce_handle_t3t_evt: event 0x%x", event);
+#if(NXP_EXTNS == TRUE && NXP_NFCC_HCE_F == TRUE)
+ UINT8 listen_info_idx;
+ /*Fix: for the felica on host for nfcFcallback*/
+ for (listen_info_idx=0; listen_info_idx<NFA_CE_LISTEN_INFO_IDX_INVALID; listen_info_idx++)
+ {
+ if ((p_cb->listen_info[listen_info_idx].flags & NFA_CE_LISTEN_INFO_IN_USE) &&
+ (p_cb->listen_info[listen_info_idx].flags & NFA_CE_LISTEN_INFO_FELICA))
+ {
+ p_cb->idx_cur_active = listen_info_idx;
+ p_cb->p_active_conn_cback = p_cb->listen_info[p_cb->idx_cur_active].p_conn_cback;
+ break;
+ }
+ }
+#endif
switch (event)
{
@@ -281,7 +295,7 @@
#endif
ce_msg.activate_ntf.hdr.event = NFA_CE_ACTIVATE_NTF_EVT;
ce_msg.activate_ntf.p_activation_params = &p_data->activate;
- nfa_ce_hdl_event ((BT_HDR *) &ce_msg);
+ nfa_ce_hdl_event ((void *) &ce_msg);
break;
case NFA_DM_RF_DISC_DEACTIVATED_EVT:
@@ -294,7 +308,7 @@
/*clear the p61 ce*/
nfa_ee_ce_p61_active = 0;
#endif
- nfa_ce_hdl_event ((BT_HDR *) &ce_msg);
+ nfa_ce_hdl_event ((void *) &ce_msg);
}
break;
@@ -321,7 +335,11 @@
UINT8 tlv_size;
UINT16 t3t_flags2_mask = 0xFFFF; /* Mask of which T3T_IDs are disabled */
UINT8 t3t_idx = 0;
+
+#if(NXP_EXTNS == TRUE && NXP_NFCC_HCE_F == TRUE)
UINT8 adv_Feat = 1;
+#endif
+
/* Point to start of tlv buffer */
p_params = tlv;
@@ -346,17 +364,19 @@
/* For NCI draft 22+, the polarity of NFC_PMID_LF_T3T_FLAGS2 is flipped */
t3t_flags2_mask = ~t3t_flags2_mask;
+#if(NFC_NXP_CHIP_TYPE != PN547C2)
+ NFA_TRACE_DEBUG0 (" LF_T3T_FLAGS swap for NCI specification compliance");
+ t3t_flags2_mask = ((t3t_flags2_mask >> 8) | (t3t_flags2_mask << 8));
+#endif
+
UINT8_TO_STREAM (p_params, NFC_PMID_LF_T3T_FLAGS2); /* type */
UINT8_TO_STREAM (p_params, NCI_PARAM_LEN_LF_T3T_FLAGS2); /* length */
-#if (NXP_EXTNS == TRUE)
-
-
+#if ((NXP_EXTNS == TRUE) && (NXP_NFCC_HCE_F == TRUE))
//FelicaOnHost
UINT16_TO_BE_STREAM (p_params, t3t_flags2_mask);
UINT8_TO_STREAM (p_params, NCI_PARAM_ID_LF_CON_ADV_FEAT); /* type */
UINT8_TO_STREAM (p_params, NCI_PARAM_LEN_LF_CON_ADV_FEAT); /* length */
UINT8_TO_STREAM (p_params, adv_Feat); /* Mask of IDs to disable listening */
-
#else
UINT16_TO_STREAM (p_params, t3t_flags2_mask); /* Mask of IDs to disable listening */
#endif
diff --git a/src/nfa/dm/nfa_dm_act.c b/src/nfa/dm/nfa_dm_act.c
index e29f2b2..a9550f8 100755
--- a/src/nfa/dm/nfa_dm_act.c
+++ b/src/nfa/dm/nfa_dm_act.c
@@ -129,7 +129,7 @@
power_mode_change.status = NFA_STATUS_OK;
power_mode_change.power_mode = nfa_dm_cb.nfcc_pwr_mode;
- (*nfa_dm_cb.p_dm_cback) (NFA_DM_PWR_MODE_CHANGE_EVT, (tNFA_DM_CBACK_DATA*) &power_mode_change);
+ (*nfa_dm_cb.p_dm_cback) (NFA_DM_PWR_MODE_CHANGE_EVT, (void*) &power_mode_change);
}
/*******************************************************************************
**
@@ -166,7 +166,7 @@
nfa_dm_cb.params.lf_t3t_id[xx][0] = 0xFF;
nfa_dm_cb.params.lf_t3t_id[xx][1] = 0xFF;
nfa_dm_cb.params.lf_t3t_id[xx][2] = 0x02;
- nfa_dm_cb.params.lf_t3t_id[xx][2] = 0xFE;
+ nfa_dm_cb.params.lf_t3t_id[xx][3] = 0xFE;
}
/* LF_T3T_PMM */
@@ -452,9 +452,21 @@
break;
case NFC_NFCC_TIMEOUT_REVT:
-#if(NFC_NXP_ESE == TRUE && NFC_NXP_CHIP_TYPE == PN548C2)
- conn_evt.status = p_data->status;
- nfa_dm_conn_cback_event_notify (NFA_RECOVERY_EVT, &conn_evt);
+#if(NXP_EXTNS == TRUE)
+ if(p_data->status == NFC_STATUS_FAILED)
+ {
+ dm_cback_data.status = p_data->status;
+ (*nfa_dm_cb.p_dm_cback) (NFA_DM_NFCC_TIMEOUT_EVT, &dm_cback_data);
+ }
+ else
+ {
+#endif
+#if (NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+ conn_evt.status = p_data->status;
+ nfa_dm_conn_cback_event_notify (NFA_RECOVERY_EVT, &conn_evt);
+#endif
+#if(NXP_EXTNS == TRUE)
+ }
#endif
break;
@@ -555,7 +567,7 @@
else
{
nfa_dm_cb.disc_cb.disc_flags |= NFA_DM_DISC_FLAGS_DISABLING;
- nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD, (tNFA_DM_RF_DISC_DATA *) &deactivate_type);
+ nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD, (void *) &deactivate_type);
if ((nfa_dm_cb.disc_cb.disc_flags & (NFA_DM_DISC_FLAGS_W4_RSP|NFA_DM_DISC_FLAGS_W4_NTF)) == 0)
{
/* not waiting to deactivate, clear the flag now */
@@ -771,6 +783,7 @@
*******************************************************************************/
BOOLEAN nfa_dm_act_release_excl_rf_ctrl (tNFA_DM_MSG *p_data)
{
+ (void)p_data;
NFA_TRACE_DEBUG0 ("nfa_dm_act_release_excl_rf_ctrl ()");
/* nfa_dm_rel_excl_rf_control_and_notify() is called when discovery state goes IDLE */
@@ -1141,6 +1154,7 @@
BOOLEAN nfa_dm_act_disable_polling (tNFA_DM_MSG *p_data)
{
tNFA_CONN_EVT_DATA evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0 ("nfa_dm_act_disable_polling ()");
@@ -1182,6 +1196,7 @@
BOOLEAN nfa_dm_act_enable_listening (tNFA_DM_MSG *p_data)
{
tNFA_CONN_EVT_DATA evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0 ("nfa_dm_act_enable_listening ()");
@@ -1204,6 +1219,7 @@
BOOLEAN nfa_dm_act_disable_listening (tNFA_DM_MSG *p_data)
{
tNFA_CONN_EVT_DATA evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0 ("nfa_dm_act_disable_listening ()");
@@ -1226,6 +1242,7 @@
BOOLEAN nfa_dm_act_pause_p2p (tNFA_DM_MSG *p_data)
{
tNFA_CONN_EVT_DATA evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0 ("nfa_dm_act_pause_p2p ()");
@@ -1248,6 +1265,7 @@
BOOLEAN nfa_dm_act_resume_p2p (tNFA_DM_MSG *p_data)
{
tNFA_CONN_EVT_DATA evt_data;
+ (void)(p_data);
NFA_TRACE_DEBUG0 ("nfa_dm_act_resume_p2p ()");
@@ -1348,6 +1366,7 @@
BOOLEAN nfa_dm_act_start_rf_discovery (tNFA_DM_MSG *p_data)
{
tNFA_CONN_EVT_DATA evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0 ("nfa_dm_act_start_rf_discovery ()");
@@ -1382,9 +1401,14 @@
BOOLEAN nfa_dm_act_stop_rf_discovery (tNFA_DM_MSG *p_data)
{
tNFA_CONN_EVT_DATA evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0 ("nfa_dm_act_stop_rf_discovery ()");
+#if(NXP_EXTNS == TRUE)
+ /* Reset P2P prio logic if deactivate is called from app layer */
+ nfa_dm_p2p_prio_logic_disable();
+#endif
if (!(nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_ENABLED) ||
(nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_IDLE) )
{
@@ -1430,7 +1454,7 @@
nfa_dm_cb.disc_cb.disc_duration = p_data->disc_duration.rf_disc_dur_ms;
return (TRUE);
}
-#if(NXP_EXTNS == TRUE)
+
/*******************************************************************************
**
** Function nfa_dm_act_get_rf_disc_duration
@@ -1444,7 +1468,6 @@
{
return (nfa_dm_cb.disc_cb.disc_duration);
}
-#endif
/*******************************************************************************
**
** Function nfa_dm_act_select
@@ -1500,9 +1523,10 @@
BOOLEAN nfa_dm_act_disable_timeout (tNFA_DM_MSG *p_data)
{
tNFA_DM_API_DISABLE disable;
+ (void)p_data;
disable.graceful = FALSE;
- nfa_dm_disable ((tNFA_DM_MSG *) &disable);
+ nfa_dm_disable ((void *) &disable);
return (TRUE);
}
@@ -1561,6 +1585,7 @@
{
BT_HDR *p_msg;
tNFA_CONN_EVT_DATA evt_data;
+ (void)conn_id;
NFA_TRACE_DEBUG1 ("nfa_dm_act_data_cback (): event = 0x%X", event);
@@ -1760,10 +1785,11 @@
{
/* activate LLCP */
nfa_p2p_activate_llcp (p_data);
-#if(NXP_EXTNS == TRUE)
- GKI_freebuf (nfa_dm_cb.p_activate_ntf);
- nfa_dm_cb.p_activate_ntf = NULL;
-#endif
+ if (nfa_dm_cb.p_activate_ntf)
+ {
+ GKI_freebuf (nfa_dm_cb.p_activate_ntf);
+ nfa_dm_cb.p_activate_ntf = NULL;
+ }
}
else
{
@@ -1780,8 +1806,8 @@
||(nfa_dm_cb.disc_cb.activated_protocol == NFC_PROTOCOL_ISO_DEP)
||(nfa_dm_cb.disc_cb.activated_protocol == NFC_PROTOCOL_15693)
||(nfa_dm_cb.disc_cb.activated_protocol == NFC_PROTOCOL_KOVIO)
-#if(NXP_EXTNS == TRUE)
||(nfa_dm_cb.disc_cb.activated_protocol == NFC_PROTOCOL_MIFARE)
+#if(NXP_EXTNS == TRUE)
||(nfa_dm_cb.disc_cb.activated_protocol == NFC_PROTOCOL_T3BT)
#endif
)
@@ -1907,7 +1933,12 @@
return;
}
- if (status == NFA_STATUS_OK)
+ if (status == NFA_STATUS_OK
+#if(NXP_EXTNS == TRUE)
+ && (nfa_dm_cb.disc_cb.disc_state != NFA_DM_RFST_IDLE &&
+ nfa_dm_cb.disc_cb.disc_state != NFA_DM_RFST_DISCOVERY)
+#endif
+ )
{
/* notify NFC link activation */
memcpy ( &(evt_data.activated.activate_ntf),
@@ -1927,25 +1958,25 @@
/* get length of NFCID and location */
if (p_tech_params->mode == NFC_DISCOVERY_TYPE_POLL_A)
{
-#if(NXP_EXTNS == TRUE)
if((p_tech_params->param.pa.nfcid1_len == 0) && (p_params != NULL))
{
nfcid_len = sizeof(p_params->t1t.uid);
p_nfcid = p_params->t1t.uid;
evt_data.activated.activate_ntf.rf_tech_param.param.pa.nfcid1_len = nfcid_len;
+#if(NXP_EXTNS == TRUE)
if(nfcid_len > 0 && p_nfcid != NULL)
{
+#endif
memcpy (evt_data.activated.activate_ntf.rf_tech_param.param.pa.nfcid1,p_nfcid,nfcid_len);
+#if(NXP_EXTNS == TRUE)
}
+#endif
}
else
{
-#endif
nfcid_len = p_tech_params->param.pa.nfcid1_len;
p_nfcid = p_tech_params->param.pa.nfcid1;
-#if(NXP_EXTNS == TRUE)
}
-#endif
}
else if (p_tech_params->mode == NFC_DISCOVERY_TYPE_POLL_B)
{
diff --git a/src/nfa/dm/nfa_dm_api.c b/src/nfa/dm/nfa_dm_api.c
index 473cb74..bf61168 100755
--- a/src/nfa/dm/nfa_dm_api.c
+++ b/src/nfa/dm/nfa_dm_api.c
@@ -1331,6 +1331,8 @@
*******************************************************************************/
void NFA_SetReaderMode (BOOLEAN ReaderModeFlag, UINT32 Technologies)
{
+ (void)Technologies;
+
NFA_TRACE_API1 ("NFA_SetReaderMode =0x%x", ReaderModeFlag);
gFelicaReaderMode = ReaderModeFlag;
return;
@@ -1371,7 +1373,7 @@
{
tNFA_MW_VERSION mwVer;
mwVer.validation = ( NXP_EN_PN547C2 | (NXP_EN_PN65T << 1) | (NXP_EN_PN548C2 << 2) |
- (NXP_EN_PN66T << 3));
+ (NXP_EN_PN66T << 3) | (NXP_EN_PN551 << 4) | (NXP_EN_PN67T << 5));
mwVer.android_version = NXP_ANDROID_VER;
NFA_TRACE_API1("0x%x:NFC MW Major Version:", NFC_NXP_MW_VERSION_MAJ);
NFA_TRACE_API1("0x%x:NFC MW Minor Version:", NFC_NXP_MW_VERSION_MIN);
@@ -1380,4 +1382,82 @@
NFA_TRACE_API2("mwVer:Major=0x%x,Minor=0x%x", mwVer.major_version,mwVer.minor_version);
return mwVer;
}
+
+#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
+/*******************************************************************************
+**
+** Function: NFA_ResetNfcc
+**
+** Description: Reset the NFCC
+**
+** Returns: NFA_STATUS_OK if successfully initiated
+** NFA_STATUS_FAILED otherwise
+**
+*******************************************************************************/
+tNFA_STATUS NFA_ResetNfcc()
+{
+ tNFA_STATUS status = NFA_STATUS_FAILED;
+ status = nfc_ncif_reset_nfcc();
+ return status;
+}
+
+/*******************************************************************************
+**
+** Function: NFA_EE_HCI_Control
+**
+** Description: Enable/Disable EE&HCI subsystem based on mode flag.
+** Since NFCC reset being done, to receive Ntf corresponding to
+** UICC/ESE, EE and HCI Network has to be reset.
+** In MW corresponding context will be cleared and re-initialized
+**
+** Returns: none:
+**
+*******************************************************************************/
+void NFA_EE_HCI_Control(BOOLEAN flagEnable)
+{
+ uint8_t id[2] = {NFA_ID_HCI, NFA_ID_EE};
+ uint8_t i = 0;
+ if(!flagEnable)
+ {
+ NFA_TRACE_DEBUG0 ("NFA_EE_HCI_Control (); Disable system");
+ nfa_sys_cb.graceful_disable = TRUE;
+ for(i=0; i<2; i++)
+ {
+ if (nfa_sys_cb.is_reg[id[i]])
+ {
+ if (nfa_sys_cb.reg[id[i]]->disable != NULL)
+ {
+ (*nfa_sys_cb.reg[id[i]]->disable) ();
+ }
+ else
+ {
+ nfa_sys_deregister (id[i]);;
+ }
+ }
+ }
+ }
+ else
+ {
+ nfa_ee_init();
+ nfa_hci_init();
+
+ NFA_TRACE_DEBUG0 ("NFA_EE_HCI_Control (); Enable system");
+ for(i=0; i<2; i++)
+ {
+ if (nfa_sys_cb.is_reg[id[i]])
+ {
+ if (nfa_sys_cb.reg[id[i]]->enable != NULL)
+ {
+ (*nfa_sys_cb.reg[id[i]]->enable) ();
+ }
+ else
+ {
+ nfa_sys_cback_notify_enable_complete (id[i]);
+ }
+ }
+ }
+
+ }
+}
+#endif
#endif
diff --git a/src/nfa/dm/nfa_dm_cfg.c b/src/nfa/dm/nfa_dm_cfg.c
index 202e213..09d14ca 100755
--- a/src/nfa/dm/nfa_dm_cfg.c
+++ b/src/nfa/dm/nfa_dm_cfg.c
@@ -30,8 +30,8 @@
13, /* total length */
NFC_PMID_LF_T3T_PMM, /* Type-3 tag default PMM */
NCI_PARAM_LEN_LF_T3T_PMM,
- 0x20,
- 0x79,
+ 0x01, /* This PAD0 is used to identify HCE-F on Android */
+ 0xFE, /* This PAD0 is used to identify HCE-F on Android */
0xFF,
0xFF,
0xFF,
@@ -121,3 +121,39 @@
};
tNFA_HCI_CFG *p_nfa_hci_cfg = (tNFA_HCI_CFG *) &nfa_hci_cfg;
+
+BOOLEAN nfa_poll_bail_out_mode = FALSE;
+const tNFA_PROPRIETARY_CFG nfa_proprietary_cfg =
+{
+#if(NXP_EXTNS == TRUE)
+ 0x05, /* NCI_PROTOCOL_18092_ACTIVE */
+#else
+ 0x80,
+#endif
+ 0x81, /* NCI_PROTOCOL_B_PRIME */
+ 0x82, /* NCI_PROTOCOL_DUAL */
+#if(NXP_EXTNS == TRUE)
+ 0x06,
+#else
+ 0x83, /* NCI_PROTOCOL_15693 */
+#endif
+#if(NXP_EXTNS == TRUE && NFC_NXP_CHIP_TYPE != PN547C2)
+ 0x81,
+#else
+ 0x8A, /* NCI_PROTOCOL_KOVIO */
+#endif
+#if(NXP_EXTNS == TRUE)
+ 0x80,
+#else
+ 0xFF, /* NCI_PROTOCOL_MIFARE */
+#endif
+#if(NXP_EXTNS == TRUE && NFC_NXP_CHIP_TYPE != PN547C2)
+ 0x70,
+#else
+ 0x77, /* NCI_DISCOVERY_TYPE_POLL_KOVIO */
+#endif
+ 0x74, /* NCI_DISCOVERY_TYPE_POLL_B_PRIME */
+ 0xF4, /* NCI_DISCOVERY_TYPE_LISTEN_B_PRIME */
+};
+
+tNFA_PROPRIETARY_CFG *p_nfa_proprietary_cfg = (tNFA_PROPRIETARY_CFG *) &nfa_proprietary_cfg;
\ No newline at end of file
diff --git a/src/nfa/dm/nfa_dm_discover.c b/src/nfa/dm/nfa_dm_discover.c
index fb7d777..1f00329 100755
--- a/src/nfa/dm/nfa_dm_discover.c
+++ b/src/nfa/dm/nfa_dm_discover.c
@@ -46,15 +46,15 @@
#include "nfa_dm_int.h"
#include "nfa_p2p_int.h"
#include "nfa_sys_int.h"
+#include "nci_hmsgs.h"
#if (NFC_NFCEE_INCLUDED == TRUE)
#include "nfa_ee_api.h"
#include "nfa_ee_int.h"
#endif
#include "nfa_rw_int.h"
-#if(NXP_EXTNS == TRUE)
#include "nfc_int.h"
-#include "nci_hmsgs.h"
+#if(NXP_EXTNS == TRUE)
#include<config.h>
#endif
/*
@@ -63,6 +63,7 @@
#if(NXP_EXTNS == TRUE)
static BOOLEAN reconnect_in_progress;
static BOOLEAN is_emvco_active;
+static UINT8 gLastSak = 0x00;
#endif
static UINT8 nfa_dm_get_rf_discover_config (tNFA_DM_DISC_TECH_PROTO_MASK dm_disc_mask,
@@ -87,8 +88,8 @@
#if(NXP_EXTNS == TRUE)
typedef struct nfa_dm_p2p_prio_logic
{
- UINT8 isodep_detected; /*flag to check if ISO-DEP is detected */
- UINT8 timer_expired; /*flag to check whether timer is expired */
+ BOOLEAN isodep_detected; /* flag to check if ISO-DEP is detected */
+ BOOLEAN timer_expired; /* flag to check whether timer is expired */
TIMER_LIST_ENT timer_list; /*timer structure pointer */
UINT8 first_tech_mode;
}nfa_dm_p2p_prio_logic_t;
@@ -101,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)
+#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
BOOLEAN etsi_reader_in_progress = FALSE;
#endif
/*******************************************************************************
@@ -119,9 +120,11 @@
{
UINT8 num_params = 0;
+ NFA_TRACE_DEBUG2 ("%s : dm_disc_mask = 0x%08X",__FUNCTION__, dm_disc_mask);
+
if (nfa_dm_cb.flags & NFA_DM_FLAGS_LISTEN_DISABLED)
{
- NFA_TRACE_DEBUG1 ("nfa_dm_get_rf_discover_config () listen disabled, rm listen from 0x%x", dm_disc_mask);
+ NFA_TRACE_DEBUG1 ("nfa_dm_get_rf_discover_config() : listen disabled, remove listen from 0x%x", dm_disc_mask);
dm_disc_mask &= NFA_DM_DISC_MASK_POLL;
}
if (nfa_dm_is_p2p_paused ())
@@ -325,11 +328,11 @@
{
UINT8 sak = 0;
UINT8 tech_list = 0;
- unsigned long hostEnable = TRUE, fwdEnable = TRUE;
+ UINT8 hostListenMask = 0x00, fwdEnable = 0x00;
- if ((GetNumValue(NAME_HOST_LISTEN_ENABLE, &hostEnable, sizeof(hostEnable))))
+ if ((GetNumValue(NAME_HOST_LISTEN_TECH_MASK, &hostListenMask, sizeof(hostListenMask))))
{
- NFA_TRACE_DEBUG2 ("%s:HOST_LISTEN_ENABLE=0x0%lu;", __FUNCTION__, hostEnable);
+ NFA_TRACE_DEBUG2 ("%s : HOST_LISTEN_TECH_MASK = 0x%X;", __FUNCTION__, hostListenMask);
}
if((GetNumValue(NAME_NXP_FWD_FUNCTIONALITY_ENABLE, &fwdEnable, sizeof(fwdEnable))))
{
@@ -337,7 +340,7 @@
}
tech_list = nfa_ee_get_supported_tech_list(0x02);
- if(hostEnable)
+ if(hostListenMask == 0x03)
{
if(!fwdEnable && (tech_list == NFA_TECHNOLOGY_MASK_B))
{
@@ -370,6 +373,111 @@
return sak;
}
+
+/*******************************************************************************
+**
+** Function nfa_dm_set_hce_config
+**
+** Description Update listen mode set configs(LA_SEL_INFO & LB_SENSB_INFO)
+** for HCE-A only or HCE-B only functionality.
+**
+** Returns NFA_STATUS_OK if success
+**
+*******************************************************************************/
+static tNFA_STATUS nfa_dm_set_hce_config (tNFA_DM_DISC_TECH_PROTO_MASK tech_proto_mask)
+{
+ UINT8 params[40], *p;
+ UINT8 SAK = 0x00;
+ UINT8 SENSB_RES = 0x00;
+ UINT8 uiccTechList = 0x00;
+ UINT8 isFwdFnctnEnable = 0x00;
+ UINT8 hostListenMask = 0x00;
+
+ NFA_TRACE_DEBUG2 ("%s : tech_proto_mask = 0x%08X",__FUNCTION__, tech_proto_mask);
+
+ if ((GetNumValue(NAME_HOST_LISTEN_TECH_MASK, &hostListenMask, sizeof(hostListenMask))))
+ {
+ NFA_TRACE_DEBUG2 ("%s : HOST_LISTEN_TECH_MASK = 0x0%lu;", __FUNCTION__, hostListenMask);
+ }
+
+ p = params;
+
+ uiccTechList = nfa_ee_get_supported_tech_list(0x02);
+
+ if(tech_proto_mask & NFA_DM_DISC_MASK_LA_ISO_DEP)
+ {
+ switch(hostListenMask)
+ {
+ case 0x00: //Host doesn't wants to listen
+ SAK |= 0x00;
+ break;
+ case 0x01: //Host wants to listen only A
+ if((uiccTechList == NFA_TECHNOLOGY_MASK_B) || (uiccTechList == 0x00))
+ SAK |= 0x20;
+ else
+ SAK |= 0x00;
+ break;
+ case 0x02: //Host wants to listen only B
+ SAK |= 0x00;
+ break;
+ case 0x03: //Host wants to listen AB both
+ if((uiccTechList == NFA_TECHNOLOGY_MASK_B) || (uiccTechList == 0x00))
+ SAK |= 0x20;
+ else
+ SAK |= 0x00;
+ break;
+ }
+ gLastSak |= SAK;
+ }
+ if (tech_proto_mask & NFA_DM_DISC_MASK_LA_NFC_DEP)
+ {
+ NFA_TRACE_DEBUG2 ("%s : gLastSak = 0x%X;", __FUNCTION__, gLastSak);
+ if(gLastSak)
+ SAK |= gLastSak;
+ SAK |= NCI_PARAM_SEL_INFO_NFCDEP;
+ gLastSak &= 0x00;
+ }
+
+ NFA_TRACE_DEBUG2 ("%s : LA_SEL_INFO = 0x%X;", __FUNCTION__, SAK);
+
+ UINT8_TO_STREAM (p, NFC_PMID_LA_SEL_INFO);
+ UINT8_TO_STREAM (p, NCI_PARAM_LEN_LA_SEL_INFO);
+ UINT8_TO_STREAM (p, SAK);
+
+ if(tech_proto_mask & NFA_DM_DISC_MASK_LB_ISO_DEP)
+ {
+ switch(hostListenMask)
+ {
+ case 0x00: //Host doesn't wants to listen
+ case 0x01: //Host wants to listen only A
+ SENSB_RES |= 0x00;
+ break;
+ case 0x02: //Host wants to listen only B
+ if((uiccTechList == NFA_TECHNOLOGY_MASK_A) || (uiccTechList == 0x00))
+ SENSB_RES |= 0x01;
+ break;
+ case 0x03: //Host wants to listen AB both
+ if((uiccTechList == NFA_TECHNOLOGY_MASK_A) || (uiccTechList == 0x00))
+ SENSB_RES |= 0x01;
+ else
+ SENSB_RES |= 0x00;
+ break;
+ }
+ }
+
+ NFA_TRACE_DEBUG2 ("%s : LB_SENSB_INFO = 0x%X;", __FUNCTION__, SENSB_RES);
+
+ UINT8_TO_STREAM (p, NFC_PMID_LB_SENSB_INFO);
+ UINT8_TO_STREAM (p, NCI_PARAM_LEN_LB_SENSB_INFO);
+ UINT8_TO_STREAM (p, SENSB_RES);
+
+ if (p > params)
+ {
+ nfa_dm_check_set_config ((UINT8) (p - params), params, TRUE);
+ }
+
+ return NFA_STATUS_OK;
+}
#endif
/*******************************************************************************
@@ -807,9 +915,8 @@
/* Set initial disc_mask to legacy poll or listen */
tNFA_DM_DISC_TECH_PROTO_MASK disc_mask = ((tech_n_mode & 0x80) ? NFA_DM_DISC_MASK_L_LEGACY : NFA_DM_DISC_MASK_P_LEGACY);
- switch (tech_n_mode)
+ if (NFC_DISCOVERY_TYPE_POLL_A == tech_n_mode)
{
- case NFC_DISCOVERY_TYPE_POLL_A:
switch (protocol)
{
case NFC_PROTOCOL_T1T:
@@ -825,38 +932,45 @@
disc_mask = NFA_DM_DISC_MASK_PA_NFC_DEP;
break;
}
- break;
- case NFC_DISCOVERY_TYPE_POLL_B:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_B == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_ISO_DEP)
disc_mask = NFA_DM_DISC_MASK_PB_ISO_DEP;
#if(NXP_EXTNS == TRUE)
else if(protocol == NFC_PROTOCOL_T3BT)
disc_mask = NFA_DM_DISC_MASK_PB_T3BT;
#endif
- break;
- case NFC_DISCOVERY_TYPE_POLL_F:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_F == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_T3T)
disc_mask = NFA_DM_DISC_MASK_PF_T3T;
else if (protocol == NFC_PROTOCOL_NFC_DEP)
disc_mask = NFA_DM_DISC_MASK_PF_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_POLL_ISO15693:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_ISO15693 == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_P_ISO15693;
- break;
- case NFC_DISCOVERY_TYPE_POLL_B_PRIME:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_B_PRIME == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_P_B_PRIME;
- break;
- case NFC_DISCOVERY_TYPE_POLL_KOVIO:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_KOVIO == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_P_KOVIO;
- break;
- case NFC_DISCOVERY_TYPE_POLL_A_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_A_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_PAA_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_POLL_F_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_F_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_PFA_NFC_DEP;
- break;
-
- case NFC_DISCOVERY_TYPE_LISTEN_A:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_A == tech_n_mode)
+ {
switch (protocol)
{
case NFC_PROTOCOL_T1T:
@@ -872,29 +986,34 @@
disc_mask = NFA_DM_DISC_MASK_LA_NFC_DEP;
break;
}
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_B:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_B == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_ISO_DEP)
disc_mask = NFA_DM_DISC_MASK_LB_ISO_DEP;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_F:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_F == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_T3T)
disc_mask = NFA_DM_DISC_MASK_LF_T3T;
else if (protocol == NFC_PROTOCOL_NFC_DEP)
disc_mask = NFA_DM_DISC_MASK_LF_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_ISO15693:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_ISO15693 == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_L_ISO15693;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_B_PRIME:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_B_PRIME == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_L_B_PRIME;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_LAA_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_LFA_NFC_DEP;
- break;
}
NFA_TRACE_DEBUG3 ("nfa_dm_disc_get_disc_mask (): tech_n_mode:0x%X, protocol:0x%X, disc_mask:0x%X",
@@ -1048,19 +1167,22 @@
*******************************************************************************/
static void nfa_dm_disc_deact_ntf_timeout_cback (TIMER_LIST_ENT *p_tle)
{
+ (void)p_tle;
+
NFA_TRACE_ERROR0 ("nfa_dm_disc_deact_ntf_timeout_cback()");
-#if(NFC_NXP_ESE == TRUE && NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
if (nfc_cb.num_disc_maps == 1)
{
NFC_TRACE_ERROR0 ("reset Nfc..!!");
etsi_reader_in_progress = TRUE;
nfc_ncif_cmd_timeout();
+
}
else
{
#endif
nfa_dm_disc_force_to_idle();
-#if(NFC_NXP_ESE == TRUE && NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
}
#endif
}
@@ -1152,10 +1274,12 @@
void nfa_dm_start_rf_discover (void)
{
tNFC_DISCOVER_PARAMS disc_params[NFA_DM_MAX_DISC_PARAMS];
- tNFA_DM_DISC_TECH_PROTO_MASK dm_disc_mask = 0, poll_mask, listen_mask;
+ tNFA_DM_DISC_TECH_PROTO_MASK dm_disc_mask = 0x00, poll_mask = 0x00, listen_mask = 0x00;
+ UINT8 config_params[10], *p;
UINT8 num_params, xx;
- unsigned long fwdEnable = FALSE, hostEnable =FALSE;
- UINT8 tech_list = 0;
+ UINT8 fwdEnable = FALSE, hostEnable = FALSE;
+ UINT8 hostListenMask = 0x00;
+ UINT8 tech_list = 0x00;
NFA_TRACE_DEBUG0 ("nfa_dm_start_rf_discover ()");
/* Make sure that RF discovery was enabled, or some app has exclusive control */
@@ -1181,16 +1305,15 @@
{
if (nfa_dm_cb.disc_cb.entry[xx].in_use)
{
- poll_mask = (nfa_dm_cb.disc_cb.entry[xx].requested_disc_mask & NFA_DM_DISC_MASK_POLL);
NFA_TRACE_DEBUG2 ("requested_disc_mask = 0x%x, xx=%d", nfa_dm_cb.disc_cb.entry[xx].requested_disc_mask, xx);
- /* clear poll mode technolgies and protocols which are already used by others */
+ poll_mask = (nfa_dm_cb.disc_cb.entry[xx].requested_disc_mask & NFA_DM_DISC_MASK_POLL);
+
+ /* clear poll mode technologies and protocols which are already used by others */
poll_mask &= ~(dm_disc_mask & NFA_DM_DISC_MASK_POLL);
- listen_mask = 0;
-
/*
- ** add listen mode technolgies and protocols if host ID is matched to listen mode routing table
- */
+ ** add listen mode technologies and protocols if host ID is matched to listen mode routing table
+ */
/* NFC-A */
if (nfa_dm_cb.disc_cb.entry[xx].host_id == nfa_dm_cb.disc_cb.listen_RT[NFA_DM_DISC_LRT_NFC_A])
@@ -1273,6 +1396,8 @@
xx, nfa_dm_cb.disc_cb.entry[xx].selected_disc_mask);
dm_disc_mask |= nfa_dm_cb.disc_cb.entry[xx].selected_disc_mask;
+
+ NFA_TRACE_DEBUG1 ("dm_disc_mask finally : 0x%x", dm_disc_mask);
}
}
@@ -1280,15 +1405,16 @@
if((GetNumValue(NAME_NXP_FWD_FUNCTIONALITY_ENABLE, &fwdEnable, sizeof(fwdEnable))) == FALSE)
{
fwdEnable = TRUE; //default value
+ NFA_TRACE_DEBUG2 ("%s:NXP_FWD_FUNCTIONALITY_ENABLE=0x0%lu;", __FUNCTION__, fwdEnable);
}
- if ((GetNumValue(NAME_HOST_LISTEN_ENABLE, &hostEnable, sizeof(hostEnable))) == FALSE)
+ if (GetNumValue(NAME_HOST_LISTEN_TECH_MASK, &hostListenMask, sizeof(hostListenMask)))
{
- hostEnable = TRUE;
- NFA_TRACE_DEBUG2 ("%s:HOST_LISTEN_ENABLE=0x0%lu;", __FUNCTION__, hostEnable);
+ NFA_TRACE_DEBUG2 ("%s:HOST_LISTEN_TECH_MASK = 0x0%lu;", __FUNCTION__, hostListenMask);
}
tech_list = nfa_ee_get_supported_tech_list(0x02);
- if((fwdEnable == FALSE) || (hostEnable == FALSE))
+
+ if((fwdEnable == FALSE) || (hostListenMask == 0x00))
{
if(tech_list == NFA_TECHNOLOGY_MASK_B)
{
@@ -1306,7 +1432,33 @@
/* Let P2P set GEN bytes for LLCP to NFCC */
if (dm_disc_mask & NFA_DM_DISC_MASK_NFC_DEP)
{
+
nfa_p2p_set_config (dm_disc_mask);
+
+ }
+ if (dm_disc_mask & (NFA_DM_DISC_MASK_PF_NFC_DEP | NFA_DM_DISC_MASK_PF_T3T))
+ {
+ /* According to the NFC Forum Activity spec, controllers must:
+ * 1) Poll with RC=0 and SC=FFFF to find NFC-DEP targets
+ * 2) Poll with RC=1 and SC=FFFF to find T3T targets
+ * Many controllers don't do this yet, and seem to be activating
+ * NFC-DEP by default.
+ *
+ * We can at least fix the scenario where we're not interested
+ * in NFC-DEP, by setting RC=1 in that case. Otherwise, keep
+ * the default of RC=0. */
+ p = config_params;
+ UINT8_TO_STREAM (p, NFC_PMID_PF_RC);
+ UINT8_TO_STREAM (p, NCI_PARAM_LEN_PF_RC);
+ if ((dm_disc_mask & NFA_DM_DISC_MASK_PF_NFC_DEP) && !nfa_dm_is_p2p_paused())
+ {
+ UINT8_TO_STREAM (p, 0x00); // RC=0
+ }
+ else
+ {
+ UINT8_TO_STREAM (p, 0x01); // RC=1
+ }
+ nfa_dm_check_set_config(p - config_params, config_params, FALSE);
}
}
@@ -1323,7 +1475,14 @@
** NFC-A, NFC-B, NFC-BP, NFC-I93
*/
#if(NXP_EXTNS == TRUE)
- /* do not set rf listen mode config*/
+ if (GetNumValue(NAME_HOST_LISTEN_TECH_MASK, &hostListenMask, sizeof(hostListenMask)))
+ {
+ NFA_TRACE_DEBUG2 ("%s : HOST_LISTEN_TECH_MASK = 0x0%lu;", __FUNCTION__, hostListenMask);
+ }
+ if(hostListenMask)
+ {
+ nfa_dm_set_hce_config(dm_disc_mask);
+ }
#else
/* if this is not for exclusive control */
if (!nfa_dm_cb.disc_cb.excl_disc_entry.in_use)
@@ -1899,7 +2058,7 @@
/* Perform pending deactivate command and on response notfiy deactivation */
nfa_dm_cb.disc_cb.deact_notify_pending = TRUE;
nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD,
- (tNFA_DM_RF_DISC_DATA *) &nfa_dm_cb.disc_cb.pending_deact_type);
+ (void *) &nfa_dm_cb.disc_cb.pending_deact_type);
}
}
}
@@ -1916,7 +2075,7 @@
static void nfa_dm_disc_kovio_timeout_cback (TIMER_LIST_ENT *p_tle)
{
tNFC_DEACTIVATE_DEVT deact;
-
+ (void)p_tle;
NFA_TRACE_DEBUG0 ("nfa_dm_disc_kovio_timeout_cback()");
/* notify presence check failure, if presence check is pending */
@@ -1933,7 +2092,7 @@
deact.status = NFC_STATUS_OK;
deact.type = NFC_DEACTIVATE_TYPE_DISCOVERY;
deact.is_ntf = TRUE;
- nfa_dm_disc_notify_deactivation (NFA_DM_RF_DEACTIVATE_NTF, (tNFC_DISCOVER*)&deact);
+ nfa_dm_disc_notify_deactivation (NFA_DM_RF_DEACTIVATE_NTF, (void*)&deact);
}
}
@@ -2007,7 +2166,7 @@
{
nfa_dm_cb.disc_cb.deact_pending = FALSE;
nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD,
- (tNFA_DM_RF_DISC_DATA *) &nfa_dm_cb.disc_cb.pending_deact_type);
+ (void *) &nfa_dm_cb.disc_cb.pending_deact_type);
}
}
}
@@ -2023,6 +2182,7 @@
*******************************************************************************/
static void nfa_dm_disc_data_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data)
{
+ (void)conn_id;
NFA_TRACE_DEBUG0 ("nfa_dm_disc_data_cback ()");
/* if selection failed */
@@ -2586,7 +2746,6 @@
switch (event)
{
case NFA_DM_RF_DEACTIVATE_CMD:
-#if(NXP_EXTNS == TRUE)
if (nfa_dm_cb.disc_cb.activated_protocol == NCI_PROTOCOL_MIFARE)
{
nfa_dm_cb.disc_cb.deact_pending = TRUE;
@@ -2594,7 +2753,7 @@
status = nfa_dm_send_deactivate_cmd(p_data->deactivate_type);
break;
}
-#endif
+
if (old_sleep_wakeup_flag)
{
/* sleep wakeup is already enabled when deactivate cmd is requested,
@@ -2620,7 +2779,7 @@
deact.status = NFC_STATUS_OK;
deact.type = NFC_DEACTIVATE_TYPE_IDLE;
deact.is_ntf = TRUE;
- nfa_dm_disc_notify_deactivation (NFA_DM_RF_DEACTIVATE_NTF, (tNFC_DISCOVER*)&deact);
+ nfa_dm_disc_notify_deactivation (NFA_DM_RF_DEACTIVATE_NTF, (void*)&deact);
/* NFCC is in IDLE state */
nfa_dm_disc_new_state (NFA_DM_RFST_IDLE);
@@ -2740,7 +2899,7 @@
deact.status = NFC_STATUS_OK;
deact.type = NFC_DEACTIVATE_TYPE_IDLE;
deact.is_ntf = TRUE;
- nfa_dm_disc_notify_deactivation (NFA_DM_RF_DEACTIVATE_NTF, (tNFC_DISCOVER*)&deact);
+ nfa_dm_disc_notify_deactivation (NFA_DM_RF_DEACTIVATE_NTF, (void*)&deact);
/* NFCC is in IDLE state */
nfa_dm_disc_new_state (NFA_DM_RFST_IDLE);
@@ -3165,7 +3324,7 @@
select_params.rf_interface = rf_interface;
nfa_dm_cb.disc_cb.disc_flags |= NFA_DM_DISC_FLAGS_NOTIFY;
- nfa_dm_disc_sm_execute (NFA_DM_RF_DISCOVER_SELECT_CMD, (tNFA_DM_RF_DISC_DATA *) &select_params);
+ nfa_dm_disc_sm_execute (NFA_DM_RF_DISCOVER_SELECT_CMD, (void *) &select_params);
}
else
{
@@ -3224,7 +3383,7 @@
nfa_sys_stop_timer (&nfa_dm_cb.disc_cb.kovio_tle);
nfa_dm_disc_kovio_timeout_cback (&nfa_dm_cb.disc_cb.kovio_tle);
}
- nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD, (tNFA_DM_RF_DISC_DATA *) &deactivate_type);
+ nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD, (void *) &deactivate_type);
return NFA_STATUS_OK;
}
else
@@ -3234,7 +3393,7 @@
}
else
{
- nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD, (tNFA_DM_RF_DISC_DATA *) &deactivate_type);
+ nfa_dm_disc_sm_execute (NFA_DM_RF_DEACTIVATE_CMD, (void *) &deactivate_type);
return NFA_STATUS_OK;
}
}
@@ -3330,7 +3489,6 @@
}
#endif /* BT_TRACE_VERBOSE */
-#if(NXP_EXTNS == TRUE)
/*******************************************************************************
**
** Function P2P_Prio_Logic
@@ -3341,8 +3499,13 @@
** Returns True if success
**
*******************************************************************************/
-BOOLEAN nfa_dm_p2p_prio_logic(UINT8 event, UINT8 *p, UINT8 ntf_rsp)
+BOOLEAN nfa_dm_p2p_prio_logic (UINT8 event, UINT8 *p, UINT8 event_type)
{
+ if (!nfa_poll_bail_out_mode)
+ {
+ NFA_TRACE_DEBUG0 ("p2p priority is running under bail out mode ONLY.");
+ return TRUE;
+ }
if((nfa_dm_cb.flags & NFA_DM_FLAGS_P2P_PAUSED) &&
(nfa_dm_cb.flags & NFA_DM_FLAGS_LISTEN_DISABLED))
@@ -3350,10 +3513,11 @@
NFA_TRACE_DEBUG0("returning from nfa_dm_p2p_prio_logic Disable p2p_prio_logic");
return TRUE;
}
- if (TRUE == reconnect_in_progress ||
- TRUE == is_emvco_active)
+#if(NXP_EXTNS == TRUE)
+ if( (TRUE == reconnect_in_progress) ||
+ (TRUE == is_emvco_active))
{
- NFA_TRACE_DEBUG0("returning from nfa_dm_p2p_prio_logic reconnect_in_progress || is_emvco_active");
+ NFA_TRACE_DEBUG0("returning from nfa_dm_p2p_prio_logic reconnect_in_progress");
return TRUE;
}
if(0x01 == appl_dta_mode_flag)
@@ -3361,16 +3525,17 @@
/*Disable the P2P Prio Logic when DTA is running*/
return TRUE;
}
- if(event == NCI_MSG_RF_DISCOVER && p2p_prio_logic_data.timer_expired == 1 && ntf_rsp == 1)
+#endif
+ if (event == NCI_MSG_RF_DISCOVER && p2p_prio_logic_data.timer_expired == TRUE && event_type == NFA_DM_P2P_PRIO_RSP)
{
- NFA_TRACE_DEBUG0("nfa_dm_p2p_prio_logic starting a timer for next rf intf activated ntf");
- P2P_PRIO_LOGIC_CLEANUP_TIMEOUT = (nfa_dm_act_get_rf_disc_duration()/10); /*timeout value 50 ms multiplied by 10 for p2p_prio_logic_cleanup*/
-
+ NFA_TRACE_DEBUG0 ("nfa_dm_p2p_prio_logic starting a timer for next rf intf activated ntf");
nfc_start_quick_timer (&p2p_prio_logic_data.timer_list,
- NFC_TTYPE_P2P_PRIO_LOGIC_CLEANUP, P2P_PRIO_LOGIC_CLEANUP_TIMEOUT);
+ NFC_TTYPE_P2P_PRIO_LOGIC_CLEANUP,
+ ((UINT32) nfa_dm_act_get_rf_disc_duration() * QUICK_TIMER_TICKS_PER_SEC) / 1000);
return TRUE;
}
- if(event == NCI_MSG_RF_INTF_ACTIVATED && p2p_prio_logic_data.timer_expired == 1)
+
+ if (event == NCI_MSG_RF_INTF_ACTIVATED && p2p_prio_logic_data.timer_expired == TRUE)
{
NFA_TRACE_DEBUG0("nfa_dm_p2p_prio_logic stopping a timer for next rf intf activated ntf");
nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
@@ -3392,32 +3557,28 @@
protocol = *p++;
tech_mode = *p++;
}
- NFA_TRACE_DEBUG1("nfa_dm_p2p_prio_logic type = 0x%x", type);
+ NFA_TRACE_DEBUG1 ("nfa_dm_p2p_prio_logic event_type = 0x%x", event_type);
-
+#if(NXP_EXTNS == TRUE)
if(type == NCI_INTERFACE_UICC_DIRECT || type == NCI_INTERFACE_ESE_DIRECT )
{
NFA_TRACE_DEBUG0 ("Disable the p2p prio logic RDR_SWP");
return TRUE;
}
-
- if(event == NCI_MSG_RF_INTF_ACTIVATED && tech_mode >= 0x80)
+#endif
+ if (event == NCI_MSG_RF_INTF_ACTIVATED && tech_mode >= 0x80)
{
NFA_TRACE_DEBUG0 ("nfa_dm_p2p_prio_logic listen mode activated reset all the nfa_dm_p2p_prio_logic variables ");
- memset(&p2p_prio_logic_data, 0x00, sizeof(nfa_dm_p2p_prio_logic_t));
- if(p2p_prio_logic_data.timer_list.in_use)
- {
- nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
- }
+ nfa_dm_p2p_prio_logic_cleanup ();
}
if ((tech_mode < 0x80) &&
event == NCI_MSG_RF_INTF_ACTIVATED &&
protocol == NCI_PROTOCOL_ISO_DEP &&
- p2p_prio_logic_data.isodep_detected == 0)
+ p2p_prio_logic_data.isodep_detected == FALSE)
{
- memset(&p2p_prio_logic_data, 0x00, sizeof(nfa_dm_p2p_prio_logic_t));
- p2p_prio_logic_data.isodep_detected = 1;
+ nfa_dm_p2p_prio_logic_cleanup ();
+ p2p_prio_logic_data.isodep_detected = TRUE;
p2p_prio_logic_data.first_tech_mode = tech_mode;
NFA_TRACE_DEBUG0 ("ISO-DEP Detected First Time Resume the Polling Loop");
nci_snd_deactivate_cmd(NFA_DEACTIVATE_TYPE_DISCOVERY);
@@ -3428,11 +3589,11 @@
else if(event == NCI_MSG_RF_INTF_ACTIVATED &&
protocol == NCI_PROTOCOL_ISO_DEP &&
- p2p_prio_logic_data.isodep_detected == 1 &&
+ p2p_prio_logic_data.isodep_detected == TRUE &&
p2p_prio_logic_data.first_tech_mode != tech_mode)
{
- p2p_prio_logic_data.isodep_detected = 1;
- p2p_prio_logic_data.timer_expired = 0;
+ p2p_prio_logic_data.isodep_detected = TRUE;
+ p2p_prio_logic_data.timer_expired = FALSE;
NFA_TRACE_DEBUG0 ("ISO-DEP Detected Second Time Other Techmode Resume the Polling Loop");
nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
nci_snd_deactivate_cmd(NFA_DEACTIVATE_TYPE_DISCOVERY);
@@ -3443,47 +3604,48 @@
else if (event == NCI_MSG_RF_INTF_ACTIVATED &&
protocol == NCI_PROTOCOL_ISO_DEP &&
- p2p_prio_logic_data.isodep_detected == 1 &&
- p2p_prio_logic_data.timer_expired == 1)
+ p2p_prio_logic_data.isodep_detected == TRUE &&
+ p2p_prio_logic_data.timer_expired == TRUE)
{
NFA_TRACE_DEBUG0 ("ISO-DEP Detected TimerExpired, Final Notifying the Event");
nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
- memset(&p2p_prio_logic_data, 0x00, sizeof(nfa_dm_p2p_prio_logic_t));
+ nfa_dm_p2p_prio_logic_cleanup ();
}
else if (event == NCI_MSG_RF_INTF_ACTIVATED &&
protocol == NCI_PROTOCOL_ISO_DEP &&
- p2p_prio_logic_data.isodep_detected == 1 &&
+ p2p_prio_logic_data.isodep_detected == TRUE &&
p2p_prio_logic_data.first_tech_mode == tech_mode)
{
NFA_TRACE_DEBUG0 ("ISO-DEP Detected Same Techmode, Final Notifying the Event");
nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
NFA_TRACE_DEBUG0 ("P2P_Stop_Timer");
- memset(&p2p_prio_logic_data, 0x00, sizeof(nfa_dm_p2p_prio_logic_t));
+ nfa_dm_p2p_prio_logic_cleanup ();
}
else if (event == NCI_MSG_RF_INTF_ACTIVATED &&
protocol != NCI_PROTOCOL_ISO_DEP &&
- p2p_prio_logic_data.isodep_detected == 1)
+ p2p_prio_logic_data.isodep_detected == TRUE)
{
NFA_TRACE_DEBUG0 ("ISO-DEP Not Detected Giving Priority for other Technology");
nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
NFA_TRACE_DEBUG0 ("P2P_Stop_Timer");
- memset(&p2p_prio_logic_data, 0x00, sizeof(nfa_dm_p2p_prio_logic_t));
+ nfa_dm_p2p_prio_logic_cleanup ();
}
else if (event == NCI_MSG_RF_DEACTIVATE &&
- p2p_prio_logic_data.isodep_detected == 1 &&
- p2p_prio_logic_data.timer_expired == 0 &&
- ntf_rsp == 1)
+ p2p_prio_logic_data.isodep_detected == TRUE &&
+ p2p_prio_logic_data.timer_expired == FALSE &&
+ event_type == NFA_DM_P2P_PRIO_RSP)
{
NFA_TRACE_DEBUG0 ("NFA_DM_RF_DEACTIVATE_RSP");
return FALSE;
}
else if (event == NCI_MSG_RF_DEACTIVATE &&
- p2p_prio_logic_data.isodep_detected == 1 &&
- p2p_prio_logic_data.timer_expired == 0 && ntf_rsp == 2)
+ p2p_prio_logic_data.isodep_detected == TRUE &&
+ p2p_prio_logic_data.timer_expired == FALSE &&
+ event_type == NFA_DM_P2P_PRIO_NTF)
{
NFA_TRACE_DEBUG0 ("NFA_DM_RF_DEACTIVATE_NTF");
if(p2p_prio_logic_data.timer_list.in_use)
@@ -3491,7 +3653,8 @@
nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
}
nfc_start_quick_timer (&p2p_prio_logic_data.timer_list,
- NFC_TTYPE_P2P_PRIO_RESPONSE, P2P_RESUME_POLL_TIMEOUT);
+ NFC_TTYPE_P2P_PRIO_RESPONSE,
+ ((UINT32) 160 * QUICK_TIMER_TICKS_PER_SEC) / 1000 );
NFA_TRACE_DEBUG0 ("P2P_Start_Timer");
@@ -3502,18 +3665,26 @@
NFA_TRACE_DEBUG0("returning TRUE");
return TRUE;
}
+
+#if(NXP_EXTNS == TRUE)
+void nfa_dm_p2p_prio_logic_disable ()
+{
+ if(&p2p_prio_logic_data.timer_list.in_use)
+ nfc_stop_quick_timer (&p2p_prio_logic_data.timer_list);
+ memset (&p2p_prio_logic_data, 0x00, sizeof(nfa_dm_p2p_prio_logic_t));
+}
+
void NFA_SetReconnectState (BOOLEAN flag)
{
reconnect_in_progress = flag;
NFA_TRACE_DEBUG1("NFA_SetReconnectState = 0x%x", reconnect_in_progress);
}
-
void NFA_SetEmvCoState (BOOLEAN flag)
{
is_emvco_active = flag;
NFA_TRACE_DEBUG1("NFA_SetEmvCoState = 0x%x", is_emvco_active);
}
-
+#endif
/*******************************************************************************
**
** Function p2p_prio_logic_timeout
@@ -3556,4 +3727,3 @@
memset(&p2p_prio_logic_data, 0x00, sizeof(nfa_dm_p2p_prio_logic_t));
nfc_ncif_cmd_timeout();
}
-#endif
diff --git a/src/nfa/dm/nfa_dm_main.c b/src/nfa/dm/nfa_dm_main.c
index 6730b13..dd14b89 100755
--- a/src/nfa/dm/nfa_dm_main.c
+++ b/src/nfa/dm/nfa_dm_main.c
@@ -271,7 +271,7 @@
tNFC_STATUS nfc_status;
UINT32 cur_bit;
- NFA_TRACE_DEBUG0 ("nfa_dm_check_set_config ()");
+ NFA_TRACE_DEBUG1 ("nfa_dm_check_set_config () tlv_len=%d",tlv_list_len);
/* We only allow 32 pending SET_CONFIGs */
if (nfa_dm_cb.setcfg_pending_num >= NFA_DM_SETCONFIG_PENDING_MAX)
@@ -290,6 +290,13 @@
switch (type)
{
+ /*
+ ** Poll F Configuration
+ */
+ case NFC_PMID_PF_RC:
+ p_stored = nfa_dm_cb.params.pf_rc;
+ max_len = NCI_PARAM_LEN_PF_RC;
+ break;
case NFC_PMID_TOTAL_DURATION:
p_stored = nfa_dm_cb.params.total_duration;
max_len = NCI_PARAM_LEN_TOTAL_DURATION;
@@ -490,6 +497,13 @@
|| ((appl_dta_mode_flag) && (app_init)))
#endif
{
+#if(NXP_EXTNS == TRUE)
+ NFA_TRACE_DEBUG1 ("nfa_dm_check_set_config () updated_len=%d",updated_len);
+ if(!updated_len)
+ {
+ return NFA_STATUS_OK;
+ }
+#endif
if ((nfc_status = NFC_SetConfig (updated_len, p_tlv_list)) == NFC_STATUS_OK)
{
/* Keep track of whether we will need to notify NFA_DM_SET_CONFIG_EVT on NFC_SET_CONFIG_REVT */
diff --git a/src/nfa/dm/nfa_dm_ndef.c b/src/nfa/dm/nfa_dm_ndef.c
index f0c6577..876e4ba 100755
--- a/src/nfa/dm/nfa_dm_ndef.c
+++ b/src/nfa/dm/nfa_dm_ndef.c
@@ -180,7 +180,7 @@
ndef_register.status = NFA_STATUS_OK;
NFA_TRACE_DEBUG1 ("NDEF handler successfully registered. Handle=0x%08x", p_reg_info->ndef_type_handle);
- (*(p_reg_info->p_ndef_cback)) (NFA_NDEF_REGISTER_EVT, (tNFA_NDEF_EVT_DATA *) &ndef_register);
+ (*(p_reg_info->p_ndef_cback)) (NFA_NDEF_REGISTER_EVT, (void *) &ndef_register);
return FALSE; /* indicate that we will free message buffer when type_handler is deregistered */
}
@@ -190,7 +190,7 @@
NFA_TRACE_ERROR0 ("NDEF handler failed to register.");
ndef_register.ndef_type_handle = NFA_HANDLE_INVALID;
ndef_register.status = NFA_STATUS_FAILED;
- (*(p_reg_info->p_ndef_cback)) (NFA_NDEF_REGISTER_EVT, (tNFA_NDEF_EVT_DATA *) &ndef_register);
+ (*(p_reg_info->p_ndef_cback)) (NFA_NDEF_REGISTER_EVT, (void *) &ndef_register);
return TRUE;
}
@@ -389,7 +389,7 @@
ndef_data.ndef_type_handle = 0; /* No ndef-handler handle, since this callback is not from RegisterNDefHandler */
ndef_data.p_data = p_msg_buf;
ndef_data.len = len;
- (*p_cb->p_excl_ndef_cback) (NFA_NDEF_DATA_EVT, (tNFA_NDEF_EVT_DATA *) &ndef_data);
+ (*p_cb->p_excl_ndef_cback) (NFA_NDEF_DATA_EVT, (void *) &ndef_data);
return;
}
@@ -402,7 +402,7 @@
ndef_data.ndef_type_handle = p_handler->ndef_type_handle;
ndef_data.p_data = NULL; /* Start of record */
ndef_data.len = 0;
- (*p_handler->p_ndef_cback) (NFA_NDEF_DATA_EVT, (tNFA_NDEF_EVT_DATA *) &ndef_data);
+ (*p_handler->p_ndef_cback) (NFA_NDEF_DATA_EVT, (void *) &ndef_data);
}
return;
}
@@ -511,7 +511,7 @@
}
/* Notify NDEF type handler */
- (*p_handler->p_ndef_cback) (NFA_NDEF_DATA_EVT, (tNFA_NDEF_EVT_DATA *) &ndef_data);
+ (*p_handler->p_ndef_cback) (NFA_NDEF_DATA_EVT, (void *) &ndef_data);
/* Indicate that at lease one handler has received this record */
record_handled = TRUE;
diff --git a/src/nfa/ee/nfa_ee_act.c b/src/nfa/ee/nfa_ee_act.c
index 955d4a2..beb0ad4 100755
--- a/src/nfa/ee/nfa_ee_act.c
+++ b/src/nfa/ee/nfa_ee_act.c
@@ -47,7 +47,7 @@
#include "nfa_sys_int.h"
#include "nfc_api.h"
#include "nfa_ee_int.h"
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
#include <config.h>
#endif
@@ -122,7 +122,7 @@
UINT8 nfa_ee_ce_route_strict_disable = 0x01;
BOOLEAN gNfaProvisionMode = FALSE; /* to know if device is set to provision mode or not */
UINT8 nfa_ee_ce_p61_active = 0x00;
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
static UINT16 max_routing_table_size;
static UINT16 max_aid_config_length;
static UINT16 max_aid_entries;
@@ -293,7 +293,6 @@
*******************************************************************************/
static void nfa_ee_conn_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data)
{
- BT_HDR *p_msg;
tNFA_EE_NCI_CONN cbk;
NFA_TRACE_DEBUG2("nfa_ee_conn_cback: conn_id: %d, event=0x%02x", conn_id, event);
@@ -307,9 +306,8 @@
cbk.conn_id = conn_id;
cbk.event = event;
cbk.p_data = p_data;
- p_msg = (BT_HDR *)&cbk;
- nfa_ee_evt_hdlr (p_msg);
+ nfa_ee_evt_hdlr ((void*)&cbk);
}
@@ -530,7 +528,7 @@
}
}
}
-#if((NXP_EXTNS == TRUE) && (!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if((NXP_EXTNS == TRUE) && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
max_routing_table_size = nfc_ncif_getMaxRoutingTableSize();
if(max_routing_table_size < (NFA_EE_TOTAL_TECH_ROUTE_SIZE + NFA_EE_TOTAL_PROTO_ROUTE_SIZE))
@@ -538,7 +536,7 @@
max_routing_table_size = NFA_EE_ROUT_BUF_SIZE;
}
max_aid_config_length = nfa_ee_find_max_aid_config_length();
- max_aid_entries = max_aid_config_length/NFA_EE_MIN_AID_SIZE;
+ max_aid_entries = max_aid_config_length/NFA_EE_MIN_AID_ENTRY_SIZE;
NFA_TRACE_DEBUG3("max_routing_table_size = %d max_aid_config_length: %d and max_aid_entries: %d",
max_routing_table_size, max_aid_config_length, max_aid_entries);
/* Dynamic ecb allocation based on max aid entry calculated from max. routing table size( from core_init rsp )*/
@@ -547,16 +545,19 @@
nfa_ee_cb.ecb[xx].aid_len = GKI_getbuf(max_aid_entries);
nfa_ee_cb.ecb[xx].aid_pwr_cfg = GKI_getbuf(max_aid_entries);
nfa_ee_cb.ecb[xx].aid_rt_info = GKI_getbuf(max_aid_entries);
- nfa_ee_cb.ecb[xx].aid_rt_loc = GKI_getbuf(max_aid_entries);
- if((NULL != nfa_ee_cb.ecb[xx].aid_len) &&
+ nfa_ee_cb.ecb[xx].aid_rt_loc = GKI_getbuf(max_aid_entries);
+ nfa_ee_cb.ecb[xx].aid_cfg = GKI_getbuf(max_aid_config_length);
+ if((NULL != nfa_ee_cb.ecb[xx].aid_len) &&
(NULL != nfa_ee_cb.ecb[xx].aid_pwr_cfg) &&
(NULL != nfa_ee_cb.ecb[xx].aid_rt_info) &&
- (NULL != nfa_ee_cb.ecb[xx].aid_rt_loc))
+ (NULL != nfa_ee_cb.ecb[xx].aid_rt_loc) &&
+ (NULL != nfa_ee_cb.ecb[xx].aid_cfg))
{
memset(nfa_ee_cb.ecb[xx].aid_len, 0, max_aid_entries);
memset(nfa_ee_cb.ecb[xx].aid_pwr_cfg, 0, max_aid_entries);
memset(nfa_ee_cb.ecb[xx].aid_rt_info, 0, max_aid_entries);
memset(nfa_ee_cb.ecb[xx].aid_rt_loc, 0, max_aid_entries);
+ memset(nfa_ee_cb.ecb[xx].aid_cfg, 0, max_aid_config_length);
}
else
{
@@ -585,7 +586,7 @@
void nfa_ee_api_deregister(tNFA_EE_MSG *p_data)
{
tNFA_EE_CBACK *p_cback = NULL;
-#if((NXP_EXTNS == TRUE) && (!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if((NXP_EXTNS == TRUE) && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
int index = p_data->deregister.index, xx = 0;
#else
int index = p_data->deregister.index;
@@ -593,13 +594,14 @@
tNFA_EE_CBACK_DATA evt_data = {0};
NFA_TRACE_DEBUG0 ("nfa_ee_api_deregister");
-#if((NXP_EXTNS == TRUE) && (!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if((NXP_EXTNS == TRUE) && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
for(xx = 0; xx < NFA_EE_NUM_ECBS; xx++)
{
GKI_freebuf(nfa_ee_cb.ecb[xx].aid_len);
GKI_freebuf(nfa_ee_cb.ecb[xx].aid_pwr_cfg);
GKI_freebuf(nfa_ee_cb.ecb[xx].aid_rt_info);
GKI_freebuf(nfa_ee_cb.ecb[xx].aid_rt_loc);
+ GKI_freebuf(nfa_ee_cb.ecb[xx].aid_cfg);
}
#endif
p_cback = nfa_ee_cb.p_ee_cback[index];
@@ -625,11 +627,18 @@
NFA_TRACE_DEBUG2 ("nfa_ee_api_mode_set() handle:0x%02x mode:%d", p_cb->nfcee_id, p_data->mode_set.mode);
NFC_NfceeModeSet (p_cb->nfcee_id, p_data->mode_set.mode);
/* set the NFA_EE_STATUS_PENDING bit to indicate the status is not exactly active */
- if (p_data->mode_set.mode == NFC_MODE_ACTIVATE)
+ if (p_data->mode_set.mode == NFC_MODE_ACTIVATE
+#if(NXP_EXTNS == TRUE)
+ && (p_cb->ee_status != NFA_EE_STATUS_REMOVED)
+#endif
+ )
p_cb->ee_status = NFA_EE_STATUS_PENDING | NFA_EE_STATUS_ACTIVE;
else
{
- p_cb->ee_status = NFA_EE_STATUS_INACTIVE;
+#if(NXP_EXTNS == TRUE)
+ if(p_cb->ee_status != NFA_EE_STATUS_REMOVED)
+#endif
+ p_cb->ee_status = NFA_EE_STATUS_INACTIVE;
/* DH should release the NCI connection before deactivate the NFCEE */
if (p_cb->conn_st == NFA_EE_CONN_ST_CONN)
{
@@ -666,6 +675,20 @@
#endif
UINT8 old_size_mask = p_cb->size_mask;
+ if ( (p_cb->tech_switch_on == p_data->set_tech.technologies_switch_on)
+ && (p_cb->tech_switch_off == p_data->set_tech.technologies_switch_off)
+ && (p_cb->tech_battery_off == p_data->set_tech.technologies_battery_off)
+#if(NXP_EXTNS == TRUE)
+ && (p_cb->tech_screen_lock == p_data->set_tech.technologies_screen_lock)
+ && (p_cb->tech_screen_off == p_data->set_tech.technologies_screen_off)
+#endif
+ )
+ {
+ /* nothing to change */
+ evt_data.status = NFA_STATUS_OK;
+ nfa_ee_report_event (p_cb->p_ee_cback, NFA_EE_SET_TECH_CFG_EVT, &evt_data);
+ return;
+ }
p_cb->tech_switch_on = p_data->set_tech.technologies_switch_on;
p_cb->tech_switch_off = p_data->set_tech.technologies_switch_off;
p_cb->tech_battery_off = p_data->set_tech.technologies_battery_off;
@@ -728,6 +751,20 @@
#endif
UINT8 old_size_mask = p_cb->size_mask;
+ if ( (p_cb->proto_switch_on == p_data->set_proto.protocols_switch_on)
+ && (p_cb->proto_switch_off == p_data->set_proto.protocols_switch_off)
+ && (p_cb->proto_battery_off == p_data->set_proto.protocols_battery_off)
+#if(NXP_EXTNS == TRUE)
+ && (p_cb->proto_screen_lock == p_data->set_proto.protocols_screen_lock)
+ && (p_cb->proto_screen_off == p_data->set_proto.protocols_screen_off)
+#endif
+ )
+ {
+ /* nothing to change */
+ evt_data.status = NFA_STATUS_OK;
+ nfa_ee_report_event (p_cb->p_ee_cback, NFA_EE_SET_PROTO_CFG_EVT, &evt_data);
+ return;
+ }
p_cb->proto_switch_on = p_data->set_proto.protocols_switch_on;
p_cb->proto_switch_off = p_data->set_proto.protocols_switch_off;
p_cb->proto_battery_off = p_data->set_proto.protocols_battery_off;
@@ -834,14 +871,14 @@
len_needed = p_add->aid_len + 2; /* tag/len */
if ((len_needed + len) >
-#if((NXP_EXTNS == TRUE) && (!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if((NXP_EXTNS == TRUE) && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
max_aid_config_length
#else
NFA_EE_MAX_AID_CFG_LEN
#endif
)
{
-#if((NXP_EXTNS == TRUE) && (!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if((NXP_EXTNS == TRUE) && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
NFA_TRACE_ERROR3 ("Exceed capacity: (len_needed:%d + len:%d) > max_aid_config_length:%d", len_needed, len, max_aid_config_length);
#else
NFA_TRACE_ERROR3 ("Exceed capacity: (len_needed:%d + len:%d) > NFA_EE_MAX_AID_CFG_LEN:%d", len_needed, len, NFA_EE_MAX_AID_CFG_LEN);
@@ -849,7 +886,7 @@
evt_data.status = NFA_STATUS_BUFFER_FULL;
}
#if(NXP_EXTNS == TRUE)
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
else if (dh_ecb->aid_entries < max_aid_entries)
#else
else if (dh_ecb->aid_entries < NFA_EE_MAX_AID_ENTRIES)
@@ -895,7 +932,7 @@
}
else
{
-#if((NXP_EXTNS == TRUE) && (!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if((NXP_EXTNS == TRUE) && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
NFA_TRACE_ERROR1 ("Exceed NFA_EE_MAX_AID_ENTRIES:%d", max_aid_entries);
#else
NFA_TRACE_ERROR1 ("Exceed NFA_EE_MAX_AID_ENTRIES:%d", NFA_EE_MAX_AID_ENTRIES);
@@ -983,9 +1020,17 @@
for (xx = 0; xx < NFA_EE_MAX_EE_SUPPORTED; xx++, p_cb++)
{
memset(&p_cb->aid_cfg[0],0x00, sizeof(p_cb->aid_cfg));
- memset(&p_cb->aid_len[0], 0x00, sizeof(p_cb->aid_len));
- memset(&p_cb->aid_pwr_cfg[0], 0x00, sizeof(p_cb->aid_pwr_cfg));
- memset(&p_cb->aid_rt_info[0], 0x00, sizeof(p_cb->aid_rt_info));
+
+#if((NXP_EXTNS == TRUE) && (((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE)))
+ memset(&p_cb->aid_len[0], 0x00, max_aid_entries);
+ memset(&p_cb->aid_pwr_cfg[0], 0x00, max_aid_entries);
+ memset(&p_cb->aid_rt_info[0], 0x00, max_aid_entries);
+#else
+ memset(&p_cb->aid_len[0], 0x00, NFA_EE_MAX_AID_ENTRIES);
+ memset(&p_cb->aid_pwr_cfg[0], 0x00, NFA_EE_MAX_AID_ENTRIES);
+ memset(&p_cb->aid_rt_info[0], 0x00, NFA_EE_MAX_AID_ENTRIES);
+#endif
+
p_cb->aid_entries = 0;
nfa_ee_cb.ee_cfged |= nfa_ee_ecb_to_mask(p_cb);
}
@@ -993,9 +1038,16 @@
tNFA_EE_ECB *p_ecb = &nfa_ee_cb.ecb[NFA_EE_CB_4_DH];
memset(&p_ecb->aid_cfg[0],0x00, sizeof(p_ecb->aid_cfg));
- memset(&p_ecb->aid_len[0], 0x00, sizeof(p_ecb->aid_len));
- memset(&p_ecb->aid_pwr_cfg[0], 0x00, sizeof(p_ecb->aid_pwr_cfg));
- memset(&p_ecb->aid_rt_info[0], 0x00, sizeof(p_ecb->aid_rt_info));
+
+#if((NXP_EXTNS == TRUE) && (((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE)))
+ memset(&p_ecb->aid_len[0], 0x00, max_aid_entries);
+ memset(&p_ecb->aid_pwr_cfg[0], 0x00, max_aid_entries);
+ memset(&p_ecb->aid_rt_info[0], 0x00, max_aid_entries);
+#else
+ memset(&p_ecb->aid_len[0], 0x00, NFA_EE_MAX_AID_ENTRIES);
+ memset(&p_ecb->aid_pwr_cfg[0], 0x00, NFA_EE_MAX_AID_ENTRIES);
+ memset(&p_ecb->aid_rt_info[0], 0x00, NFA_EE_MAX_AID_ENTRIES);
+#endif
p_ecb->aid_entries = 0;
p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_AID;
nfa_ee_cb.ee_cfged |= nfa_ee_ecb_to_mask(p_ecb);
@@ -1022,7 +1074,7 @@
{
tNFA_EE_CBACK_DATA evt_data = {0};
UINT16 total_size = NFC_GetLmrtSize();
-
+ (void)p_data;
evt_data.size = total_size - nfa_ee_total_lmrt_size();
NFA_TRACE_DEBUG2 ("nfa_ee_api_lmrt_size total size:%d remaining size:%d", total_size, evt_data.size);
@@ -1126,12 +1178,12 @@
}
else
{
- nfa_ee_report_event( p_cb->p_ee_cback, NFA_EE_NO_MEM_ERR_EVT, (tNFA_EE_CBACK_DATA *)&status);
+ nfa_ee_report_event( p_cb->p_ee_cback, NFA_EE_NO_MEM_ERR_EVT, (void *)&status);
}
}
else
{
- nfa_ee_report_event( p_cb->p_ee_cback, NFA_EE_NO_CB_ERR_EVT, (tNFA_EE_CBACK_DATA *)&status);
+ nfa_ee_report_event( p_cb->p_ee_cback, NFA_EE_NO_CB_ERR_EVT, (void *)&status);
}
}
@@ -1661,7 +1713,7 @@
}
nfa_ee_build_discover_req_evt (&evt_data);
- nfa_ee_report_event(NULL, NFA_EE_DISCOVER_REQ_EVT, (tNFA_EE_CBACK_DATA *)&evt_data);
+ nfa_ee_report_event(NULL, NFA_EE_DISCOVER_REQ_EVT, (void *)&evt_data);
}
/*******************************************************************************
@@ -1694,19 +1746,21 @@
#endif
if (p_rsp->status == NFA_STATUS_OK)
{
-
if (p_rsp->mode == NFA_EE_MD_ACTIVATE)
{
- p_cb->ee_status = NFC_NFCEE_STATUS_ACTIVE;
+#if(NXP_EXTNS == TRUE)
+ if (p_cb->ee_status != NFC_NFCEE_STATUS_REMOVED)
+#endif
+ p_cb->ee_status = NFC_NFCEE_STATUS_ACTIVE;
}
else
{
#if(NXP_EXTNS == TRUE)
- /* Do not update routing table on secure element enable/disable. */
+ /* Do not update routing table on secure element enable/disable. */
#else
if (p_cb->tech_switch_on | p_cb->tech_switch_off | p_cb->tech_battery_off |
- p_cb->proto_switch_on| p_cb->proto_switch_off| p_cb->proto_battery_off |
- p_cb->aid_entries)
+ p_cb->proto_switch_on| p_cb->proto_switch_off| p_cb->proto_battery_off |
+ p_cb->aid_entries)
{
/* this NFCEE still has configuration when deactivated. clear the configuration */
nfa_ee_cb.ee_cfged &= ~nfa_ee_ecb_to_mask(p_cb);
@@ -1717,7 +1771,10 @@
p_cb->proto_switch_on = p_cb->proto_switch_off= p_cb->proto_battery_off = 0;
p_cb->aid_entries = 0;
#endif
- p_cb->ee_status = NFC_NFCEE_STATUS_INACTIVE;
+#if(NXP_EXTNS == TRUE)
+ if (p_cb->ee_status != NFC_NFCEE_STATUS_REMOVED)
+#endif
+ p_cb->ee_status = NFC_NFCEE_STATUS_INACTIVE;
}
}
NFA_TRACE_DEBUG4 ("status:%d ecb_flags :0x%02x ee_cfged:0x%02x ee_status:%d",
@@ -1744,7 +1801,7 @@
mode_set.ee_handle = (tNFA_HANDLE)p_rsp->nfcee_id | NFA_HANDLE_GROUP_EE;
mode_set.ee_status = p_cb->ee_status;
- nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_MODE_SET_EVT, (tNFA_EE_CBACK_DATA *)&mode_set);
+ nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_MODE_SET_EVT, (void *)&mode_set);
if ((p_cb->ee_status == NFC_NFCEE_STATUS_INACTIVE)
|| (p_cb->ee_status == NFC_NFCEE_STATUS_ACTIVE))
@@ -1934,7 +1991,7 @@
nfa_ee_ce_p61_active = 0x01;
}
#endif
- nfa_ee_report_event(NULL, NFA_EE_ACTION_EVT, (tNFA_EE_CBACK_DATA *)&evt_data);
+ nfa_ee_report_event(NULL, NFA_EE_ACTION_EVT, (void *)&evt_data);
}
#if(NXP_EXTNS == TRUE)
@@ -2160,7 +2217,7 @@
NFA_TECHNOLOGY_MASK_B_PRIME
};
- NFA_TRACE_DEBUG1("nfa_ee_get_tech_route(): %d", power_state);
+ NFA_TRACE_DEBUG1("nfa_ee_get_tech_route(): power state : %d", power_state);
for (xx = 0; xx < NFA_EE_MAX_TECH_ROUTE; xx++)
{
@@ -2188,7 +2245,7 @@
}
}
}
- NFA_TRACE_DEBUG4("0x%x, 0x%x, 0x%x, 0x%x", p_handles[0], p_handles[1], p_handles[2], p_handles[3]);
+ NFA_TRACE_DEBUG4("TechA route: 0x%x, TechB route: 0x%x, TechF route: 0x%x, TechB' route: 0x%x", p_handles[0], p_handles[1], p_handles[2], p_handles[3]);
}
/*******************************************************************************
@@ -2688,6 +2745,7 @@
{
if (nfa_ee_cb.ee_cfg_sts & NFA_EE_STS_CHANGED)
{
+ NFA_TRACE_DEBUG1 ("%s:Routing table dirty, update required...",__FUNCTION__);
needed = TRUE;
}
else
@@ -2699,6 +2757,7 @@
NFA_TRACE_DEBUG3("%d: ecb_flags : 0x%02x, mask: 0x%02x", xx, p_cb->ecb_flags , mask);
if ((p_cb->ecb_flags ) && (nfa_ee_cb.ee_cfged & mask))
{
+ NFA_TRACE_DEBUG1 ("%s:Routing table dirty, update required...",__FUNCTION__);
needed = TRUE;
break;
}
@@ -2725,6 +2784,7 @@
void nfa_ee_rout_timeout(tNFA_EE_MSG *p_data)
{
UINT8 ee_cfged = nfa_ee_cb.ee_cfged;
+ (void)p_data;
NFA_TRACE_DEBUG0("nfa_ee_rout_timeout()");
if (nfa_ee_need_recfg())
@@ -2759,6 +2819,8 @@
*******************************************************************************/
void nfa_ee_discv_timeout(tNFA_EE_MSG *p_data)
{
+ (void)p_data;
+
NFC_NfceeDiscover(FALSE);
if (nfa_ee_cb.p_enable_cback)
(*nfa_ee_cb.p_enable_cback)(NFA_EE_DISC_STS_OFF);
@@ -2788,8 +2850,9 @@
#if(NXP_EXTNS == TRUE)
tNFA_EE_CBACK_DATA evt_data = {0};
#endif
+ (void)p_data;
-#if((NXP_EXTNS == TRUE) && (!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if((NXP_EXTNS == TRUE) && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
NFA_TRACE_DEBUG1("max supported routing table size: %d", max_routing_table_size);
/* update routing table: DH and the activated NFCEEs */
p = (UINT8 *)GKI_getbuf(max_routing_table_size);
@@ -2844,7 +2907,7 @@
{
more = FALSE;
}
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
find_and_resolve_tech_conflict();
#endif
/* add the routing for DH first */
@@ -2901,7 +2964,7 @@
}
-#if(NFC_NXP_CHIP_TYPE != PN547C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
/*******************************************************************************
**
** Function find_and_resolve_tech_conflict
@@ -2917,7 +2980,7 @@
int yy,xx;
tNFA_EE_ECB *p_cb = nfa_ee_cb.ecb;
UINT8 techA_found=0, techF_found=0;
- UINT8 techA_ee, techF_ee;
+ UINT8 techA_ee=0, techF_ee=0;
unsigned long preferred_se = 0x01;
BOOLEAN conflict = FALSE;
UINT8 tech_to_rm, ee_from_rm;
@@ -3080,7 +3143,7 @@
NFA_TRACE_DEBUG0 ("nfa_ee_lmrt_size");
int len;
len = nfa_all_ee_find_total_aid_len() + 2 /* tag/len */ + 2 /*route/power state*/;
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
return len < max_aid_config_length?len:max_aid_config_length;
#else
return len < NFA_EE_MAX_AID_CFG_LEN?len:NFA_EE_MAX_AID_CFG_LEN;
@@ -3103,7 +3166,7 @@
}
return status;
}
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
/*******************************************************************************
**
** Function nfa_ee_find_max_aid_config_length
diff --git a/src/nfa/ee/nfa_ee_api.c b/src/nfa/ee/nfa_ee_api.c
index 78b318b..92ce48d 100755
--- a/src/nfa/ee/nfa_ee_api.c
+++ b/src/nfa/ee/nfa_ee_api.c
@@ -660,7 +660,7 @@
*******************************************************************************/
UINT16 NFA_GetAidTableSize()
{
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
return nfa_ee_api_get_max_aid_config_length();
#else
return NFA_EE_MAX_AID_CFG_LEN;
@@ -680,7 +680,7 @@
UINT16 NFA_GetRemainingAidTableSize()
{
UINT16 size = 0;
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
size = nfa_ee_api_get_max_aid_config_length() - nfa_ee_lmrt_size();
#else
size = NFA_EE_MAX_AID_CFG_LEN - nfa_ee_lmrt_size();
diff --git a/src/nfa/ee/nfa_ee_main.c b/src/nfa/ee/nfa_ee_main.c
index b029506..62beeab 100755
--- a/src/nfa/ee/nfa_ee_main.c
+++ b/src/nfa/ee/nfa_ee_main.c
@@ -222,7 +222,7 @@
rsp.nfcee_id = p_cb->nfcee_id;
rsp.status = NFA_STATUS_OK;
ee_msg.p_data = &rsp;
- nfa_ee_nci_mode_set_rsp ((tNFA_EE_MSG *) &ee_msg);
+ nfa_ee_nci_mode_set_rsp ((void *) &ee_msg);
}
}
}
@@ -330,7 +330,7 @@
{
nfa_sys_stop_timer (&nfa_ee_cb.discv_timer);
data.hdr.event = NFA_EE_DISCV_TIMEOUT_EVT;
- nfa_ee_evt_hdlr((BT_HDR *)&data);
+ nfa_ee_evt_hdlr((void *)&data);
}
}
}
@@ -350,7 +350,6 @@
{
tNFA_EE_INT_EVT int_event=0;
tNFA_EE_NCI_WAIT_RSP cbk;
- BT_HDR *p_hdr;
switch (event)
{
@@ -383,11 +382,10 @@
NFA_TRACE_DEBUG2 ("nfa_ee_proc_evt: event=0x%02x int_event:0x%x", event, int_event);
if (int_event)
{
- p_hdr = (BT_HDR *) &cbk;
cbk.hdr.event = int_event;
cbk.p_data = p_data;
- nfa_ee_evt_hdlr (p_hdr);
+ nfa_ee_evt_hdlr ((void *) &cbk);
}
}
diff --git a/src/nfa/hci/nfa_hci_act.c b/src/nfa/hci/nfa_hci_act.c
index f77c48b..4fb13f0 100755
--- a/src/nfa/hci/nfa_hci_act.c
+++ b/src/nfa/hci/nfa_hci_act.c
@@ -1744,7 +1744,7 @@
{
tNFA_HCI_EVT_DATA evt_data;
tNFA_HCI_API_GET_HOST_LIST *p_msg;
-
+ (void)p_data;
if (nfa_hci_cb.inst != NFA_HCI_EVT_HOT_PLUG)
{
NFA_TRACE_ERROR0 ("nfa_hci_handle_admin_gate_evt - Unknown event on ADMIN Pipe");
@@ -2002,6 +2002,7 @@
{
tNFA_HCI_EVT_DATA evt_data;
tNFA_HANDLE app_handle = nfa_hciu_get_pipe_owner (p_pipe->pipe_id);
+ (void)p_gate;
switch (nfa_hci_cb.inst)
{
@@ -2072,6 +2073,7 @@
{
tNFA_HCI_EVT_DATA evt_data;
tNFA_STATUS status = NFA_STATUS_OK;
+ (void)p_gate;
if (nfa_hci_cb.inst != NFA_HCI_ANY_OK)
status = NFA_STATUS_FAILED;
diff --git a/src/nfa/hci/nfa_hci_ci.c b/src/nfa/hci/nfa_hci_ci.c
index 808dff0..fbf9190 100755
--- a/src/nfa/hci/nfa_hci_ci.c
+++ b/src/nfa/hci/nfa_hci_ci.c
@@ -70,7 +70,7 @@
void nfa_nv_ci_write (tNFA_NV_CO_STATUS status)
{
tNFA_HCI_EVENT_DATA *p_msg;
-
+ (void)status;
if ((p_msg = (tNFA_HCI_EVENT_DATA *) GKI_getbuf (sizeof (tNFA_HCI_EVENT_DATA))) != NULL)
{
p_msg->nv_write.hdr.event = NFA_HCI_RSP_NV_WRITE_EVT;
diff --git a/src/nfa/hci/nfa_hci_main.c b/src/nfa/hci/nfa_hci_main.c
index 7369856..d79ff9d 100755
--- a/src/nfa/hci/nfa_hci_main.c
+++ b/src/nfa/hci/nfa_hci_main.c
@@ -525,6 +525,7 @@
*******************************************************************************/
void nfa_hci_dh_startup_complete (void)
{
+ int ee_entry_index = 0;
//NFC-INIT MACH
#if(NXP_EXTNS == TRUE)
if(nfa_hci_cb.ee_disable_disc)
@@ -546,8 +547,35 @@
if (nfa_hci_cb.hci_state == NFA_HCI_STATE_STARTUP)
{
nfa_hci_cb.hci_state = NFA_HCI_STATE_WAIT_NETWK_ENABLE;
- /* Wait for EE Discovery to complete */
- nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, NFA_EE_DISCV_TIMEOUT_VAL);
+ /* Check if all EEs are discovered already*/
+ if(nfa_ee_cb.cur_ee == nfa_ee_max_ee_cfg)
+ {
+ while(ee_entry_index < nfa_ee_max_ee_cfg)
+ {
+ /*Check if host discovered is inactive*/
+ if((nfa_ee_cb.ecb[ee_entry_index].nfcee_id == NFA_EE_INTERFACE_HCI_ACCESS)&&(nfa_ee_cb.ecb[ee_entry_index].ee_status == NFA_EE_STATUS_INACTIVE))
+ {
+ break;
+ }
+ ee_entry_index++;
+ }
+ if (ee_entry_index == nfa_ee_max_ee_cfg)
+ {
+ 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);
+ }
+ else
+ {
+ /* Wait for EE Discovery to complete */
+ nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, NFA_EE_DISCV_TIMEOUT_VAL);
+ }
+ }
+ else
+ {
+ /* Wait for EE Discovery to complete */
+ nfa_sys_start_timer (&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT, NFA_EE_DISCV_TIMEOUT_VAL);
+ }
}
else if (nfa_hci_cb.hci_state == NFA_HCI_STATE_RESTORE)
{
@@ -601,9 +629,22 @@
nfa_hciu_send_to_all_apps (NFA_HCI_INIT_EVT, &evt_data);
nfa_sys_cback_notify_enable_complete (NFA_ID_HCI);
}
-
+#if((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
+ if (status == NFA_STATUS_OK){
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
+ NFA_TRACE_EVENT0 ("hci_state = NFA_HCI_STATE_IDLE");
+ if((nfa_sys_cb.enable_cplt_flags == nfa_sys_cb.enable_cplt_mask)
+ &&(!(nfa_sys_cb.p_enable_cback))
+ )
+ {
+ if((nfa_dm_cb.p_dm_cback))
+ (*nfa_dm_cb.p_dm_cback)(NFA_DM_EE_HCI_ENABLE, NULL);
+ }
+ }
+#else
if (status == NFA_STATUS_OK)
nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
+#endif
else
nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
@@ -806,6 +847,10 @@
nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
/* deregister message handler on NFA SYS */
nfa_sys_deregister (NFA_ID_HCI);
+#if((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
+ if(nfa_dm_cb.p_dm_cback)
+ (*nfa_dm_cb.p_dm_cback)(NFA_DM_EE_HCI_DISABLE, NULL);
+#endif
}
if ((event != NFC_DATA_CEVT) || (p_pkt == NULL))
@@ -1178,7 +1223,7 @@
tNFA_HCI_EVT evt = 0;
tNFA_HCI_EVT_DATA evt_data;
UINT8 delete_pipe;
-
+ (void)p_evt_data;
NFA_TRACE_EVENT2 ("nfa_hci_rsp_timeout () State: %u Cmd: %u", nfa_hci_cb.hci_state, nfa_hci_cb.cmd_sent);
evt_data.status = NFA_STATUS_FAILED;
@@ -1553,7 +1598,7 @@
{
tNFC_DATA_CEVT xx;
xx.p_data = p_msg;
- nfa_hci_conn_cback (0, NFC_DATA_CEVT, (tNFC_CONN *)&xx);
+ nfa_hci_conn_cback (0, NFC_DATA_CEVT, (void *)&xx);
return FALSE;
}
}
@@ -1574,7 +1619,6 @@
nfa_hci_cb.nv_write_needed = FALSE;
nfa_nv_co_write ((UINT8 *)&nfa_hci_cb.cfg, sizeof (nfa_hci_cb.cfg),DH_NV_BLOCK);
}
-
return FALSE;
}
@@ -1584,6 +1628,7 @@
NFA_TRACE_DEBUG0 ("nfa_hci_release_transcieve (); Release ongoing transcieve");
if(nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_RSP)
{
+
nfa_sys_stop_timer(&nfa_hci_cb.timer);
nfa_hci_rsp_timeout(NULL);
}
diff --git a/src/nfa/hci/nfa_hci_utils.c b/src/nfa/hci/nfa_hci_utils.c
index c0dadf4..7b8f348 100755
--- a/src/nfa/hci/nfa_hci_utils.c
+++ b/src/nfa/hci/nfa_hci_utils.c
@@ -1435,6 +1435,7 @@
{
UINT8 *p = (UINT8 *) (p_buf + 1) + p_buf->offset;
static UINT8 next_pipe = 0x10;
+ (void)pipe;
if (type == NFA_HCI_COMMAND_TYPE)
{
diff --git a/src/nfa/include/nfa_api.h b/src/nfa/include/nfa_api.h
index 43057e2..1c7236e 100644
--- a/src/nfa/include/nfa_api.h
+++ b/src/nfa/include/nfa_api.h
@@ -142,8 +142,8 @@
#define NFA_PROTOCOL_ISO15693 NFC_PROTOCOL_15693
#define NFA_PROTOCOL_B_PRIME NFC_PROTOCOL_B_PRIME
#define NFA_PROTOCOL_KOVIO NFC_PROTOCOL_KOVIO
-#if (NXP_EXTNS == TRUE)
#define NFA_PROTOCOL_MIFARE NFC_PROTOCOL_MIFARE
+#if (NXP_EXTNS == TRUE)
#define NFA_PROTOCOL_T3BT NFC_PROTOCOL_T3BT
#define NFA_NORMAL_BOOT_MODE NFC_NORMAL_BOOT_MODE
#define NFA_FAST_BOOT_MODE NFC_FAST_BOOT_MODE
@@ -177,6 +177,11 @@
#define NFA_DM_EMVCO_PCD_COLLISION_EVT 8 /* Collision event in case of EMV-CO Profile (Nxp)*/
#define NFA_DM_SET_ROUTE_CONFIG_REVT 9 /* Status of EE Route config CMD (Nxp)*/
#define NFA_DM_GET_ROUTE_CONFIG_REVT 10 /* Result of NFA_GetRouting */
+
+#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
+#define NFA_DM_EE_HCI_DISABLE 11 /*Status when EE HCI subsystems disabled*/
+#define NFA_DM_EE_HCI_ENABLE 12 /*Status when EE HCI susbsystems enabled*/
+#endif
/* Reader over SWP Events*/
#define NFA_RD_SWP_READER_REQUESTED 0
#define NFA_RD_SWP_READER_START 1
@@ -667,9 +672,7 @@
#define NFA_INTERFACE_FRAME NFC_INTERFACE_FRAME
#define NFA_INTERFACE_ISO_DEP NFC_INTERFACE_ISO_DEP
#define NFA_INTERFACE_NFC_DEP NFC_INTERFACE_NFC_DEP
-#if (NXP_EXTNS == TRUE)
#define NFA_INTERFACE_MIFARE NFC_INTERFACE_MIFARE
-#endif
typedef tNFC_INTF_TYPE tNFA_INTF_TYPE;
/*******************************************************************************
@@ -1396,6 +1399,10 @@
**
*******************************************************************************/
NFC_API extern tNFA_MW_VERSION NFA_GetMwVersion ();
+#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();
+#endif
#endif
#ifdef __cplusplus
}
diff --git a/src/nfa/int/nfa_dm_int.h b/src/nfa/int/nfa_dm_int.h
index afe4134..9825a66 100755
--- a/src/nfa/int/nfa_dm_int.h
+++ b/src/nfa/int/nfa_dm_int.h
@@ -486,6 +486,8 @@
UINT8 atr_req_gen_bytes_len;
UINT8 atr_res_gen_bytes[NCI_MAX_GEN_BYTES_LEN];
UINT8 atr_res_gen_bytes_len;
+
+ UINT8 pf_rc[NCI_PARAM_LEN_PF_RC];
} tNFA_DM_PARAMS;
/*
@@ -569,7 +571,7 @@
extern UINT8 nfa_ee_max_ee_cfg;
extern tNCI_DISCOVER_MAPS *p_nfa_dm_interface_mapping;
extern UINT8 nfa_dm_num_dm_interface_mapping;
-
+extern BOOLEAN nfa_poll_bail_out_mode;
#if(NXP_EXTNS == TRUE)
void nfa_dm_poll_disc_cback_dta_wrapper(tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER *p_data);
extern unsigned char appl_dta_mode_flag;
@@ -633,6 +635,7 @@
BOOLEAN nfa_dm_act_reg_vsc (tNFA_DM_MSG *p_data);
BOOLEAN nfa_dm_act_send_vsc (tNFA_DM_MSG *p_data);
#if(NXP_EXTNS == TRUE)
+void nfa_dm_p2p_prio_logic_disable ();
BOOLEAN nfa_dm_act_send_nxp(tNFA_DM_MSG *p_data);
UINT16 nfa_dm_act_get_rf_disc_duration ();
#endif
@@ -680,5 +683,7 @@
char *nfa_dm_nfc_revt_2_str (tNFC_RESPONSE_EVT event);
#endif
-
+#if((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
+tNFC_STATUS nfc_ncif_reset_nfcc();
+#endif
#endif /* NFA_DM_INT_H */
diff --git a/src/nfa/int/nfa_ee_int.h b/src/nfa/int/nfa_ee_int.h
index 2c2fa02..c94049e 100755
--- a/src/nfa/int/nfa_ee_int.h
+++ b/src/nfa/int/nfa_ee_int.h
@@ -122,7 +122,7 @@
};
typedef UINT8 tNFA_EE_CONN_ST;
#if(NXP_EXTNS == TRUE)
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
#define NFA_EE_ROUT_BUF_SIZE 720
#else
#define NFA_EE_ROUT_BUF_SIZE 200
@@ -141,10 +141,12 @@
#define NFA_EE_NUM_TECH 3
#if(NXP_EXTNS == TRUE)
+#define NFA_UICC_ID 0x02
+#define NFA_ESE_ID 0xC0
#define NFA_EE_BUFFER_FUTURE_EXT 15
#define NFA_EE_PROTO_ROUTE_ENTRY_SIZE 5
#define NFA_EE_TECH_ROUTE_ENTRY_SIZE 5
-#if(NFC_NXP_CHIP_TYPE == PN548C2)
+#if((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551))
/**
* Max Routing Table Size = 720
* After allocating size for Technology based routing and Protocol based routing,
@@ -216,23 +218,25 @@
* the aid_len is the total length of all the TLVs associated with this AID entry
*/
#if(NXP_EXTNS == TRUE)
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
UINT8 *aid_len; /* the actual lengths in aid_cfg */
UINT8 *aid_pwr_cfg; /* power configuration of this AID entry */
UINT8 *aid_rt_info; /* route/vs info for this AID entry */
UINT8 *aid_rt_loc; /* route location info for this AID entry */
+ UINT8 *aid_cfg; /* routing entries based on AID */
#else
UINT8 aid_rt_loc[NFA_EE_MAX_AID_ENTRIES];/* route location info for this AID entry */
UINT8 aid_len[NFA_EE_MAX_AID_ENTRIES];/* the actual lengths in aid_cfg */
UINT8 aid_pwr_cfg[NFA_EE_MAX_AID_ENTRIES];/* power configuration of this AID entry */
UINT8 aid_rt_info[NFA_EE_MAX_AID_ENTRIES];/* route/vs info for this AID entry */
+ UINT8 aid_cfg[NFA_EE_MAX_AID_CFG_LEN];/* routing entries based on AID */
#endif
#else
UINT8 aid_len[NFA_EE_MAX_AID_ENTRIES];/* the actual lengths in aid_cfg */
UINT8 aid_pwr_cfg[NFA_EE_MAX_AID_ENTRIES];/* power configuration of this AID entry */
UINT8 aid_rt_info[NFA_EE_MAX_AID_ENTRIES];/* route/vs info for this AID entry */
-#endif
UINT8 aid_cfg[NFA_EE_MAX_AID_CFG_LEN];/* routing entries based on AID */
+#endif
UINT8 aid_entries; /* The number of AID entries in aid_cfg */
UINT8 nfcee_id; /* ID for this NFCEE */
UINT8 ee_status; /* The NFCEE status */
diff --git a/src/nfa/p2p/nfa_p2p_act.c b/src/nfa/p2p/nfa_p2p_act.c
index f8817d3..087de60 100755
--- a/src/nfa/p2p/nfa_p2p_act.c
+++ b/src/nfa/p2p/nfa_p2p_act.c
@@ -1229,6 +1229,7 @@
*******************************************************************************/
BOOLEAN nfa_p2p_restart_rf_discovery (tNFA_P2P_MSG *p_msg)
{
+ (void)p_msg;
P2P_TRACE_DEBUG0 ("nfa_p2p_restart_rf_discovery ()");
nfa_dm_rf_deactivate (NFA_DEACTIVATE_TYPE_IDLE);
diff --git a/src/nfa/p2p/nfa_p2p_main.c b/src/nfa/p2p/nfa_p2p_main.c
index 2b743a3..dcb5fd2 100644
--- a/src/nfa/p2p/nfa_p2p_main.c
+++ b/src/nfa/p2p/nfa_p2p_main.c
@@ -202,6 +202,8 @@
*******************************************************************************/
static void nfa_p2p_update_active_listen_timeout_cback (TIMER_LIST_ENT *p_tle)
{
+ (void)p_tle;
+
NFA_TRACE_ERROR0 ("nfa_p2p_update_active_listen_timeout_cback()");
/* restore active listen mode */
@@ -329,7 +331,7 @@
llcp_activated.remote_wks = LLCP_GetRemoteWKS ();
llcp_activated.remote_version = LLCP_GetRemoteVersion ();
- nfa_dm_act_conn_cback_notify (NFA_LLCP_ACTIVATED_EVT, (tNFA_CONN_EVT_DATA *) &llcp_activated);
+ nfa_dm_act_conn_cback_notify (NFA_LLCP_ACTIVATED_EVT, (void *) &llcp_activated);
}
else if (event == LLCP_LINK_ACTIVATION_FAILED_EVT)
@@ -387,7 +389,7 @@
}
llcp_deactivated.reason = reason;
- nfa_dm_act_conn_cback_notify (NFA_LLCP_DEACTIVATED_EVT, (tNFA_CONN_EVT_DATA *)&llcp_deactivated);
+ nfa_dm_act_conn_cback_notify (NFA_LLCP_DEACTIVATED_EVT, (void *)&llcp_deactivated);
if (reason != LLCP_LINK_RF_LINK_LOSS_ERR) /* if NFC link is still up */
{
diff --git a/src/nfa/rw/nfa_rw_act.c b/src/nfa/rw/nfa_rw_act.c
index 2be337c..6e98fdb 100755
--- a/src/nfa/rw/nfa_rw_act.c
+++ b/src/nfa/rw/nfa_rw_act.c
@@ -223,7 +223,7 @@
static void nfa_rw_handle_ndef_detect(tRW_EVENT event, tRW_DATA *p_rw_data)
{
tNFA_CONN_EVT_DATA conn_evt_data;
-
+ (void)event;
NFA_TRACE_DEBUG3("NDEF Detection completed: cur_size=%i, max_size=%i, flags=0x%x",
p_rw_data->ndef.cur_size, p_rw_data->ndef.max_size, p_rw_data->ndef.flags);
@@ -312,9 +312,7 @@
conn_evt_data.ndef_detect.cur_size = 0;
conn_evt_data.ndef_detect.max_size = 0;
conn_evt_data.ndef_detect.flags = RW_NDEF_FL_UNKNOWN;
-#if(NXP_EXTNS == TRUE)
conn_evt_data.ndef_detect.status = NFA_STATUS_TIMEOUT;
-#endif
}
else
{
@@ -342,7 +340,7 @@
static void nfa_rw_handle_tlv_detect(tRW_EVENT event, tRW_DATA *p_rw_data)
{
tNFA_CONN_EVT_DATA conn_evt_data;
-
+ (void)event;
/* Set TLV detection state */
if (nfa_rw_cb.cur_op == NFA_RW_OP_SET_TAG_RO)
{
@@ -533,7 +531,7 @@
if (nfa_rw_cb.p_pending_msg->op_req.op == NFA_RW_OP_PRESENCE_CHECK)
{
/* Notify app of presence check status */
- nfa_dm_act_conn_cback_notify(NFA_PRESENCE_CHECK_EVT, (tNFA_CONN_EVT_DATA *)&status);
+ nfa_dm_act_conn_cback_notify(NFA_PRESENCE_CHECK_EVT, (void *)&status);
GKI_freebuf(nfa_rw_cb.p_pending_msg);
nfa_rw_cb.p_pending_msg = NULL;
}
@@ -565,7 +563,7 @@
else
{
/* Notify app of presence check status */
- nfa_dm_act_conn_cback_notify(NFA_PRESENCE_CHECK_EVT, (tNFA_CONN_EVT_DATA *)&status);
+ nfa_dm_act_conn_cback_notify(NFA_PRESENCE_CHECK_EVT, (void *)&status);
/* If in normal mode (not-exclusive RF mode) then deactivate the link if presence check failed */
if ((nfa_rw_cb.flags & NFA_RW_FL_NOT_EXCL_RF_MODE) && (status != NFC_STATUS_OK))
@@ -588,17 +586,14 @@
static void nfa_rw_handle_t1t_evt (tRW_EVENT event, tRW_DATA *p_rw_data)
{
tNFA_CONN_EVT_DATA conn_evt_data;
-#if(NXP_EXTNS == TRUE)
tNFA_TAG_PARAMS tag_params;
UINT8 *p_rid_rsp;
tNFA_STATUS activation_status;
-#endif
conn_evt_data.status = p_rw_data->data.status;
switch (event)
{
case RW_T1T_RID_EVT:
-#if(NXP_EXTNS == TRUE)
if(p_rw_data->data.p_data != NULL)
{
/* Assume the data is just the response byte sequence */
@@ -607,17 +602,23 @@
STREAM_TO_ARRAY (tag_params.t1t.hr, p_rid_rsp, T1T_HR_LEN);
/* Fetch UID0-3 from RID response message */
STREAM_TO_ARRAY (tag_params.t1t.uid, p_rid_rsp, T1T_CMD_UID_LEN);
+ GKI_freebuf (p_rw_data->data.p_data);
+ p_rw_data->data.p_data = NULL;
}
/* Command complete - perform cleanup, notify the app */
nfa_rw_command_complete();
if (p_rw_data->status == NFC_STATUS_TIMEOUT)
+ {
activation_status = NFA_STATUS_TIMEOUT;
+ }
else
+ {
activation_status = NFA_STATUS_OK;
+ }
nfa_dm_notify_activation_status(activation_status, &tag_params);
break;
-#endif
+
case RW_T1T_RALL_CPLT_EVT:
case RW_T1T_READ_CPLT_EVT:
case RW_T1T_RSEG_CPLT_EVT:
@@ -1060,7 +1061,7 @@
case RW_T4T_NDEF_DETECT_EVT : /* Result of NDEF detection procedure */
nfa_rw_handle_ndef_detect(event, p_rw_data);
break;
-#if(NXP_EXTNS == TRUE)
+
case RW_T4T_NDEF_FORMAT_CPLT_EVT:
/* Command complete - perform cleanup, notify the app */
nfa_rw_command_complete();
@@ -1071,7 +1072,7 @@
nfa_dm_act_conn_cback_notify(NFA_FORMAT_CPLT_EVT, &conn_evt_data);
break;
-
+#if(NXP_EXTNS == TRUE)
case RW_T3BT_RAW_READ_CPLT_EVT:
nfa_rw_command_complete();
nfa_dm_act_conn_cback_notify(NFA_ACTIVATED_EVT, &conn_evt_data);
@@ -1480,6 +1481,8 @@
#if(NXP_EXTNS == TRUE)
static void nfa_rw_handle_t3bt_evt (tRW_EVENT event, tRW_DATA *p_rw_data)
{
+ (void)p_rw_data;
+
//tNFC_ACTIVATE_DEVT *activate_ntf = (tNFC_ACTIVATE_DEVT*)nfa_dm_cb.p_activate_ntf;
NFA_TRACE_DEBUG0("nfa_rw_handle_t3bt_evt:");
@@ -1565,33 +1568,31 @@
tNFC_PROTOCOL protocol = nfa_rw_cb.protocol;
tNFC_STATUS status = NFC_STATUS_FAILED;
- switch (protocol)
+ if (NFC_PROTOCOL_T1T == protocol)
{
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ /* Type1Tag - NFC-A */
status = RW_T1tDetectNDef();
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ {
+ /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tDetectNDef(nfa_rw_cb.skip_dyn_locks);
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ {
+ /* Type3Tag - NFC-F */
status = RW_T3tDetectNDef();
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ { /* ISODEP/4A,4B- NFC-A or NFC-B */
status = RW_T4tDetectNDef();
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ { /* ISO 15693 */
status = RW_I93DetectNDef();
- break;
-
- default:
- break;
}
return(status);
@@ -1641,33 +1642,28 @@
}
nfa_rw_cb.ndef_rd_offset = 0;
- switch (protocol)
- {
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ if (NFC_PROTOCOL_T1T == protocol)
+ { /* Type1Tag - NFC-A */
status = RW_T1tReadNDef(nfa_rw_cb.p_ndef_buf,(UINT16)nfa_rw_cb.ndef_cur_size);
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ { /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tReadNDef(nfa_rw_cb.p_ndef_buf,(UINT16)nfa_rw_cb.ndef_cur_size);
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ { /* Type3Tag - NFC-F */
status = RW_T3tCheckNDef();
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ { /* ISODEP/4A,4B- NFC-A or NFC-B */
status = RW_T4tReadNDef();
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ { /* ISO 15693 */
status = RW_I93ReadNDef();
- break;
-
- default:
- break;
}
return(status);
}
@@ -1684,6 +1680,7 @@
static BOOLEAN nfa_rw_detect_ndef(tNFA_RW_MSG *p_data)
{
tNFA_CONN_EVT_DATA conn_evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0("nfa_rw_detect_ndef");
if ((conn_evt_data.ndef_detect.status = nfa_rw_start_ndef_detection()) != NFC_STATUS_OK)
@@ -1727,34 +1724,28 @@
}
else
{
- switch (protocol)
- {
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ if (NFC_PROTOCOL_T1T == protocol)
+ { /* Type1Tag - NFC-A */
status = RW_T1tWriteNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
-
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ { /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tWriteNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ { /* Type3Tag - NFC-F */
status = RW_T3tUpdateNDef(nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ { /* ISODEP/4A,4B- NFC-A or NFC-B */
status = RW_T4tUpdateNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ { /* ISO 15693 */
status = RW_I93UpdateNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- default:
- break;
}
}
@@ -1774,6 +1765,7 @@
{
tNFA_STATUS status = NFA_STATUS_OK;
tNFA_CONN_EVT_DATA conn_evt_data;
+ (void)p_data;
NFA_TRACE_DEBUG0("nfa_rw_read_ndef");
@@ -1897,17 +1889,30 @@
#if(NXP_EXTNS == TRUE)
UINT16 iso_15693_max_presence_check_timeout = NFA_DM_ISO_15693_MAX_PRESENCE_CHECK_TIMEOUT + RW_I93_MAX_RSP_TIMEOUT;
#endif
- switch (protocol)
- {
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ if (NFC_PROTOCOL_T1T == protocol)
+ { /* Type1Tag - NFC-A */
status = RW_T1tPresenceCheck();
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ {
+ /* If T2T NFC-Forum, then let RW handle presence check */
+ if (sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
+ {
+ /* Type 2 tag have not sent NACK after activation */
+ status = RW_T2tPresenceCheck();
+ }
+ else
+ {
+ /* Will fall back to deactivate/reactivate */
+ unsupported = TRUE;
+ }
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ { /* Type3Tag - NFC-F */
status = RW_T3tPresenceCheck();
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ { /* ISODEP/4A,4B- NFC-A or NFC-B */
if (p_data)
{
op_param = p_data->op_req.params.option;
@@ -1973,32 +1978,18 @@
unsupported = TRUE;
}
-
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ { /* ISO 15693 */
status = RW_I93PresenceCheck();
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
- /* If T2T NFC-Forum, then let RW handle presence check */
- if (sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
- {
- /* Type 2 tag have not sent NACK after activation */
- status = RW_T2tPresenceCheck();
- }
- else
- {
- unsupported = TRUE;
- }
- break;
-
- default:
+ }
+ else
+ {
/* Protocol unsupported by RW module... */
unsupported = TRUE;
- break;
}
+
if (unsupported)
{
if (nfa_rw_cb.activated_tech_mode == NFC_DISCOVERY_TYPE_POLL_KOVIO)
@@ -2044,6 +2035,8 @@
*******************************************************************************/
BOOLEAN nfa_rw_presence_check_tick(tNFA_RW_MSG *p_data)
{
+ (void)p_data;
+
/* Store the current operation */
nfa_rw_cb.cur_op = NFA_RW_OP_PRESENCE_CHECK;
nfa_rw_cb.flags |= NFA_RW_FL_AUTO_PRESENCE_CHECK_BUSY;
@@ -2066,6 +2059,8 @@
*******************************************************************************/
BOOLEAN nfa_rw_presence_check_timeout (tNFA_RW_MSG *p_data)
{
+ (void)p_data;
+
nfa_rw_handle_presence_check_rsp(NFC_STATUS_FAILED);
return TRUE;
}
@@ -2083,6 +2078,7 @@
{
tNFC_PROTOCOL protocol = nfa_rw_cb.protocol;
tNFC_STATUS status = NFC_STATUS_FAILED;
+ (void)p_data;
if (protocol == NFC_PROTOCOL_T1T)
{
@@ -2101,13 +2097,11 @@
{
status = RW_I93FormatNDef();
}
-
-#if(NXP_EXTNS == TRUE)
else if (protocol == NFC_PROTOCOL_ISO_DEP)
{
status = RW_T4tFormatNDef();
}
-#endif
+
/* If unable to format NDEF, notify the app */
if (status != NFC_STATUS_OK)
nfa_rw_error_cleanup (NFA_FORMAT_CPLT_EVT);
@@ -2124,6 +2118,8 @@
*******************************************************************************/
static BOOLEAN nfa_rw_detect_tlv (tNFA_RW_MSG *p_data, UINT8 tlv)
{
+ (void)p_data;
+
NFA_TRACE_DEBUG0("nfa_rw_detect_tlv");
switch (nfa_rw_cb.protocol)
@@ -2164,9 +2160,8 @@
NFA_TRACE_DEBUG0 ("nfa_rw_config_tag_ro ()");
- switch (protocol)
- {
- case NFC_PROTOCOL_T1T:
+ if (NFC_PROTOCOL_T1T == protocol)
+ { /* Type1Tag - NFC-A */
if( (nfa_rw_cb.tlv_st == NFA_RW_TLV_DETECT_ST_OP_NOT_STARTED)
||(nfa_rw_cb.tlv_st == NFA_RW_TLV_DETECT_ST_MEM_TLV_OP_COMPLETE) )
{
@@ -2177,30 +2172,28 @@
{
status = RW_T1tSetTagReadOnly(b_hard_lock);
}
- break;
-
- case NFC_PROTOCOL_T2T:
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ { /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tSetTagReadOnly(b_hard_lock);
}
- break;
-
- case NFC_PROTOCOL_T3T:
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ {
+ /* Type3Tag - NFC-F */
status = RW_T3tSetReadOnly(b_hard_lock);
- break;
-
- case NFC_PROTOCOL_ISO_DEP:
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
status = RW_T4tSetNDefReadOnly();
- break;
-
- case NFC_PROTOCOL_15693:
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ {
+ /* ISO 15693 */
status = RW_I93SetTagReadOnly();
- break;
-
- default:
- break;
-
}
if (status == NFC_STATUS_OK)
@@ -2226,6 +2219,8 @@
*******************************************************************************/
static BOOLEAN nfa_rw_t1t_rid(tNFA_RW_MSG *p_data)
{
+ (void)p_data;
+
if (RW_T1tRid () != NFC_STATUS_OK)
nfa_rw_error_cleanup (NFA_READ_CPLT_EVT);
@@ -2243,6 +2238,8 @@
*******************************************************************************/
static BOOLEAN nfa_rw_t1t_rall(tNFA_RW_MSG *p_data)
{
+ (void)p_data;
+
if (RW_T1tReadAll() != NFC_STATUS_OK)
nfa_rw_error_cleanup (NFA_READ_CPLT_EVT);
@@ -2497,6 +2494,7 @@
{
tNFC_STATUS status;
tNFA_TAG_PARAMS tag_params;
+ (void)p_data;
status = RW_T3tGetSystemCodes();
@@ -2517,6 +2515,7 @@
static BOOLEAN nfa_rw_t3bt_get_pupi(tNFA_RW_MSG *p_data)
{
tNFC_STATUS status;
+ (void)p_data;
status = RW_T3BtGetPupiID();
@@ -2676,6 +2675,7 @@
{
BT_HDR *p_msg;
tNFA_CONN_EVT_DATA evt_data;
+ (void)conn_id;
NFA_TRACE_DEBUG1 ("nfa_rw_raw_mode_data_cback(): event = 0x%X", event);
@@ -2819,25 +2819,22 @@
}
/* Perform protocol-specific actions */
- switch (nfa_rw_cb.protocol)
+ if (NFC_PROTOCOL_T1T == nfa_rw_cb.protocol)
{
- case NFC_PROTOCOL_T1T:
/* Retrieve HR and UID fields from activation notification */
memcpy (tag_params.t1t.hr, p_activate_params->rf_tech_param.param.pa.hr, NFA_T1T_HR_LEN);
memcpy (tag_params.t1t.uid, p_activate_params->rf_tech_param.param.pa.nfcid1, p_activate_params->rf_tech_param.param.pa.nfcid1_len);
-#if(NXP_EXTNS == TRUE)
msg.op = NFA_RW_OP_T1T_RID;
- nfa_rw_handle_op_req((tNFA_RW_MSG *)&msg);
+ nfa_rw_handle_op_req((void *)&msg);
activate_notify = FALSE; /* Delay notifying upper layer of NFA_ACTIVATED_EVT until HR0/HR1 is received */
-#endif
- break;
-
- case NFC_PROTOCOL_T2T:
+ }
+ else if (NFC_PROTOCOL_T2T == nfa_rw_cb.protocol)
+ {
/* Retrieve UID fields from activation notification */
memcpy (tag_params.t2t.uid, p_activate_params->rf_tech_param.param.pa.nfcid1, p_activate_params->rf_tech_param.param.pa.nfcid1_len);
- break;
-
- case NFC_PROTOCOL_T3T:
+ }
+ else if (NFC_PROTOCOL_T3T == nfa_rw_cb.protocol)
+ {
#if(NXP_EXTNS == TRUE)
if(appl_dta_mode_flag)
{
@@ -2851,21 +2848,23 @@
activate_notify = FALSE;
/* Issue command to get Felica system codes */
msg.op = NFA_RW_OP_T3T_GET_SYSTEM_CODES;
- nfa_rw_handle_op_req((tNFA_RW_MSG *)&msg);
+ nfa_rw_handle_op_req((void *)&msg);
#if(NXP_EXTNS == TRUE)
}
#endif
- break;
-
+ }
#if(NXP_EXTNS == TRUE)
- case NFC_PROTOCOL_T3BT:
+ else if (NFC_PROTOCOL_T3BT == nfa_rw_cb.protocol)
+ {
+
+
activate_notify = FALSE; /* Delay notifying upper layer of NFA_ACTIVATED_EVT until system codes are retrieved */
msg.op = NFA_RW_OP_T3BT_PUPI;
- nfa_rw_handle_op_req((tNFA_RW_MSG *)&msg);
- break;
+ nfa_rw_handle_op_req((void *)&msg);
+ }
#endif
-
- case NFC_PROTOCOL_15693:
+ else if (NFC_PROTOCOL_15693 == nfa_rw_cb.protocol)
+ {
/* Delay notifying upper layer of NFA_ACTIVATED_EVT to retrieve additional tag infomation */
nfa_rw_cb.flags |= NFA_RW_FL_ACTIVATION_NTF_PENDING;
activate_notify = FALSE;
@@ -2932,12 +2931,7 @@
nfa_rw_cb.i93_num_block = 0;
}
}
- break;
-
- default:
- /* No action needed for other protocols */
- break;
}
/* Notify upper layer of NFA_ACTIVATED_EVT if needed, and start presence check timer */
@@ -2963,6 +2957,8 @@
*******************************************************************************/
BOOLEAN nfa_rw_deactivate_ntf(tNFA_RW_MSG *p_data)
{
+ (void)p_data;
+
/* Clear the activated flag */
nfa_rw_cb.flags &= ~NFA_RW_FL_ACTIVATED;
diff --git a/src/nfa/rw/nfa_rw_main.c b/src/nfa/rw/nfa_rw_main.c
index 2176c08..49055f4 100755
--- a/src/nfa/rw/nfa_rw_main.c
+++ b/src/nfa/rw/nfa_rw_main.c
@@ -132,13 +132,13 @@
msg.activate_ntf.p_activate_params = &p_data->activate;
msg.activate_ntf.excl_rf_not_active = excl_rf_not_active;
- nfa_rw_handle_event ((BT_HDR *) &msg);
+ nfa_rw_handle_event ((void *) &msg);
break;
case NFA_DM_RF_DISC_DEACTIVATED_EVT:
msg.hdr.event = NFA_RW_DEACTIVATE_NTF_EVT;
- nfa_rw_handle_event ((BT_HDR *) &msg);
+ nfa_rw_handle_event ((void *) &msg);
break;
default:
diff --git a/src/nfc/include/nfc_api.h b/src/nfc/include/nfc_api.h
index c29dac6..7e2e0c0 100755
--- a/src/nfc/include/nfc_api.h
+++ b/src/nfc/include/nfc_api.h
@@ -49,7 +49,7 @@
#include "nci_defs.h"
#include "nfc_hal_api.h"
#include "gki.h"
-
+#include "vendor_cfg.h"
/* NFC application return status codes */
#define NFC_STATUS_OK NCI_STATUS_OK /* Command succeeded */
#define NFC_STATUS_REJECTED NCI_STATUS_REJECTED /* Command is rejected. */
@@ -76,13 +76,15 @@
#if (NXP_EXTNS == TRUE)
//DTA API for MW Version need to change according to release
-#define NXP_EN_PN547C2 1
-#define NXP_EN_PN65T 1
+#define NXP_EN_PN547C2 0
+#define NXP_EN_PN65T 0
#define NXP_EN_PN548C2 1
#define NXP_EN_PN66T 1
+#define NXP_EN_PN551 1
+#define NXP_EN_PN67T 1
#define NXP_ANDROID_VER (4U) /* NXP android version */
-#define NFC_NXP_MW_VERSION_MAJ (3U) /* MW Major Version */
-#define NFC_NXP_MW_VERSION_MIN (0U) /* MW Minor Version */
+#define NFC_NXP_MW_VERSION_MAJ (4U) /* MW Major Version */
+#define NFC_NXP_MW_VERSION_MIN (6U) /* MW Minor Version */
#endif
/* 0xE0 ~0xFF are proprietary status codes */
#define NFC_STATUS_CMD_STARTED 0xE3/* Command started successfully */
@@ -123,6 +125,7 @@
#define NFC_PMID_PB_BAILOUT NCI_PARAM_ID_PB_BAILOUT
#define NFC_PMID_PB_ATTRIB_PARAM1 NCI_PARAM_ID_PB_ATTRIB_PARAM1
#define NFC_PMID_PF_BIT_RATE NCI_PARAM_ID_PF_BIT_RATE
+#define NFC_PMID_PF_RC NCI_PARAM_ID_PF_RC
#define NFC_PMID_PB_H_INFO NCI_PARAM_ID_PB_H_INFO
#define NFC_PMID_BITR_NFC_DEP NCI_PARAM_ID_BITR_NFC_DEP
#define NFC_PMID_ATR_REQ_GEN_BYTES NCI_PARAM_ID_ATR_REQ_GEN_BYTES
@@ -241,7 +244,7 @@
#define NFC_NFCC_INFO_LEN 4
#ifndef NFC_NFCC_MAX_NUM_VS_INTERFACE
-#define NFC_NFCC_MAX_NUM_VS_INTERFACE 4
+#define NFC_NFCC_MAX_NUM_VS_INTERFACE 5
#endif
typedef struct
{
@@ -402,9 +405,9 @@
#define NFC_PROTOCOL_T3T NCI_PROTOCOL_T3T /* Type3Tag - NFC-F */
#define NFC_PROTOCOL_ISO_DEP NCI_PROTOCOL_ISO_DEP /* Type 4A,4B - NFC-A or NFC-B */
#define NFC_PROTOCOL_NFC_DEP NCI_PROTOCOL_NFC_DEP /* NFCDEP/LLCP - NFC-A or NFC-F */
+#define NFC_PROTOCOL_MIFARE NCI_PROTOCOL_MIFARE
#if (NXP_EXTNS == TRUE)
#define NFC_PROTOCOL_ISO7816 NCI_PROTOCOL_ISO7816 /*ISO7816 -AID default Routing */
-#define NFC_PROTOCOL_MIFARE NCI_PROTOCOL_MIFARE
#define NFC_PROTOCOL_ISO7816 NCI_PROTOCOL_ISO7816
#define NFC_PROTOCOL_T3BT NCI_PROTOCOL_T3BT
#endif
@@ -457,9 +460,7 @@
#define NFC_INTERFACE_LLCP_LOW NCI_INTERFACE_LLCP_LOW
#define NFC_INTERFACE_LLCP_HIGH NCI_INTERFACE_LLCP_HIGH
#define NFC_INTERFACE_VS_T2T_CE NCI_INTERFACE_VS_T2T_CE
-#if (NXP_EXTNS == TRUE)
-#define NFC_INTERFACE_MIFARE NCI_INTERFACE_MIFARE
-#endif
+#define NFC_INTERFACE_MIFARE NCI_INTERFACE_VS_MIFARE
typedef tNCI_INTF_TYPE tNFC_INTF_TYPE;
/**********************************************
@@ -664,15 +665,11 @@
/* the data type associated with NFC_RESULT_DEVT */
typedef struct
{
- tNFC_STATUS status; /* The event status - place holder. */
- UINT8 rf_disc_id; /* RF Discovery ID */
- UINT8 protocol; /* supported protocol */
- tNFC_RF_TECH_PARAMS rf_tech_param; /* RF technology parameters */
-#if(NXP_EXTNS == TRUE)
- UINT8 more; /* 0: last notification */
-#else
- BOOLEAN more; /* 0: last notification */
-#endif
+ tNFC_STATUS status; /* The event status - place holder. */
+ UINT8 rf_disc_id; /* RF Discovery ID */
+ UINT8 protocol; /* supported protocol */
+ tNFC_RF_TECH_PARAMS rf_tech_param; /* RF technology parameters */
+ UINT8 more; /* 0: last, 1: last (limit), 2: more */
} tNFC_RESULT_DEVT;
/* the data type associated with NFC_SELECT_DEVT */
@@ -1400,6 +1397,16 @@
NFC_API extern tNFC_FW_VERSION nfc_ncif_getFWVersion();
/*******************************************************************************
**
+** Function nfc_ncif_storeScreenState
+**
+** Description This function is called to store the last screen state
+**
+** Returns void
+**
+*******************************************************************************/
+NFC_API extern void nfc_ncif_storeScreenState(UINT8 state);
+/*******************************************************************************
+**
** Function NFC_EnableDisableHalLog
**
** Description This function is used to enable/disable
@@ -1407,7 +1414,7 @@
**
*******************************************************************************/
void NFC_EnableDisableHalLog(UINT8 type);
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
/*******************************************************************************
**
** Function nfc_ncif_getMaxRoutingTableSize
@@ -1475,9 +1482,38 @@
**
*******************************************************************************/
INT32 NFC_EnableWired (void *pdata);
+
+#if((NFC_NXP_ESE_VER == JCOP_VER_3_1) || (NFC_NXP_ESE_VER == JCOP_VER_3_2))
+/*******************************************************************************
+**
+** Function NFC_GetEseAccess
+**
+** Description This function request to pn54x driver to get access
+** of P61. it returns 0 on success. This api waits maximum
+** defined timeout
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+INT32 NFC_GetEseAccess (void *pdata);
+
+/*******************************************************************************
+**
+** Function NFC_RelEseAccess
+**
+** Description This function release access of P61.
+** it returns 0 on success.
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+INT32 NFC_RelEseAccess (void *pdata);
+
#endif
#endif
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/src/nfc/include/rw_api.h b/src/nfc/include/rw_api.h
index f818e04..1f5ab5d 100755
--- a/src/nfc/include/rw_api.h
+++ b/src/nfc/include/rw_api.h
@@ -123,8 +123,8 @@
RW_T4T_PRESENCE_CHECK_EVT, /* Response to RW_T4tPresenceCheck */
RW_T4T_RAW_FRAME_EVT, /* Response of raw frame sent */
RW_T4T_INTF_ERROR_EVT, /* RF Interface error event */
-#if(NXP_EXTNS == TRUE)
RW_T4T_NDEF_FORMAT_CPLT_EVT, /* Format operation completed */
+#if(NXP_EXTNS == TRUE)
RW_T4T_RAW_FRAME_RF_WTX_EVT, /* Received RF WTX for raw frame sent */
#endif
RW_T4T_MAX_EVT,
@@ -873,7 +873,6 @@
*****************************************************************************/
NFC_API extern tNFC_STATUS RW_T3tGetSystemCodes (void);
-#if(NXP_EXTNS == TRUE)
/*****************************************************************************
**
** Function RW_T4tFormatNDef
@@ -889,7 +888,6 @@
** NFC_STATUS_FAILED: other error
*****************************************************************************/
NFC_API extern tNFC_STATUS RW_T4tFormatNDef (void);
-#endif
/*******************************************************************************
**
diff --git a/src/nfc/include/tags_defs.h b/src/nfc/include/tags_defs.h
index d63189a..5a9cb40 100755
--- a/src/nfc/include/tags_defs.h
+++ b/src/nfc/include/tags_defs.h
@@ -358,14 +358,12 @@
#define T4T_CMD_INS_SELECT 0xA4
#define T4T_CMD_INS_READ_BINARY 0xB0
#define T4T_CMD_INS_UPDATE_BINARY 0xD6
-#if(NXP_EXTNS == TRUE)
#define T4T_CMD_DES_CLASS 0x90
#define T4T_CMD_INS_GET_HW_VERSION 0x60
#define T4T_CMD_CREATE_AID 0xCA
#define T4T_CMD_SELECT_APP 0x5A
#define T4T_CMD_CREATE_DATAFILE 0xCD
#define T4T_CMD_DES_WRITE 0x3D
-#endif
#define T4T_CMD_P1_SELECT_BY_NAME 0x04
#define T4T_CMD_P1_SELECT_BY_FILE_ID 0x00
#define T4T_CMD_P2_FIRST_OR_ONLY_00H 0x00
@@ -408,7 +406,7 @@
#define T4T_FC_NO_WRITE_ACCESS 0xFF /* no write access granted at all (read-only) */
#define T4T_FILE_LENGTH_SIZE 0x02
-#if(NXP_EXTNS == TRUE)
+
#define T4T_ADDI_FRAME_RESP 0xAFU
#define T4T_SIZE_IDENTIFIER_2K 0x16U
#define T4T_SIZE_IDENTIFIER_4K 0x18U
@@ -419,7 +417,7 @@
#define T4T_DESEV0_MINOR_VERSION 0x06U
#define T4T_DES_EV1_NFC_APP_ID 0x010000
#define T4T_DES_EV0_NFC_APP_ID 0x10EEEE
-#endif
+
/*
**
diff --git a/src/nfc/int/nfc_int.h b/src/nfc/int/nfc_int.h
index cc41d46..94c69ce 100644
--- a/src/nfc/int/nfc_int.h
+++ b/src/nfc/int/nfc_int.h
@@ -83,10 +83,11 @@
#define NFC_TTYPE_RW_T4T_RESPONSE 107
#define NFC_TTYPE_RW_I93_RESPONSE 108
#define NFC_TTYPE_CE_T4T_UPDATE 109
-#if(NXP_EXTNS == TRUE)
+
#define NFC_TTYPE_P2P_PRIO_RESPONSE 110 /* added for p2p prio logic timer */
-#define NFC_TTYPE_LISTEN_ACTIVATION 111 /* added for listen activation timer */
#define NFC_TTYPE_P2P_PRIO_LOGIC_CLEANUP 112 /* added for p2p prio logic clenaup */
+#if(NXP_EXTNS == TRUE)
+#define NFC_TTYPE_LISTEN_ACTIVATION 111 /* added for listen activation timer */
#define NFC_TTYPE_P2P_PRIO_LOGIC_DEACT_NTF_TIMEOUT 113
#endif
#define NFC_TTYPE_VS_BASE 200
@@ -107,11 +108,26 @@
NFC_STATE_NFCC_POWER_OFF_SLEEP /* NFCC is power-off sleep mode */
};
typedef UINT8 tNFC_STATE;
+
+/* DM P2P Priority event type */
+enum
+{
+ NFA_DM_P2P_PRIO_RSP = 0x01, /* P2P priority event from RSP */
+ NFA_DM_P2P_PRIO_NTF /* P2P priority event from NTF */
+};
enum
{
I2C_FRAGMENATATION_ENABLED, /*i2c fragmentation_enabled */
I2C_FRAGMENTATION_DISABLED /*i2c_fragmentation_disabled */
};
+#if((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
+/*Get or Set swp activation state for UICC*/
+typedef enum
+{
+ GET_UICC_CONFIG = 0x01, /*get swp activation state for UICC */
+ SET_UICC_CONFIG /*set swp activation state for UICC */
+}uicc_config_t;
+#endif
/* NFC control block flags */
#define NFC_FL_DEACTIVATING 0x0001 /* NFC_Deactivate () is called and the NCI cmd is not sent */
#define NFC_FL_RESTARTING 0x0002 /* restarting NFCC after PowerOffSleep */
@@ -336,16 +352,19 @@
NFC_API extern void nfc_ncif_proc_data (BT_HDR *p_msg);
#if(NXP_EXTNS == TRUE)
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))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
NFC_API extern tNFC_STATUS nfc_ncif_set_MaxRoutingTableSize(UINT8 * p_buf);
#endif
-NFC_API extern BOOLEAN nfa_dm_p2p_prio_logic(UINT8 event, UINT8 *p, UINT8 ntf_rsp);
+
NFC_API extern void nfc_ncif_update_window (void);
-NFC_API extern void nfa_dm_p2p_timer_event ();
+
NFC_API extern void nfc_ncif_empty_cmd_queue ();
NFC_API extern BOOLEAN nfc_ncif_proc_proprietary_rsp (UINT8 mt, UINT8 gid, UINT8 oid);
NFC_API extern void nfc_ncif_proc_rf_wtx_ntf (UINT8 *p, UINT16 plen);
#endif
+NFC_API extern BOOLEAN nfa_dm_p2p_prio_logic(UINT8 event, UINT8 *p, UINT8 ntf_rsp);
+NFC_API extern void nfa_dm_p2p_timer_event ();
+NFC_API extern void nfa_dm_p2p_prio_logic_cleanup ();
#if (NFC_RW_ONLY == FALSE)
NFC_API extern void nfc_ncif_proc_rf_field_ntf (UINT8 rf_status);
diff --git a/src/nfc/int/rw_int.h b/src/nfc/int/rw_int.h
index ba9d83c..159b3ed 100755
--- a/src/nfc/int/rw_int.h
+++ b/src/nfc/int/rw_int.h
@@ -492,10 +492,8 @@
UINT16 max_read_size; /* max reading size per a command */
UINT16 max_update_size; /* max updating size per a command */
-#if (NXP_EXTNS == TRUE)
UINT16 card_size;
UINT8 card_type;
-#endif
} tRW_T4T_CB;
/* RW retransmission statistics */
diff --git a/src/nfc/llcp/llcp_dlc.c b/src/nfc/llcp/llcp_dlc.c
index d023a4a..5613202 100755
--- a/src/nfc/llcp/llcp_dlc.c
+++ b/src/nfc/llcp/llcp_dlc.c
@@ -515,6 +515,7 @@
{
tLLCP_STATUS status = LLCP_STATUS_SUCCESS;
tLLCP_SAP_CBACK_DATA data;
+ (void)p_data;
switch (event)
{
@@ -757,6 +758,7 @@
static void llcp_dlc_proc_disc_pdu (UINT8 dsap, UINT8 ssap, UINT16 length, UINT8 *p_data)
{
tLLCP_DLCB *p_dlcb;
+ (void)p_data;
LLCP_TRACE_DEBUG0 ("llcp_dlc_proc_disc_pdu ()");
diff --git a/src/nfc/llcp/llcp_link.c b/src/nfc/llcp/llcp_link.c
index ea234be..33d5929 100755
--- a/src/nfc/llcp/llcp_link.c
+++ b/src/nfc/llcp/llcp_link.c
@@ -219,13 +219,12 @@
if (p_msg)
{
- p_msg->len = LLCP_PDU_SYMM_SIZE;
+ /*LLCP test scenario requires non LLC PDU to be sent in case of wrong magic bytes.
+ So sending NFC-DEP pdu with size 1 (0x00)*/
+ p_msg->len = 1;
p_msg->offset = NCI_MSG_OFFSET_SIZE + NCI_DATA_HDR_SIZE;
p = (UINT8 *) (p_msg + 1) + p_msg->offset;
- UINT16_TO_BE_STREAM (p, LLCP_GET_PDU_HEADER (LLCP_SAP_LM, LLCP_PDU_SYMM_TYPE, LLCP_SAP_LM ));
-
- llcp_cb.lcb.symm_state = LLCP_LINK_SYMM_REMOTE_XMIT_NEXT;
NFC_SendData (NFC_RF_CONN_ID, p_msg);
}
}
@@ -1761,6 +1760,8 @@
*******************************************************************************/
void llcp_link_connection_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data)
{
+ (void)conn_id;
+
if (event == NFC_DATA_CEVT)
{
#if (BT_TRACE_PROTOCOL == TRUE)
diff --git a/src/nfc/llcp/llcp_sdp.c b/src/nfc/llcp/llcp_sdp.c
index 0535b7e..4dd9001 100755
--- a/src/nfc/llcp/llcp_sdp.c
+++ b/src/nfc/llcp/llcp_sdp.c
@@ -67,6 +67,8 @@
*******************************************************************************/
void llcp_sdp_proc_data (tLLCP_SAP_CBACK_DATA *p_data)
{
+ (void)p_data;
+
/*
** Do nothing
** llcp_sdp_proc_SNL () is called by link layer
@@ -468,7 +470,7 @@
/*For P2P in LLCP mode TC_CTO_TAR_BI_03_x(x=3) fix*/
if ((appl_dta_mode_flag == 1) && (nfa_dm_cb.eDtaMode == NFA_DTA_LLCP_MODE))
{
- LLCP_TRACE_ERROR0 ("DEBUG> llcp_sdp_proc_snl () Calling llcp_sdp_send_sdres");
+ LLCP_TRACE_ERROR0 (" llcp_sdp_proc_snl () Calling llcp_sdp_send_sdres");
tid = 0x01;
sap = 0x00;
llcp_sdp_send_sdres (tid, sap);
diff --git a/src/nfc/nci/nci_hrcv.c b/src/nfc/nci/nci_hrcv.c
index 9fd81c0..61c0160 100755
--- a/src/nfc/nci/nci_hrcv.c
+++ b/src/nfc/nci/nci_hrcv.c
@@ -188,9 +188,7 @@
switch (op_code)
{
case NCI_MSG_RF_DISCOVER:
-#if(NXP_EXTNS == TRUE)
- nfa_dm_p2p_prio_logic(op_code, pp, 1);
-#endif
+ nfa_dm_p2p_prio_logic (op_code, pp, NFA_DM_P2P_PRIO_RSP);
nfc_ncif_rf_management_status (NFC_START_DEVT, *pp);
break;
@@ -206,13 +204,10 @@
break;
case NCI_MSG_RF_DEACTIVATE:
-#if(NXP_EXTNS == TRUE)
- if (FALSE == nfa_dm_p2p_prio_logic(op_code, pp, 1))
+ if (FALSE == nfa_dm_p2p_prio_logic (op_code, pp, NFA_DM_P2P_PRIO_RSP))
{
- NFC_TRACE_ERROR0("Dont process the Response");
return;
}
-#endif
nfc_ncif_proc_deactivate (*pp, *p_old, FALSE);
break;
@@ -267,24 +262,18 @@
break;
case NCI_MSG_RF_DEACTIVATE:
-#if(NXP_EXTNS == TRUE)
- if (FALSE == nfa_dm_p2p_prio_logic(op_code, pp, 2))
+ if (FALSE == nfa_dm_p2p_prio_logic (op_code, pp, NFA_DM_P2P_PRIO_NTF))
{
- NFC_TRACE_ERROR0("Dont process the Event");
return;
}
-#endif
nfc_ncif_proc_deactivate (NFC_STATUS_OK, *pp, TRUE);
break;
case NCI_MSG_RF_INTF_ACTIVATED:
-#if(NXP_EXTNS == TRUE)
- if (FALSE == nfa_dm_p2p_prio_logic(op_code, pp, 2))
+ if (FALSE == nfa_dm_p2p_prio_logic (op_code, pp, NFA_DM_P2P_PRIO_NTF))
{
- NFC_TRACE_ERROR0("Dont process the Event");
return;
}
-#endif
nfc_ncif_proc_activate (pp, len);
break;
@@ -337,9 +326,8 @@
UINT8 *pp, len, op_code;
tNFC_RESPONSE_CBACK *p_cback = nfc_cb.p_resp_cback;
tNFC_NFCEE_DISCOVER_REVT nfcee_discover;
- tNFC_NFCEE_INFO_REVT nfcee_info;
tNFC_NFCEE_MODE_SET_REVT mode_set;
- tNFC_RESPONSE *p_evt = (tNFC_RESPONSE *) &nfcee_info;
+ void *p_evt = NULL;
tNFC_RESPONSE_EVT event = NFC_NFCEE_INFO_REVT;
UINT8 *p_old = nfc_cb.last_cmd;
@@ -353,7 +341,7 @@
switch (op_code)
{
case NCI_MSG_NFCEE_DISCOVER:
- p_evt = (tNFC_RESPONSE *) &nfcee_discover;
+ p_evt = (void *) &nfcee_discover;
nfcee_discover.status = *pp++;
nfcee_discover.num_nfcee = *pp++;
@@ -364,7 +352,7 @@
break;
case NCI_MSG_NFCEE_MODE_SET:
- p_evt = (tNFC_RESPONSE *) &mode_set;
+ p_evt = (void *) &mode_set;
mode_set.status = *pp;
mode_set.nfcee_id = 0;
event = NFC_NFCEE_MODE_SET_REVT;
@@ -397,7 +385,7 @@
UINT8 *pp, len, op_code;
tNFC_RESPONSE_CBACK *p_cback = nfc_cb.p_resp_cback;
tNFC_NFCEE_INFO_REVT nfcee_info;
- tNFC_RESPONSE *p_evt = (tNFC_RESPONSE *) &nfcee_info;
+ void* p_evt = (void*) &nfcee_info;
tNFC_RESPONSE_EVT event = NFC_NFCEE_INFO_REVT;
UINT8 xx;
UINT8 yy;
diff --git a/src/nfc/ndef/ndef_cho_utils.c b/src/nfc/ndef/ndef_cho_utils.c
index 51763d0..de50e25 100755
--- a/src/nfc/ndef/ndef_cho_utils.c
+++ b/src/nfc/ndef/ndef_cho_utils.c
@@ -600,6 +600,8 @@
{
UINT8 *p_rec, *p_type;
UINT8 id_len, tnf, type_len;
+ (void)(max_size);
+ (void)(p_cur_size);
/* find record by Payload ID */
id_len = (UINT8)strlen (p_id_str);
diff --git a/src/nfc/nfc/nfc_main.c b/src/nfc/nfc/nfc_main.c
index be09a01..8997b09 100644
--- a/src/nfc/nfc/nfc_main.c
+++ b/src/nfc/nfc/nfc_main.c
@@ -87,15 +87,16 @@
tNFC_CB nfc_cb;
#endif
UINT8 i2c_fragmentation_enabled = 0xff;
+
#if (NFC_RW_ONLY == FALSE)
#if(NXP_EXTNS == TRUE)
#if(NFC_NXP_CHIP_TYPE != PN547C2)
-#define NFC_NUM_INTERFACE_MAP 4
-#else
#define NFC_NUM_INTERFACE_MAP 3
+#else
+#define NFC_NUM_INTERFACE_MAP 2
#endif
#else
-#define NFC_NUM_INTERFACE_MAP 3
+#define NFC_NUM_INTERFACE_MAP 2
#endif
#else
#define NFC_NUM_INTERFACE_MAP 1
@@ -119,12 +120,6 @@
}
#endif
#if(NXP_EXTNS == TRUE)
- ,
- {
- NCI_PROTOCOL_MIFARE,
- NCI_INTERFACE_MODE_POLL,
- NCI_INTERFACE_MIFARE
- }
#if(NFC_NXP_CHIP_TYPE != PN547C2)
,
/* This mapping is for Felica on DH */
@@ -295,11 +290,7 @@
{
if ((*p) <= NCI_INTERFACE_MAX)
evt_data.enable.nci_interfaces |= (1 << (*p));
- #if(NXP_EXTNS == TRUE)
else if (((*p) >= NCI_INTERFACE_FIRST_VS) && (yy < NFC_NFCC_MAX_NUM_VS_INTERFACE))
- #else
- else if (((*p) > NCI_INTERFACE_FIRST_VS) && (yy < NFC_NFCC_MAX_NUM_VS_INTERFACE))
- #endif
{
/* save the VS RF interface in control block, if there's still room */
nfc_cb.vs_interface[yy++] = *p;
@@ -430,7 +421,6 @@
void nfc_main_handle_hal_evt (tNFC_HAL_EVT_MSG *p_msg)
{
UINT8 *ps;
-
NFC_TRACE_DEBUG1 ("nfc_main_handle_hal_evt(): HAL event=0x%x", p_msg->hal_evt);
switch (p_msg->hal_evt)
@@ -488,12 +478,15 @@
if(mGetCfg_info == NULL)
{
mGetCfg_info = (phNxpNci_getCfg_info_t*)malloc(sizeof(phNxpNci_getCfg_info_t));
- memset(mGetCfg_info,0x00,sizeof(phNxpNci_getCfg_info_t));
+ if(mGetCfg_info != NULL)
+ {
+ memset(mGetCfg_info,0x00,sizeof(phNxpNci_getCfg_info_t));
+ nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_GET_CONFIG_INFO,(void *)mGetCfg_info);
+ nfa_dm_init_cfgs(mGetCfg_info);
+ free(mGetCfg_info);
+ mGetCfg_info = NULL;
+ }
}
- nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_GET_CONFIG_INFO,(void *)mGetCfg_info);
- nfa_dm_init_cfgs(mGetCfg_info);
- free(mGetCfg_info);
- mGetCfg_info = NULL;
#endif
}
else /* if post initailization failed */
@@ -684,7 +677,9 @@
#else
NFC_TRACE_DEBUG2 ("nfc_main_hal_cback event: 0x%x, status=%d", event, status);
#endif
-
+#if(NXP_EXTNS == TRUE)
+ tNFC_RESPONSE eventData;
+#endif
switch (event)
{
case HAL_NFC_OPEN_CPLT_EVT:
@@ -714,6 +709,22 @@
case HAL_NFC_ERROR_EVT:
#if(NXP_EXTNS == TRUE)
case HAL_NFC_POST_MIN_INIT_CPLT_EVT:
+
+ if(status == HAL_NFC_STATUS_ERR_CMD_TIMEOUT)
+ {
+ eventData.status = (tNFC_STATUS) NFC_STATUS_FAILED;
+ /* Notify app of transport error */
+ if (nfc_cb.p_resp_cback)
+ {
+ (*nfc_cb.p_resp_cback) (NFC_NFCC_TIMEOUT_REVT, &eventData);
+ /* if enabling NFC, notify upper layer of failure after closing HAL*/
+ if (nfc_cb.nfc_state < NFC_STATE_IDLE)
+ {
+ nfc_enabled (NFC_STATUS_FAILED, NULL);
+ }
+ }
+ break;
+ }
#endif
nfc_main_post_hal_evt (event, status);
break;
@@ -1614,6 +1625,37 @@
return (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_P61_ENABLE_MODE, pdata));
}
+#if((NFC_NXP_ESE_VER == JCOP_VER_3_1) || (NFC_NXP_ESE_VER == JCOP_VER_3_2))
+/*******************************************************************************
+**
+** Function NFC_GetEseAccess
+**
+** Description This function request to pn54x driver to get access
+** of P61. it returns 0 on success. This api waits maximum
+** defined timeout
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+INT32 NFC_GetEseAccess (void *pdata)
+{
+ return (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_P61_GET_ACCESS, pdata));
+}
+/*******************************************************************************
+**
+** Function NFC_RelEseAccess
+**
+** Description This function release access of P61.
+** it returns 0 on success.
+**
+** Returns 0 if api call success, else -1
+**
+*******************************************************************************/
+INT32 NFC_RelEseAccess (void *pdata)
+{
+ return (nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_P61_REL_ACCESS, pdata));
+}
+#endif
#endif
#if(NXP_EXTNS == TRUE)
diff --git a/src/nfc/nfc/nfc_ncif.c b/src/nfc/nfc/nfc_ncif.c
index 25721fd..70cffeb 100644
--- a/src/nfc/nfc/nfc_ncif.c
+++ b/src/nfc/nfc/nfc_ncif.c
@@ -63,6 +63,7 @@
#include "nfa_sys.h"
#include "nfa_dm_int.h"
#include "nfa_hci_int.h"
+#include <config.h>
#endif
tNFC_CONN_CB *p_cb_stored = NULL;
#if (NFC_RW_ONLY == FALSE)
@@ -81,7 +82,8 @@
#if(NXP_EXTNS == TRUE)
// Global Structure varibale for FW Version
static tNFC_FW_VERSION nfc_fw_version;
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+static UINT8 gScreenState = 0x0; // SCREEN ON UNLOCKED
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
static UINT16 maxRoutingTableSize;
#endif
uint8_t sListenActivated;
@@ -89,12 +91,17 @@
BOOLEAN core_reset_init_num_buff = FALSE;
UINT8 nfcc_dh_conn_id = 0xFF;
extern void nfa_hci_rsp_timeout (tNFA_HCI_EVENT_DATA *p_evt_data);
-void disc_deact_ntf_timeout_handler(tNFC_RESPONSE_EVT event);
#endif
-#if(NFC_NXP_ESE == TRUE && NFC_NXP_CHIP_TYPE == PN548C2)
-extern etsi_reader_in_progress;
+#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
+void disc_deact_ntf_timeout_handler(tNFC_RESPONSE_EVT event);
+extern BOOLEAN etsi_reader_in_progress;
#endif
+#if((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE))
+void uicc_eeprom_get_config(UINT8* config_resp);
+void uicc_eeprom_set_config(UINT8* config_resp);
+#endif
+
/*******************************************************************************
**
** Function nfc_ncif_update_window
@@ -174,10 +181,11 @@
buffer[2] = Length of discovery packet.
buffer[3~34] = Last Discovery command(including phase data).(32 byte)
buffer[35] = Length of last command packet.
- buffer[36~255] = Last Command /or Last Command & Data.
+ buffer[36~254] = Last Command /or Last Command & Data.
+ buffer[255] = Last screen state
*/
UINT8 *buffer = NULL;
- UINT8 bufflen = 0xFF;
+ UINT16 bufflen = 0x100;
UINT8 fw_dwnld_status = NFC_STATUS_FAILED;
tNFC_STATUS status = NFC_STATUS_FAILED;
tNFC_FWUpdate_Info_t fw_update_inf;
@@ -206,6 +214,8 @@
NFC_TRACE_ERROR1 ("Last State nfa_dm_cb.disc_cb.disc_flags 0x%x", nfa_dm_cb.disc_cb.disc_flags);
NFC_TRACE_ERROR1 ("Last State nfa_dm_cb.disc_cb.disc_state 0x%x", nfa_dm_cb.disc_cb.disc_state);
+ buffer[255] = gScreenState;
+
if(!(nfa_dm_cb.disc_cb.disc_state > NFA_DM_RFST_IDLE))
{
NFC_TRACE_ERROR0 ("Last State is Idle!!");
@@ -281,11 +291,14 @@
{
/* Flush the data if any before proceeding further with the recovery */
p_cb = nfc_find_conn_cb_by_conn_id(nfcc_dh_conn_id);
- NFC_TRACE_ERROR1("connection id %d", nfcc_dh_conn_id);
- status = NFC_FlushData(p_cb->conn_id);
- if(status != NFC_STATUS_OK)
+ if(NULL != p_cb)
{
- NFC_TRACE_ERROR0 ("NFC data flush failed");
+ NFC_TRACE_ERROR1("connection id %d", nfcc_dh_conn_id);
+ status = NFC_FlushData(p_cb->conn_id);
+ if(status != NFC_STATUS_OK)
+ {
+ NFC_TRACE_ERROR0 ("NFC data flush failed");
+ }
}
}
}
@@ -518,8 +531,9 @@
{
GKI_enqueue (&nfc_cb.nci_cmd_xmit_q, p_buf);
#if (NXP_EXTNS == TRUE)
- if(p_buf != NULL){
- NFC_TRACE_DEBUG0 ("nfc_ncif_check_cmd_queue : making p_buf NULL.");
+ if(p_buf != NULL)
+ {
+ NFC_TRACE_DEBUG0 ("nfc_ncif_check_cmd_queue : making p_buf NULL.");
p_buf = NULL;
}
#else
@@ -537,7 +551,7 @@
if (p_buf)
{
#if (NXP_EXTNS == TRUE)
-
+ NFC_TRACE_DEBUG0 ("nfc_ncif_check_cmd_queue : Writing to HAL...");
/* save the message header to double check the response */
ps = (UINT8 *)(p_buf + 1) + p_buf->offset;
memcpy(nfc_cb.last_hdr, ps, NFC_SAVED_HDR_SIZE);
@@ -663,7 +677,7 @@
void nfc_ncif_send_cmd (BT_HDR *p_buf)
{
#if(NXP_EXTNS == TRUE)
- NFC_TRACE_DEBUG0 ("nfc_ncif_send_cmd.");
+ NFC_TRACE_DEBUG0 ("nfc_ncif_send_cmd()");
if(p_buf == NULL)
{
NFC_TRACE_DEBUG0 ("p_buf is NULL.");
@@ -740,7 +754,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)
+#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
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");
@@ -763,7 +777,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)
+#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
}
#endif
}
@@ -881,6 +895,8 @@
void nfc_ncif_set_config_status (UINT8 *p, UINT8 len)
{
tNFC_RESPONSE evt_data;
+ (void)len;
+
if (nfc_cb.p_resp_cback)
{
evt_data.set_config.status = (tNFC_STATUS) *p++;
@@ -929,7 +945,7 @@
p_cb = nfc_find_conn_cb_by_conn_id (conn_id);
if (p_cb && p_cb->p_cback)
{
- (*p_cb->p_cback) (conn_id, NFC_ERROR_CEVT, (tNFC_CONN *) &status);
+ (*p_cb->p_cback) (conn_id, NFC_ERROR_CEVT, (void *) &status);
}
}
@@ -968,6 +984,7 @@
{
UINT8 num, xx;
tNFC_CONN_CB * p_cb;
+ (void)plen;
num = *p++;
for (xx = 0; xx < num; xx++)
@@ -1026,10 +1043,9 @@
len = *p++;
p_start = p;
memset ( &p_param->param, 0, sizeof (tNFC_RF_TECH_PARAMU));
- switch (p_param->mode)
+ if ( NCI_DISCOVERY_TYPE_POLL_A == p_param->mode
+ || NCI_DISCOVERY_TYPE_POLL_A_ACTIVE == p_param->mode )
{
- case NCI_DISCOVERY_TYPE_POLL_A:
- case NCI_DISCOVERY_TYPE_POLL_A_ACTIVE:
p_pa = &p_param->param.pa;
/*
SENS_RES Response 2 bytes Defined in [DIGPROT] Available after Technology Detection
@@ -1056,9 +1072,9 @@
p_pa->hr[1] = *p;
}
}
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_B:
+ }
+ else if (NCI_DISCOVERY_TYPE_POLL_B == p_param->mode)
+ {
/*
SENSB_RES Response length (n) 1 byte Length of SENSB_RES Response (Byte 2 - Byte 12 or 13)Available after Technology Detection
SENSB_RES Response Byte 2 - Byte 12 or 13 11 or 12 bytes Defined in [DIGPROT] Available after Technology Detection
@@ -1069,10 +1085,10 @@
p_pb->sensb_res_len = NCI_MAX_SENSB_RES_LEN;
STREAM_TO_ARRAY (p_pb->sensb_res, p, p_pb->sensb_res_len);
memcpy (p_pb->nfcid0, p_pb->sensb_res, NFC_NFCID0_MAX_LEN);
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_F:
- case NCI_DISCOVERY_TYPE_POLL_F_ACTIVE:
+ }
+ else if ( NCI_DISCOVERY_TYPE_POLL_F == p_param->mode
+ || NCI_DISCOVERY_TYPE_POLL_F_ACTIVE == p_param->mode )
+ {
/*
Bit Rate 1 byte 1 212 kbps/2 424 kbps/0 and 3 to 255 RFU
SENSF_RES Response length.(n) 1 byte Length of SENSF_RES (Byte 2 - Byte 17 or 19).Available after Technology Detection
@@ -1087,26 +1103,26 @@
memcpy (p_pf->nfcid2, p_pf->sensf_res, NCI_NFCID2_LEN);
p_pf->mrti_check = p_pf->sensf_res[NCI_MRTI_CHECK_INDEX];
p_pf->mrti_update = p_pf->sensf_res[NCI_MRTI_UPDATE_INDEX];
- break;
-
- case NCI_DISCOVERY_TYPE_LISTEN_F:
- case NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE:
+ }
+ else if ( NCI_DISCOVERY_TYPE_LISTEN_F == p_param->mode
+ || NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE == p_param->mode )
+ {
p_lf = &p_param->param.lf;
u8 = *p++;
if (u8)
{
STREAM_TO_ARRAY (p_lf->nfcid2, p, NCI_NFCID2_LEN);
}
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_ISO15693:
+ }
+ else if (NCI_DISCOVERY_TYPE_POLL_ISO15693 == p_param->mode)
+ {
p_i93 = &p_param->param.pi93;
p_i93->flag = *p++;
p_i93->dsfid = *p++;
STREAM_TO_ARRAY (p_i93->uid, p, NFC_ISO15693_UID_LEN);
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_KOVIO:
+ }
+ else if (NCI_DISCOVERY_TYPE_POLL_KOVIO == p_param->mode)
+ {
p_param->param.pk.uid_len = len;
if (p_param->param.pk.uid_len > NFC_KOVIO_MAX_LEN)
{
@@ -1114,7 +1130,6 @@
p_param->param.pk.uid_len = NFC_KOVIO_MAX_LEN;
}
STREAM_TO_ARRAY (p_param->param.pk.uid, p, p_param->param.pk.uid_len);
- break;
}
return (p_start + len);
@@ -1132,6 +1147,7 @@
void nfc_ncif_proc_discover_ntf (UINT8 *p, UINT16 plen)
{
tNFC_DISCOVER evt_data;
+ (void)plen;
if (nfc_cb.p_discv_cback)
{
@@ -1144,7 +1160,7 @@
evt_data.result.rf_tech_param.mode = *p++;
p = nfc_ncif_decode_rf_params (&evt_data.result.rf_tech_param, p);
- evt_data.result.more = *p++;
+ evt_data.result.more = *p++;
(*nfc_cb.p_discv_cback) (NFC_RESULT_DEVT, &evt_data);
}
}
@@ -1163,6 +1179,8 @@
{
tNFC_CONN_CB *p_cb = NULL;
(void)p;
+ (void)plen;
+
p_cb = nfc_find_conn_cb_by_conn_id (NFC_RF_CONN_ID);
if(NULL != p_cb)
@@ -1556,7 +1574,7 @@
}
break;
}
- (*p_cback) (NFC_EE_ACTION_REVT, (tNFC_RESPONSE *) &evt_data);
+ (*p_cback) (NFC_EE_ACTION_REVT, (void *) &evt_data);
}
}
@@ -1602,7 +1620,7 @@
plen -=NFC_EE_DISCOVER_ENTRY_LEN;
p_info++;
}
- (*p_cback) (NFC_EE_DISCOVER_REQ_REVT, (tNFC_RESPONSE *) &ee_disc_req);
+ (*p_cback) (NFC_EE_DISCOVER_REQ_REVT, (void *) &ee_disc_req);
}
}
@@ -1621,6 +1639,10 @@
tNFC_GET_ROUTING_REVT evt_data;
UINT8 more, num_entries, xx, yy, *pn, tl;
tNFC_STATUS status = NFC_STATUS_CONTINUE;
+#if(NXP_EXTNS == TRUE)
+ (void)(p);
+ (void)(len);
+#endif
#if(NXP_EXTNS == FALSE)
if (nfc_cb.p_resp_cback)
@@ -1681,6 +1703,7 @@
tNFC_CONN_CBACK *p_cback;
tNFC_CONN evt_data;
UINT8 conn_id;
+ (void)plen;
/* find the pending connection control block */
p_cb = nfc_find_conn_cb_by_conn_id (NFC_PEND_CONN_ID);
@@ -1908,6 +1931,10 @@
fw_mw_ver_status = NCI_STATUS_FAILED;
tNFC_FWUpdate_Info_t fw_update_inf;
UINT8 *init_rsp = NULL ;
+#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
+ UINT8 config_resp[16];
+#endif
+ int i;
memset(&fw_update_inf, 0x00, sizeof(tNFC_FWUpdate_Info_t));
#endif
p = (UINT8 *) (p_msg + 1) + p_msg->offset;
@@ -1920,8 +1947,12 @@
{
nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_CHECK_FLASH_REQ, &fw_update_inf);
NFC_TRACE_DEBUG1 ("fw_update required -> %d", fw_update_inf.fw_update_reqd);
+
if(fw_update_inf.fw_update_reqd == TRUE)
{
+#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
+ uicc_eeprom_get_config(config_resp);
+#endif
nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_FW_DWNLD, &fw_dwnld_status);
status = nfc_hal_nfcc_reset();
if(NCI_STATUS_OK == status)
@@ -1940,8 +1971,9 @@
}
}
}
+
fw_status = nfc_ncif_store_FWVersion(p);
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
nfc_ncif_set_MaxRoutingTableSize(p);
#endif
nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_FW_MW_VER_CHECK, &fw_mw_ver_status);
@@ -1956,6 +1988,14 @@
#endif
)
{
+#if (NXP_EXTNS == TRUE)
+ if(fw_dwnld_status == NCI_STATUS_OK)
+ {
+#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
+ uicc_eeprom_set_config(config_resp);
+#endif
+ }
+#endif
p_cb->id = NFC_RF_CONN_ID;
p_cb->act_protocol = NCI_PROTOCOL_UNKNOWN;
#if(NXP_EXTNS == TRUE)
@@ -1966,6 +2006,7 @@
nfc_cb.p_nci_init_rsp = p_msg;
nfc_cb.p_hal->core_initialized (p);
}
+
#if(NXP_EXTNS == TRUE)
/*Recovery is added in case of corrupted init rsp is received
* eg: 400119 - only 3 bytes are received. In this case since the
@@ -2018,7 +2059,7 @@
nfc_fw_version.major_version,nfc_fw_version.minor_version);
return status;
}
-#if((!(NFC_NXP_CHIP_TYPE == PN547C2)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
+#if(((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)) && (NFC_NXP_AID_MAX_SIZE_DYN == TRUE))
/*******************************************************************************
**
** Function nfc_ncif_set_MaxRoutingTableSize
@@ -2069,6 +2110,22 @@
{
return nfc_fw_version;
}
+
+/*******************************************************************************
+**
+** Function nfc_ncif_storeScreenState
+**
+** Description This function is called to store the last screen state
+**
+** Returns void
+**
+*******************************************************************************/
+void nfc_ncif_storeScreenState(UINT8 state)
+{
+ /* store the screen state */
+ gScreenState = state;
+ NFC_TRACE_DEBUG1 ("nfc_ncif_storeScreenState gScreenState : %d", gScreenState);
+}
#endif
/*******************************************************************************
**
@@ -2192,7 +2249,7 @@
}
}
}
- (*p_cb->p_cback) (p_cb->conn_id, NFC_DATA_CEVT, (tNFC_CONN *) &data_cevt);
+ (*p_cb->p_cback) (p_cb->conn_id, NFC_DATA_CEVT, (void *) &data_cevt);
p_evt = NULL;
}
}
@@ -2321,7 +2378,7 @@
}
GKI_freebuf (p_msg);
}
-#if(NFC_NXP_ESE == TRUE)
+#if(NXP_EXTNS == TRUE)
/*******************************************************************************
**
** Function nfc_ncif_credit_ntf_timeout
@@ -2372,12 +2429,12 @@
}
}
NFC_TRACE_ERROR0 ("cmd timeout sending core reset!!!");
- nfc_ncif_cmd_timeout();
+ nfc_ncif_cmd_timeout();
//nci_snd_core_reset(0x00);
}
#endif
-#if(NFC_NXP_ESE == TRUE && NFC_NXP_CHIP_TYPE == PN548C2)
+#if(NFC_NXP_ESE == TRUE && ((NFC_NXP_CHIP_TYPE == PN548C2) || (NFC_NXP_CHIP_TYPE == PN551)))
void disc_deact_ntf_timeout_handler(tNFC_RESPONSE_EVT event)
{
tNFC_RESPONSE evt_data;
@@ -2475,6 +2532,192 @@
NFC_TRACE_DEBUG1 ("nfc_ncif_proc_proprietary_rsp: exit status=%u", stat);
return stat;
}
+#if(NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == TRUE)
+/*******************************************************************************
+**
+** Function: nfc_ncif_reset_nfcc
+**
+** Description: Reset the NFCC
+**
+** Returns: NFA_STATUS_OK if successfully initiated
+** NFA_STATUS_FAILED otherwise
+**
+*******************************************************************************/
+tNFC_STATUS nfc_ncif_reset_nfcc()
+{
+ NFC_TRACE_DEBUG1("%s : Enter",__FUNCTION__);
+ nfc_nci_ExtnCmd_t extn_cmd;
+ UINT8 status = NCI_STATUS_FAILED;
+ int isfound,retry_count = 0;
+ long retlen = 0;
+ uint8_t *buffer = NULL;
+ long bufflen = 256;
+
+ /*NCI_INIT_CMD*/
+ static uint8_t cmd_init_nci[] = {0x20, 0x01, 0x00};
+ /*NCI_RESET_CMD*/
+ static uint8_t cmd_reset_nci[] = {0x20, 0x00, 0x01, 0x00}; //keep configuration
+ /*NXP_ACT_PROP_EXTN*/
+ static uint8_t cmd_act_prop_extn[] = {0x2F, 0x02, 0x00};
+ /*NXP_CORE_STANDBY*/
+ static uint8_t cmd_core_standby[] = {0x2F, 0x00, 0x01, 0x01};
+
+ /*Nfcc power cycle*/
+ nfc_cb.p_hal->power_cycle();
+
+ /*Transceive NCI_INIT_CMD*/
+ memset(&extn_cmd, 0x00, sizeof(nfc_nci_ExtnCmd_t));
+ extn_cmd.cmd_len = sizeof(cmd_reset_nci);
+ extn_cmd.p_cmd = cmd_reset_nci;
+
+ do {
+ status = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_NCI_TRANSCEIVE, &extn_cmd);
+ retry_count++;
+ }
+ while((status != NCI_STATUS_OK) && (retry_count <= 3));
+ if(status != NCI_STATUS_OK)
+ goto TheEndReset;
+
+ /*Transceive NCI_RESET_CMD*/
+ retry_count = 0;
+ memset(&extn_cmd, 0x00, sizeof(nfc_nci_ExtnCmd_t));
+ extn_cmd.cmd_len = sizeof(cmd_init_nci);
+ extn_cmd.p_cmd = cmd_init_nci;
+ do {
+ status = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_NCI_TRANSCEIVE, &extn_cmd);
+ retry_count++;
+ }
+ while((status != NCI_STATUS_OK) && (retry_count <= 3));
+ if(status != NCI_STATUS_OK)
+ goto TheEndReset;
+
+ /*Transceive NXP_ACT_PROP_EXTN*/
+ retry_count = 0;
+ retlen = 0;
+ memset(&extn_cmd, 0x00, sizeof(nfc_nci_ExtnCmd_t));
+ extn_cmd.cmd_len = sizeof(cmd_act_prop_extn);
+ extn_cmd.p_cmd = cmd_act_prop_extn;
+
+ do {
+ status = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_NCI_TRANSCEIVE, &extn_cmd);
+ retry_count++;
+ }
+ while((status != NCI_STATUS_OK) && (retry_count <= 3));
+ if(status != NCI_STATUS_OK)
+ goto TheEndReset;
+
+ /*Transceive NXP_CORE_STANDBY*/
+ retry_count = 0;
+ memset(&extn_cmd, 0x00, sizeof(nfc_nci_ExtnCmd_t));
+ extn_cmd.cmd_len = sizeof(cmd_core_standby);
+ extn_cmd.p_cmd = cmd_core_standby;
+
+ do {
+ status = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_NCI_TRANSCEIVE, &extn_cmd);
+ retry_count++;
+ }
+ while((status != NCI_STATUS_OK) && (retry_count <= 3));
+ TheEndReset:
+ NFC_TRACE_DEBUG1("%s : Exit",__FUNCTION__);
+ return status;
+}
+/*******************************************************************************
+**
+** Function uicc_eeprom_get_config
+**
+** Description get UICC configuration from EEPROM
+**
+** Returns None
+**
+*******************************************************************************/
+void uicc_eeprom_get_config(UINT8* config_resp )
+{
+ NFC_TRACE_DEBUG1("%s : Enter",__FUNCTION__);
+ UINT8 cmd_get_dualUicc_config[] = {0x20, 0x03, 0x03, 0x01, 0xA0, 0xEC};
+ nfc_nci_ExtnCmd_t extn_cmd;
+ int uicc_mode = 0;
+ UINT8* config_rsp = NULL;
+ UINT8 config_status = NCI_STATUS_FAILED;
+ UINT8 retry_count = 0;
+
+ if(GetNumValue(NAME_NXP_DUAL_UICC_ENABLE, &uicc_mode, sizeof(int)))
+ {
+ NFC_TRACE_DEBUG1("NXP_DUAL_UICC_ENABLE : 0x%02x",uicc_mode);
+
+ }else
+ {
+ uicc_mode = 0x00;
+ NFC_TRACE_DEBUG1("NXP_DUAL_UICC_ENABLE not found; taking default value : 0x%02x",uicc_mode);
+ }
+ memset(&extn_cmd, 0x00, sizeof(nfc_nci_ExtnCmd_t));
+ extn_cmd.cmd_len = sizeof(cmd_get_dualUicc_config);
+ extn_cmd.p_cmd = cmd_get_dualUicc_config;
+ do {
+ config_status = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_NCI_TRANSCEIVE, &extn_cmd);
+ retry_count++;
+ }
+ while((config_status != NCI_STATUS_OK) && (retry_count <= 3));
+ if(config_status == NCI_STATUS_OK && extn_cmd.rsp_len > 0)
+ {
+ memcpy(config_resp, extn_cmd.p_cmd_rsp, extn_cmd.rsp_len);
+ }
+ else
+ {
+ NFC_TRACE_DEBUG1("%s :HAL_NFC_IOCTL_NCI_TRANSCEIVE Failed",__FUNCTION__);
+ }
+}
+
+/*******************************************************************************
+**
+** Function uicc_eeprom_set_config
+**
+** Description set UICC configuration in EEPROM
+**
+** Returns No Data
+**
+*******************************************************************************/
+void uicc_eeprom_set_config(UINT8* config_rsp)
+{
+ NFC_TRACE_DEBUG1("%s : Enter",__FUNCTION__);
+ UINT8 cmd_set_dualUicc_config[] = {0x20, 0x02, 0x05, 0x01, 0xA0, 0xEC, 0x01, 0x11};
+ nfc_nci_ExtnCmd_t extn_cmd;
+ int uicc_mode = 0;
+ UINT8 config_status = NCI_STATUS_FAILED;
+ UINT8 retry_count = 0;
+
+ if(GetNumValue(NAME_NXP_DUAL_UICC_ENABLE, &uicc_mode, sizeof(int)))
+ {
+ NFC_TRACE_DEBUG1("NXP_DUAL_UICC_ENABLE : 0x%02x",uicc_mode);
+
+ }else
+ {
+ uicc_mode = 0x00;
+ NFC_TRACE_DEBUG1("NXP_DUAL_UICC_ENABLE not found; taking default value : 0x%02x",uicc_mode);
+ }
+ memset(&extn_cmd, 0x00, sizeof(nfc_nci_ExtnCmd_t));
+
+ if(uicc_mode == 0x00)
+ {
+ cmd_set_dualUicc_config[7] = 0x01;
+ }
+ else if(config_rsp != NULL)
+ {
+ cmd_set_dualUicc_config[7] = config_rsp[8];
+ }
+
+ extn_cmd.cmd_len = sizeof(cmd_set_dualUicc_config);
+ extn_cmd.p_cmd = cmd_set_dualUicc_config;
+ do {
+ config_status = nfc_cb.p_hal->ioctl(HAL_NFC_IOCTL_NCI_TRANSCEIVE, &extn_cmd);
+ retry_count++;
+ }
+ while((config_status != NCI_STATUS_OK) && (retry_count <= 3));
+ if((config_status != NCI_STATUS_OK) && (retry_count = 4))
+ {
+ NFC_TRACE_DEBUG1("%s :HAL_NFC_IOCTL_NCI_TRANSCEIVE Failed",__FUNCTION__);
+ }
+}
+#endif
#endif
#endif /* NFC_INCLUDED == TRUE*/
diff --git a/src/nfc/nfc/nfc_task.c b/src/nfc/nfc/nfc_task.c
index 559de7d..80c3aa5 100755
--- a/src/nfc/nfc/nfc_task.c
+++ b/src/nfc/nfc/nfc_task.c
@@ -318,7 +318,6 @@
case NFC_TTYPE_RW_I93_RESPONSE:
rw_i93_process_timeout (p_tle);
break;
-#if(NXP_EXTNS == TRUE)
case NFC_TTYPE_P2P_PRIO_RESPONSE:
nfa_dm_p2p_timer_event ();
break;
@@ -328,7 +327,6 @@
case NFC_TTYPE_P2P_PRIO_LOGIC_DEACT_NTF_TIMEOUT:
nfa_dm_deact_ntf_timeout();
break;
-#endif
#if (NFC_RW_ONLY == FALSE)
case NFC_TTYPE_CE_T4T_UPDATE:
ce_t4t_process_timeout (p_tle);
@@ -409,6 +407,7 @@
UINT16 event;
BT_HDR *p_msg;
BOOLEAN free_buf;
+ (void)param;
/* Initialize the nfc control block */
memset (&nfc_cb, 0, sizeof (tNFC_CB));
diff --git a/src/nfc/nfc/nfc_utils.c b/src/nfc/nfc/nfc_utils.c
index b413d46..705e838 100755
--- a/src/nfc/nfc/nfc_utils.c
+++ b/src/nfc/nfc/nfc_utils.c
@@ -204,7 +204,7 @@
if (p_conn_cb->conn_id != NFC_ILLEGAL_CONN_ID)
{
if (p_conn_cb->p_cback)
- (*p_conn_cb->p_cback) (p_conn_cb->conn_id, NFC_DEACTIVATE_CEVT, (tNFC_CONN *) &deact);
+ (*p_conn_cb->p_cback) (p_conn_cb->conn_id, NFC_DEACTIVATE_CEVT, (void *) &deact);
nfc_free_conn_cb (p_conn_cb);
}
}
diff --git a/src/nfc/tags/ce_t3t.c b/src/nfc/tags/ce_t3t.c
index 97de9ac..8b5967b 100755
--- a/src/nfc/tags/ce_t3t.c
+++ b/src/nfc/tags/ce_t3t.c
@@ -57,7 +57,18 @@
/*******************************************************************************
* Static constant definitions
*******************************************************************************/
-static const UINT8 CE_DEFAULT_LF_PMM[NCI_T3T_PMM_LEN] = {0x20, 0x79, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; /* Default PMm param */
+/* Default PMm param */
+static const UINT8 CE_DEFAULT_LF_PMM[NCI_T3T_PMM_LEN] =
+{
+ 0x01, /* This PAD0 is used to identify HCE-F on Android */
+ 0xFE, /* This PAD0 is used to identify HCE-F on Android */
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF
+};
/*******************************************************************************
**
@@ -379,7 +390,7 @@
update_info.p_data = p_cb->ndef_info.p_scratch_buf;
update_info.length = p_cb->ndef_info.scratch_ln;
p_cb->state = CE_T3T_STATE_IDLE;
- p_ce_cb->p_cback (CE_T3T_NDEF_UPDATE_CPLT_EVT, (tCE_DATA *) &update_info);
+ p_ce_cb->p_cback (CE_T3T_NDEF_UPDATE_CPLT_EVT, (void *) &update_info);
}
GKI_freebuf (p_cmd_msg);
@@ -679,6 +690,7 @@
#if (BT_TRACE_PROTOCOL == TRUE)
DispT3TagMessage (p_msg, TRUE);
#endif
+ (void)conn_id;
/* If activate system code is not NDEF, or if no local NDEF contents was set, then pass data up to the app */
if ((p_cb->system_code != T3T_SYSTEM_CODE_NDEF) || (!p_cb->ndef_info.initialized))
diff --git a/src/nfc/tags/ce_t4t.c b/src/nfc/tags/ce_t4t.c
index b812cff..f625a69 100755
--- a/src/nfc/tags/ce_t4t.c
+++ b/src/nfc/tags/ce_t4t.c
@@ -599,8 +599,8 @@
{
BT_HDR *p_c_apdu;
UINT8 *p_cmd;
- UINT8 cla, instruct, select_type = 0, length;
- UINT16 offset, max_file_size;
+ UINT8 cla, instruct, select_type = 0;
+ UINT16 offset, max_file_size,length;
tCE_DATA ce_data;
if (event == NFC_DEACTIVATE_CEVT)
@@ -1070,6 +1070,13 @@
UINT16 max_le,
UINT16 max_lc)
{
+#if (CE_TEST_INCLUDED == FALSE)
+ (void)(cc_len);
+ (void)(version);
+ (void)(max_le);
+ (void)(max_lc);
+#endif
+
#if (CE_TEST_INCLUDED == TRUE)
tCE_T4T_MEM *p_t4t = &ce_cb.mem.t4t;
UINT8 *p;
@@ -1141,6 +1148,15 @@
UINT8 read_access,
UINT8 write_access)
{
+#if (CE_TEST_INCLUDED == FALSE)
+ (void)(type);
+ (void)(length);
+ (void)(file_id);
+ (void)(max_file_size);
+ (void)(read_access);
+ (void)(write_access);
+#endif
+
#if (CE_TEST_INCLUDED == TRUE)
tCE_T4T_MEM *p_t4t = &ce_cb.mem.t4t;
UINT8 *p;
diff --git a/src/nfc/tags/rw_i93.c b/src/nfc/tags/rw_i93.c
index 76d0fea..b43979e 100755
--- a/src/nfc/tags/rw_i93.c
+++ b/src/nfc/tags/rw_i93.c
@@ -3081,6 +3081,7 @@
#if (BT_TRACE_VERBOSE == TRUE)
UINT8 begin_state = p_i93->state;
#endif
+ (void)conn_id;
RW_TRACE_DEBUG1 ("rw_i93_data_cback () event = 0x%X", event);
@@ -3118,15 +3119,13 @@
}
else
{
-#if(NXP_EXTNS == TRUE)
/* free retry buffer */
- if ((event == NFC_DEACTIVATE_CEVT )&& p_i93->p_retry_cmd)
+ if (p_i93->p_retry_cmd)
{
GKI_freebuf (p_i93->p_retry_cmd);
p_i93->p_retry_cmd = NULL;
p_i93->retry_count = 0;
}
-#endif
NFC_SetStaticRfCback (NULL);
p_i93->state = RW_I93_STATE_NOT_ACTIVATED;
}
diff --git a/src/nfc/tags/rw_main.c b/src/nfc/tags/rw_main.c
index a593e01..30a6d8b 100755
--- a/src/nfc/tags/rw_main.c
+++ b/src/nfc/tags/rw_main.c
@@ -245,54 +245,57 @@
#endif /* RW_STATS_INCLUDED */
rw_cb.p_cback = p_cback;
- switch (p_activate_params->protocol)
- {
/* not a tag NFC_PROTOCOL_NFCIP1: NFCDEP/LLCP - NFC-A or NFC-F */
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ if (NFC_PROTOCOL_T1T == p_activate_params->protocol)
+ {
+ /* Type1Tag - NFC-A */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A)
{
status = rw_t1t_select (p_activate_params->rf_tech_param.param.pa.hr,
p_activate_params->rf_tech_param.param.pa.nfcid1);
}
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
+ }
+ else if (NFC_PROTOCOL_T2T == p_activate_params->protocol)
+ {
+ /* Type2Tag - NFC-A */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A)
{
if (p_activate_params->rf_tech_param.param.pa.sel_rsp == NFC_SEL_RES_NFC_FORUM_T2T)
status = rw_t2t_select ();
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T3T == p_activate_params->protocol)
+ {
+ /* Type3Tag - NFC-F */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_F)
{
status = rw_t3t_select (p_activate_params->rf_tech_param.param.pf.nfcid2,
p_activate_params->rf_tech_param.param.pf.mrti_check,
p_activate_params->rf_tech_param.param.pf.mrti_update);
}
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == p_activate_params->protocol
#if(NXP_EXTNS == TRUE)
- case NFC_PROTOCOL_T3BT:
+ || NFC_PROTOCOL_T3BT == p_activate_params->protocol
#endif
+ )
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
if ( (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_B)
||(p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A) )
{
status = rw_t4t_select ();
}
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == p_activate_params->protocol)
+ { /* ISO 15693 */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_ISO15693)
{
status = rw_i93_select (p_activate_params->rf_tech_param.param.pi93.uid);
}
- break;
- /* TODO set up callback for proprietary protocol */
-
- default:
+ }
+ else
+ {
RW_TRACE_ERROR0 ("RW_SetActivatedTagType Invalid protocol");
}
diff --git a/src/nfc/tags/rw_t1t.c b/src/nfc/tags/rw_t1t.c
index 710b73e..e18c75d 100755
--- a/src/nfc/tags/rw_t1t.c
+++ b/src/nfc/tags/rw_t1t.c
@@ -89,6 +89,8 @@
#if (BT_TRACE_VERBOSE == TRUE)
UINT8 begin_state = p_t1t->state;
#endif
+ (void)conn_id;
+ (void)event;
p_pkt = (BT_HDR *) (p_data->data.p_data);
if (p_pkt == NULL)
@@ -281,6 +283,11 @@
{
rw_t1t_data_cback (conn_id, event, p_data);
break;
+ }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 */
@@ -300,7 +307,7 @@
evt_data.status = NFC_STATUS_FAILED;
evt_data.p_data = NULL;
- (*rw_cb.p_cback) (RW_T1T_INTF_ERROR_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T1T_INTF_ERROR_EVT, (void *) &evt_data);
break;
}
nfc_stop_quick_timer (&p_t1t->timer);
@@ -317,14 +324,6 @@
{
rw_t1t_process_error ();
}
-#if(NXP_EXTNS == TRUE)
- 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;
- }
-#endif
break;
default:
@@ -503,10 +502,6 @@
/* Fetch UID0-3 from RID response message */
STREAM_TO_ARRAY (p_t1t->mem, p_rid_rsp, T1T_CMD_UID_LEN);
-#if(NXP_EXTNS == TRUE)
- /* Free the RID response buffer */
- GKI_freebuf (p_pkt);
-#endif
/* Notify RID response Event */
return RW_T1T_RID_EVT;
@@ -561,6 +556,7 @@
void rw_t1t_process_timeout (TIMER_LIST_ENT *p_tle)
{
tRW_T1T_CB *p_t1t = &rw_cb.tcb.t1t;
+ (void)p_tle;
#if (BT_TRACE_VERBOSE == TRUE)
RW_TRACE_ERROR2 ("T1T timeout. state=%s command (opcode)=0x%02x ", rw_t1t_get_state_name (p_t1t->state), (rw_cb.tcb.t1t.p_cmd_rsp_info)->opcode);
@@ -676,12 +672,12 @@
ndef_data.flags = RW_NDEF_FL_UNKNOWN;
ndef_data.max_size = 0;
ndef_data.cur_size = 0;
- (*rw_cb.p_cback) (rw_event, (tRW_DATA *) &ndef_data);
+ (*rw_cb.p_cback) (rw_event, (void *) &ndef_data);
}
else
{
evt_data.p_data = NULL;
- (*rw_cb.p_cback) (rw_event, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (rw_event, (void *) &evt_data);
}
}
@@ -702,7 +698,7 @@
evt_data.status = status;
rw_t1t_handle_op_complete ();
- (*(rw_cb.p_cback)) (RW_T1T_PRESENCE_CHECK_EVT, (tRW_DATA *) &evt_data);
+ (*(rw_cb.p_cback)) (RW_T1T_PRESENCE_CHECK_EVT, (void *) &evt_data);
}
/*****************************************************************************
diff --git a/src/nfc/tags/rw_t1t_ndef.c b/src/nfc/tags/rw_t1t_ndef.c
index d278b2d..64c0361 100755
--- a/src/nfc/tags/rw_t1t_ndef.c
+++ b/src/nfc/tags/rw_t1t_ndef.c
@@ -644,7 +644,7 @@
evt_data.status = status;
evt_data.p_data = NULL;
rw_t1t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T1T_NDEF_READ_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T1T_NDEF_READ_EVT, (void *) &evt_data);
}
break;
@@ -663,7 +663,7 @@
tlv_data.num_bytes = p_t1t->num_lockbytes;
tlv_data.status = status;
rw_t1t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (tRW_DATA *) &tlv_data);
+ (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (void *) &tlv_data);
}
else if (p_t1t->tlv_detect == TAG_NDEF_TLV)
{
@@ -687,7 +687,7 @@
}
ndef_data.status = status;
rw_t1t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (tRW_DATA *)&ndef_data);
+ (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (void *)&ndef_data);
}
}
break;
@@ -706,7 +706,7 @@
}
rw_t1t_handle_op_complete ();
/* Send response to upper layer */
- (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (tRW_DATA *) &tlv_data);
+ (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (void *) &tlv_data);
}
else if (p_t1t->tlv_detect == TAG_LOCK_CTRL_TLV)
{
@@ -719,7 +719,7 @@
rw_t1t_handle_op_complete ();
/* Send Negative response to upper layer */
- (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (tRW_DATA *)&tlv_data);
+ (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (void *)&tlv_data);
}
else
{
@@ -731,7 +731,7 @@
tlv_data.status = status;
rw_t1t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (tRW_DATA *) &tlv_data);
+ (*rw_cb.p_cback) (RW_T1T_TLV_DETECT_EVT, (void *) &tlv_data);
}
}
}
@@ -760,7 +760,7 @@
/* Send Negative response to upper layer */
rw_t1t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (tRW_DATA *) &ndef_data);
+ (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (void *) &ndef_data);
}
else
{
@@ -786,7 +786,7 @@
ndef_data.status = status;
rw_t1t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (tRW_DATA *)&ndef_data);
+ (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (void *)&ndef_data);
}
}
}
@@ -808,7 +808,7 @@
}
rw_t1t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (tRW_DATA *) &ndef_data);
+ (*rw_cb.p_cback) (RW_T1T_NDEF_DETECT_EVT, (void *) &ndef_data);
}
}
break;
@@ -2218,11 +2218,7 @@
{
/* Set/clear lock_attr byte bits based on whether a particular lock bit is set or not
* each bit in lock_attr represents one byte in Tag read only attribute */
-#if(NXP_EXTNS == TRUE)
if ((p_t1t->lockbyte[num_dynamic_lock_bytes].lock_byte & rw_t1t_mask_bits[xx]) && (block_count < T1T_BLOCKS_PER_SEGMENT))
-#else
- if (p_t1t->lockbyte[num_dynamic_lock_bytes].lock_byte & rw_t1t_mask_bits[xx])
-#endif
{
p_t1t->lock_attr[block_count] |= 0x01 << bits_covered;
}
diff --git a/src/nfc/tags/rw_t2t.c b/src/nfc/tags/rw_t2t.c
index ddf5b9a..36a8f48 100755
--- a/src/nfc/tags/rw_t2t.c
+++ b/src/nfc/tags/rw_t2t.c
@@ -102,7 +102,7 @@
#endif
evt_data.status = p_data->status;
evt_data.p_data = p_pkt;
- (*rw_cb.p_cback) (RW_T2T_RAW_FRAME_EVT, (tRW_DATA *)&evt_data);
+ (*rw_cb.p_cback) (RW_T2T_RAW_FRAME_EVT, (void *)&evt_data);
return;
}
#if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE))
@@ -249,13 +249,13 @@
ndef_data.cur_size = 0;
/* Move back to idle state */
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (rw_event, (tRW_DATA *) &ndef_data);
+ (*rw_cb.p_cback) (rw_event, (void *) &ndef_data);
}
else
{
/* Move back to idle state */
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (rw_event, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (rw_event, (void *) &evt_data);
}
}
@@ -332,6 +332,12 @@
rw_t2t_proc_data (conn_id, &(p_data->data));
break;
}
+ 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:
@@ -350,7 +356,7 @@
evt_data.status = NFC_STATUS_FAILED;
evt_data.p_data = NULL;
- (*rw_cb.p_cback) (RW_T2T_INTF_ERROR_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T2T_INTF_ERROR_EVT, (void *) &evt_data);
break;
}
nfc_stop_quick_timer (&p_t2t->t2_timer);
@@ -374,12 +380,6 @@
{
rw_t2t_process_error ();
}
-#if(NXP_EXTNS == TRUE)
- /* Free the response buffer in case of invalid response*/
- if (p_data != NULL) {
- GKI_freebuf((BT_HDR *) (p_data->data.p_data));
- }
-#endif
break;
default:
@@ -471,6 +471,7 @@
{
tRW_READ_DATA evt_data;
tRW_T2T_CB *p_t2t = &rw_cb.tcb.t2t;
+ (void)p_tle;
if (p_t2t->state == RW_T2T_STATE_CHECK_PRESENCE)
{
@@ -497,7 +498,7 @@
rw_t2t_handle_op_complete ();
evt_data.status = NFC_STATUS_OK;
evt_data.p_data = NULL;
- (*rw_cb.p_cback) (RW_T2T_SELECT_CPLT_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T2T_SELECT_CPLT_EVT, (void *) &evt_data);
}
else
{
@@ -623,7 +624,7 @@
/* If not Halt move to idle state */
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (rw_event, (tRW_DATA *) &ndef_data);
+ (*rw_cb.p_cback) (rw_event, (void *) &ndef_data);
}
else
{
@@ -633,7 +634,7 @@
rw_t2t_handle_op_complete ();
p_t2t->substate = RW_T2T_SUBSTATE_NONE;
- (*rw_cb.p_cback) (rw_event, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (rw_event, (void *) &evt_data);
}
}
@@ -654,7 +655,7 @@
evt_data.status = status;
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T2T_PRESENCE_CHECK_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T2T_PRESENCE_CHECK_EVT, (void *) &evt_data);
}
/*******************************************************************************
@@ -706,7 +707,7 @@
evt_data.status = NFC_STATUS_FAILED;
event = rw_t2t_info_to_event (p_cmd_rsp_info);
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (event, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (event, (void *) &evt_data);
}
}
}
diff --git a/src/nfc/tags/rw_t2t_ndef.c b/src/nfc/tags/rw_t2t_ndef.c
index 40c886c..74ceeac 100755
--- a/src/nfc/tags/rw_t2t_ndef.c
+++ b/src/nfc/tags/rw_t2t_ndef.c
@@ -320,14 +320,14 @@
}
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T2T_NDEF_DETECT_EVT, (tRW_DATA *) &ndef_data);
+ (*rw_cb.p_cback) (RW_T2T_NDEF_DETECT_EVT, (void *) &ndef_data);
}
else if (p_t2t->tlv_detect == TAG_PROPRIETARY_TLV)
{
evt_data.msg_len = p_t2t->prop_msg_len;
evt_data.status = status;
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T2T_TLV_DETECT_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T2T_TLV_DETECT_EVT, (void *) &evt_data);
}
else
{
@@ -347,7 +347,7 @@
}
tlv_data.status = status;
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T2T_TLV_DETECT_EVT, (tRW_DATA *) &tlv_data);
+ (*rw_cb.p_cback) (RW_T2T_TLV_DETECT_EVT, (void *) &tlv_data);
}
}
@@ -1657,7 +1657,7 @@
evt_data.status = failed ? NFC_STATUS_FAILED : NFC_STATUS_OK;
evt_data.p_data = NULL;
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T2T_NDEF_READ_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T2T_NDEF_READ_EVT, (void *) &evt_data);
}
}
@@ -1829,7 +1829,7 @@
p_t2t->ndef_msg_len = p_t2t->new_ndef_msg_len;
}
rw_t2t_handle_op_complete ();
- (*rw_cb.p_cback) (RW_T2T_NDEF_WRITE_EVT, (tRW_DATA *) &evt_data);
+ (*rw_cb.p_cback) (RW_T2T_NDEF_WRITE_EVT, (void *) &evt_data);
}
}
diff --git a/src/nfc/tags/rw_t3t.c b/src/nfc/tags/rw_t3t.c
index e23accf..2687608 100755
--- a/src/nfc/tags/rw_t3t.c
+++ b/src/nfc/tags/rw_t3t.c
@@ -1384,7 +1384,7 @@
p_cb->rw_state = RW_T3T_STATE_IDLE;
rw_t3t_update_ndef_flag (&evt_data.flags);
/* Notify app of NDEF detection result */
- (*(rw_cb.p_cback)) (RW_T3T_NDEF_DETECT_EVT, (tRW_DATA *) &evt_data);
+ (*(rw_cb.p_cback)) (RW_T3T_NDEF_DETECT_EVT, (void *) &evt_data);
GKI_freebuf (p_msg_rsp);
}
@@ -1425,13 +1425,13 @@
p_msg_rsp->len -= T3T_MSG_RSP_OFFSET_CHECK_DATA;
evt_data.status = NFC_STATUS_OK;
evt_data.p_data = p_msg_rsp;
- (*(rw_cb.p_cback)) (RW_T3T_CHECK_EVT, (tRW_DATA *) &evt_data);
+ (*(rw_cb.p_cback)) (RW_T3T_CHECK_EVT, (void *) &evt_data);
}
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback)) (RW_T3T_CHECK_CPLT_EVT, (tRW_DATA *) &nfc_status);
+ (*(rw_cb.p_cback)) (RW_T3T_CHECK_CPLT_EVT, (void *) &nfc_status);
}
/*****************************************************************************
@@ -1467,7 +1467,7 @@
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback)) (RW_T3T_UPDATE_CPLT_EVT, (tRW_DATA *)&evt_data);
+ (*(rw_cb.p_cback)) (RW_T3T_UPDATE_CPLT_EVT, (void *)&evt_data);
GKI_freebuf (p_msg_rsp);
}
@@ -1498,7 +1498,7 @@
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback)) (RW_T3T_RAW_FRAME_EVT, (tRW_DATA *) &evt_data);
+ (*(rw_cb.p_cback)) (RW_T3T_RAW_FRAME_EVT, (void *) &evt_data);
}
/*****************************************************************************
@@ -1560,7 +1560,7 @@
p_msg_rsp->len = rsp_num_bytes_rx;
read_data.p_data = p_msg_rsp;
- (*(rw_cb.p_cback)) (RW_T3T_CHECK_EVT, (tRW_DATA *) &read_data);
+ (*(rw_cb.p_cback)) (RW_T3T_CHECK_EVT, (void *) &read_data);
/* Send CHECK cmd for next NDEF segment, if needed */
if (!(p_cb->flags & RW_T3T_FL_IS_FINAL_NDEF_SEGMENT))
@@ -1753,6 +1753,7 @@
BT_HDR *p_cmd_buf;
UINT8 *p, *p_cmd_start;
tRW_DATA evt_data;
+ (void)sensf_res_buf_size;
/* Validate response for NDEF poll */
if ((nci_status == NCI_STATUS_OK) && (num_responses > 0))
@@ -1920,6 +1921,8 @@
static void rw_t3t_handle_fmt_poll_rsp (tRW_T3T_CB *p_cb, UINT8 nci_status, UINT8 num_responses, UINT8 sensf_res_buf_size, UINT8 *p_sensf_res_buf)
{
tRW_DATA evt_data;
+ (void)sensf_res_buf_size;
+ (void)p_sensf_res_buf;
evt_data.status = NFC_STATUS_OK;
@@ -2071,6 +2074,8 @@
UINT8 tempU8;
UINT16 checksum, i;
UINT32 tempU32 = 0;
+ (void)sensf_res_buf_size;
+ (void)p_sensf_res_buf;
evt_data.status = NFC_STATUS_OK;
@@ -2258,6 +2263,7 @@
BT_HDR *p_msg = p_data->p_data;
BOOLEAN free_msg = FALSE; /* if TRUE, free msg buffer before returning */
UINT8 *p, sod;
+ (void)conn_id;
/* Stop rsponse timer */
nfc_stop_quick_timer (&p_cb->timer);
@@ -2508,6 +2514,7 @@
static tNFC_STATUS rw_t3t_unselect (UINT8 peer_nfcid2[])
{
tRW_T3T_CB *p_cb = &rw_cb.tcb.t3t;
+ (void)peer_nfcid2;
#if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE))
/* Display stats */
diff --git a/src/nfc/tags/rw_t4t.c b/src/nfc/tags/rw_t4t.c
index 5af894f..619bd6e 100755
--- a/src/nfc/tags/rw_t4t.c
+++ b/src/nfc/tags/rw_t4t.c
@@ -65,8 +65,8 @@
#define RW_T4T_STATE_PRESENCE_CHECK 0x05 /* checking presence of tag */
#define RW_T4T_STATE_SET_READ_ONLY 0x06 /* convert tag to read only */
-#if(NXP_EXTNS == TRUE)
#define RW_T4T_STATE_NDEF_FORMAT 0x07 /* performing NDEF format */
+#if(NXP_EXTNS == TRUE)
#define RW_T3BT_STATE_GET_PROP_DATA 0x08
#endif
/* sub state */
@@ -80,7 +80,6 @@
#define RW_T4T_SUBSTATE_WAIT_UPDATE_NLEN 0x07 /* waiting for response of updating NLEN */
#define RW_T4T_SUBSTATE_WAIT_UPDATE_CC 0x08 /* waiting for response of updating CC */
-#if(NXP_EXTNS == TRUE)
#define RW_T4T_SUBSTATE_WAIT_GET_HW_VERSION 0x09
#define RW_T4T_SUBSTATE_WAIT_GET_SW_VERSION 0x0A
#define RW_T4T_SUBSTATE_WAIT_GET_UID 0x0B
@@ -89,6 +88,7 @@
#define RW_T4T_SUBSTATE_WAIT_CREATE_NDEF 0x0E
#define RW_T4T_SUBSTATE_WAIT_WRITE_CC 0x0F
#define RW_T4T_SUBSTATE_WAIT_WRITE_NDEF 0x10
+#if(NXP_EXTNS == TRUE)
#define RW_T3BT_SUBSTATE_WAIT_GET_ATTRIB 0x11
#define RW_T3BT_SUBSTATE_WAIT_GET_PUPI 0x12
#endif
@@ -107,7 +107,6 @@
static BOOLEAN rw_t4t_select_application (UINT8 version);
static BOOLEAN rw_t4t_validate_cc_file (void);
-#if(NXP_EXTNS == TRUE)
static BOOLEAN rw_t4t_get_hw_version (void);
static BOOLEAN rw_t4t_get_sw_version (void);
static BOOLEAN rw_t4t_create_app (void);
@@ -116,10 +115,11 @@
static BOOLEAN rw_t4t_create_ndef (void);
static BOOLEAN rw_t4t_write_cc (void);
static BOOLEAN rw_t4t_write_ndef (void);
+#if(NXP_EXTNS == TRUE)
static BOOLEAN rw_t3bt_get_pupi (void);
-static void rw_t4t_sm_ndef_format (BT_HDR *p_r_apdu);
static void rw_t3Bt_sm_get_card_id(BT_HDR *p_r_apdu);
#endif
+static void rw_t4t_sm_ndef_format (BT_HDR *p_r_apdu);
static void rw_t4t_handle_error (tNFC_STATUS status, UINT8 sw1, UINT8 sw2);
static void rw_t4t_sm_detect_ndef (BT_HDR *p_r_apdu);
static void rw_t4t_sm_read_ndef (BT_HDR *p_r_apdu);
@@ -154,7 +154,6 @@
return TRUE;
}
-#if(NXP_EXTNS == TRUE)
/*******************************************************************************
**
** Function rw_t4t_get_hw_version
@@ -275,7 +274,6 @@
break;
default:
return FALSE;
- break;
}
}
else
@@ -340,7 +338,8 @@
tRW_T4T_CB *p_t4t = &rw_cb.tcb.t4t;
BT_HDR *p_c_apdu;
UINT8 *p;
- UINT8 df_name[] = {0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01};
+ UINT8 df_name[] = {0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01};
+
p_c_apdu = (BT_HDR *) GKI_getpoolbuf (NFC_RW_POOL_ID);
if (!p_c_apdu)
@@ -357,21 +356,21 @@
UINT16_TO_BE_STREAM (p, 0x0000);
if(p_t4t->card_type == T4T_TYPE_DESFIRE_EV1)
{
- UINT8_TO_BE_STREAM(p,(T4T_CMD_MAX_HDR_SIZE + sizeof(df_name)+2));
- UINT24_TO_BE_STREAM(p, T4T_DES_EV1_NFC_APP_ID);
- UINT16_TO_BE_STREAM(p, 0x0F21); /*Key settings and no.of keys */
- UINT16_TO_BE_STREAM(p, 0x05E1); /* ISO file ID */
- ARRAY_TO_BE_STREAM(p,df_name,sizeof(df_name)); /*DF file name */
- UINT8_TO_BE_STREAM(p,0x00); /* Le */
+ UINT8_TO_BE_STREAM (p, (T4T_CMD_MAX_HDR_SIZE + sizeof(df_name) + 2));
+ UINT24_TO_BE_STREAM (p, T4T_DES_EV1_NFC_APP_ID);
+ UINT16_TO_BE_STREAM (p, 0x0F21); /*Key settings and no.of keys */
+ UINT16_TO_BE_STREAM (p, 0x05E1); /* ISO file ID */
+ ARRAY_TO_BE_STREAM (p, df_name, sizeof(df_name)); /*DF file name */
+ UINT8_TO_BE_STREAM (p, 0x00); /* Le */
p_c_apdu->len = 20;
}
else
{
- UINT8_TO_BE_STREAM(p, T4T_CMD_MAX_HDR_SIZE);
- UINT24_TO_BE_STREAM(p, T4T_DES_EV0_NFC_APP_ID);
- UINT16_TO_BE_STREAM(p, 0x0F01); /*Key settings and no.of keys */
- UINT8_TO_BE_STREAM(p,0x00); /* Le */
- p_c_apdu->len = 11;
+ UINT8_TO_BE_STREAM (p, T4T_CMD_MAX_HDR_SIZE);
+ UINT24_TO_BE_STREAM (p, T4T_DES_EV0_NFC_APP_ID);
+ UINT16_TO_BE_STREAM (p, 0x0F01); /*Key settings and no.of keys */
+ UINT8_TO_BE_STREAM (p, 0x00); /* Le */
+ p_c_apdu->len = 11;
}
if (!rw_t4t_send_to_lower (p_c_apdu))
@@ -418,7 +417,7 @@
}
else
{
- UINT24_TO_BE_STREAM(p, T4T_DES_EV0_NFC_APP_ID);
+ UINT24_TO_BE_STREAM(p, T4T_DES_EV0_NFC_APP_ID);
}
UINT8_TO_BE_STREAM(p,0x00); /* Le */
@@ -462,14 +461,14 @@
UINT16_TO_BE_STREAM (p, 0x0000);
if(p_t4t->card_type == T4T_TYPE_DESFIRE_EV1)
{
- UINT8_TO_BE_STREAM(p,0x09); /* Lc: length of wrapped data */
- UINT8_TO_BE_STREAM(p,0x01); /* EV1 CC file id */
- UINT16_TO_BE_STREAM(p,0x03E1); /* ISO file id */
+ UINT8_TO_BE_STREAM (p, 0x09); /* Lc: length of wrapped data */
+ UINT8_TO_BE_STREAM (p, 0x01); /* EV1 CC file id */
+ UINT16_TO_BE_STREAM (p, 0x03E1); /* ISO file id */
}
else
{
- UINT8_TO_BE_STREAM(p,0x07); /* Lc: length of wrapped data */
- UINT8_TO_BE_STREAM(p,0x03); /* DESFire CC file id */
+ UINT8_TO_BE_STREAM (p, 0x07); /* Lc: length of wrapped data */
+ UINT8_TO_BE_STREAM (p, 0x03); /* DESFire CC file id */
}
UINT8_TO_BE_STREAM(p,0x00); /* COMM settings */
UINT16_TO_BE_STREAM(p,0xEEEE); /* Access rights */
@@ -516,21 +515,21 @@
UINT16_TO_BE_STREAM (p, 0x0000);
if(p_t4t->card_type == T4T_TYPE_DESFIRE_EV1)
{
- UINT8_TO_BE_STREAM(p,0x09); /* Lc: length of wrapped data */
- UINT8_TO_BE_STREAM(p,0x02); /* DESFEv1 NDEF file id */
- UINT16_TO_BE_STREAM(p,0x04E1); /* ISO file id */
+ UINT8_TO_BE_STREAM (p, 0x09); /* Lc: length of wrapped data */
+ UINT8_TO_BE_STREAM (p, 0x02); /* DESFEv1 NDEF file id */
+ UINT16_TO_BE_STREAM (p, 0x04E1); /* ISO file id */
}
else
{
- UINT8_TO_BE_STREAM(p,0x07);
- UINT8_TO_BE_STREAM(p,0x04); /* DESF4 NDEF file id */
+ UINT8_TO_BE_STREAM (p, 0x07);
+ UINT8_TO_BE_STREAM (p, 0x04); /* DESF4 NDEF file id */
}
- UINT8_TO_BE_STREAM(p,0x00); /* COMM settings */
- UINT16_TO_BE_STREAM(p,0xEEEE); /* Access rights */
- UINT16_TO_STREAM(p,p_t4t->card_size);
- UINT8_TO_BE_STREAM(p,0x00); /* Set card size */
- UINT8_TO_BE_STREAM(p,0x00); /* Le */
+ UINT8_TO_BE_STREAM (p, 0x00); /* COMM settings */
+ UINT16_TO_BE_STREAM (p, 0xEEEE); /* Access rights */
+ UINT16_TO_STREAM (p, p_t4t->card_size);
+ UINT8_TO_BE_STREAM (p, 0x00); /* Set card size */
+ UINT8_TO_BE_STREAM (p, 0x00); /* Le */
p_c_apdu->len = (p_t4t->card_type == T4T_TYPE_DESFIRE_EV1)?15:13;
@@ -555,7 +554,7 @@
tRW_T4T_CB *p_t4t = &rw_cb.tcb.t4t;
BT_HDR *p_c_apdu;
UINT8 *p;
- UINT8 CCFileBytes[] = {0x00,0x0f,0x10,0x00,0x3B,0x00,0x34,0x04,0x06,0xE1,0x04,0x04,0x00,0x00,0x00};
+ UINT8 CCFileBytes[] = {0x00, 0x0F, 0x10, 0x00, 0x3B, 0x00, 0x34, 0x04, 0x06, 0xE1, 0x04, 0x04, 0x00, 0x00, 0x00};
p_c_apdu = (BT_HDR *) GKI_getpoolbuf (NFC_RW_POOL_ID);
@@ -574,14 +573,14 @@
UINT8_TO_BE_STREAM(p,0x16); /* Lc: length of wrapped data */
if(p_t4t->card_type == T4T_TYPE_DESFIRE_EV1)
{
- CCFileBytes[2] = 0x20;
- CCFileBytes[11] = p_t4t->card_size >> 8;
- CCFileBytes[12] = (UINT8) p_t4t->card_size;
- UINT8_TO_BE_STREAM(p, 0x01); /* CC file id */
+ CCFileBytes[2] = 0x20;
+ CCFileBytes[11] = p_t4t->card_size >> 8;
+ CCFileBytes[12] = (UINT8) p_t4t->card_size;
+ UINT8_TO_BE_STREAM (p, 0x01); /* CC file id */
}
else
{
- UINT8_TO_BE_STREAM(p, 0x03);
+ UINT8_TO_BE_STREAM (p, 0x03);
}
UINT24_TO_BE_STREAM(p, 0x000000); /* Set the offset */
UINT24_TO_BE_STREAM(p, 0x0F0000); /* Set available length */
@@ -633,7 +632,7 @@
}
else
{
- UINT8_TO_BE_STREAM(p, 0x04);
+ UINT8_TO_BE_STREAM (p, 0x04);
}
UINT24_TO_BE_STREAM(p, 0x000000); /* Set the offset */
UINT24_TO_BE_STREAM(p, 0x020000); /* Set available length */
@@ -648,7 +647,6 @@
}
return TRUE;
}
-#endif
#if(NXP_EXTNS == TRUE)
static BOOLEAN rw_t3bt_get_pupi (void)
@@ -1149,11 +1147,11 @@
event = RW_T4T_SET_TO_RO_EVT;
break;
-#if(NXP_EXTNS == TRUE)
case RW_T4T_STATE_NDEF_FORMAT:
event = RW_T4T_NDEF_FORMAT_CPLT_EVT;
rw_data.status = NFC_STATUS_FAILED;
break;
+#if(NXP_EXTNS == TRUE)
case RW_T3BT_STATE_GET_PROP_DATA:
event = RW_T3BT_RAW_READ_CPLT_EVT;
rw_data.status = NFC_STATUS_FAILED;
@@ -1176,7 +1174,7 @@
p_t4t->state = RW_T4T_STATE_IDLE;
}
}
-#if(NXP_EXTNS == TRUE)
+
/*******************************************************************************
**
** Function rw_t4t_sm_ndef_format
@@ -1412,6 +1410,7 @@
}
}
+#if(NXP_EXTNS == TRUE)
static void rw_t3Bt_sm_get_card_id(BT_HDR *p_r_apdu)
{
tRW_T4T_CB *p_t4t = &rw_cb.tcb.t4t;
@@ -2044,6 +2043,7 @@
tRW_T4T_CB *p_t4t = &rw_cb.tcb.t4t;
BT_HDR *p_r_apdu;
tRW_DATA rw_data;
+ (void)conn_id;
#if (BT_TRACE_VERBOSE == TRUE)
UINT8 begin_state = p_t4t->state;
@@ -2060,7 +2060,6 @@
return;
case NFC_ERROR_CEVT:
-#if(NXP_EXTNS == TRUE)
if (p_t4t->state == RW_T4T_STATE_PRESENCE_CHECK)
{
p_t4t->state = RW_T4T_STATE_IDLE;
@@ -2083,18 +2082,6 @@
rw_data.status = (tNFC_STATUS) (*(UINT8*) p_data);
(*(rw_cb.p_cback)) (RW_T4T_INTF_ERROR_EVT, &rw_data);
}
-#else
- rw_data.status = (tNFC_STATUS) (*(UINT8*) p_data);
-
- if (p_t4t->state != RW_T4T_STATE_IDLE)
- {
- rw_t4t_handle_error (rw_data.status, 0, 0);
- }
- else
- {
- (*(rw_cb.p_cback)) (RW_T4T_INTF_ERROR_EVT, &rw_data);
- }
-#endif
return;
case NFC_DATA_CEVT:
@@ -2181,11 +2168,11 @@
rw_t4t_sm_set_readonly (p_r_apdu);
GKI_freebuf (p_r_apdu);
break;
-#if(NXP_EXTNS == TRUE)
case RW_T4T_STATE_NDEF_FORMAT:
rw_t4t_sm_ndef_format(p_r_apdu);
GKI_freebuf (p_r_apdu);
break;
+#if(NXP_EXTNS == TRUE)
case RW_T3BT_STATE_GET_PROP_DATA:
rw_t3Bt_sm_get_card_id(p_r_apdu);
GKI_freebuf (p_r_apdu);
@@ -2207,7 +2194,6 @@
#endif
}
-#if(NXP_EXTNS == TRUE)
/*******************************************************************************
**
** Function RW_T4tFormatNDef
@@ -2238,7 +2224,7 @@
return NFC_STATUS_OK;
}
-#endif
+
/*******************************************************************************
**
** Function rw_t4t_select
@@ -2676,7 +2662,6 @@
return ("WAIT_UPDATE_RESP");
case RW_T4T_SUBSTATE_WAIT_UPDATE_NLEN:
return ("WAIT_UPDATE_NLEN");
-#if(NXP_EXTNS == TRUE)
case RW_T4T_SUBSTATE_WAIT_GET_HW_VERSION:
return ("WAIT_GET_HW_VERSION");
case RW_T4T_SUBSTATE_WAIT_GET_SW_VERSION :
@@ -2693,6 +2678,7 @@
return ("WAIT_WRITE_CC");
case RW_T4T_SUBSTATE_WAIT_WRITE_NDEF:
return ("WAIT_WRITE_NDEF");
+#if(NXP_EXTNS == TRUE)
case RW_T3BT_SUBSTATE_WAIT_GET_ATTRIB:
return ("WAIT_GET_ATTRIB");
case RW_T3BT_SUBSTATE_WAIT_GET_PUPI:
diff --git a/src/nfca_version.c b/src/nfca_version.c
index d415d6f..047cdf4 100644
--- a/src/nfca_version.c
+++ b/src/nfca_version.c
@@ -17,7 +17,7 @@
******************************************************************************/
#include "bt_types.h"
-const UINT8 nfca_version_string[] = "NFCDROID-AOSP_L_00.01";
+const UINT8 nfca_version_string[] = "NFCDROID-AOSP_M_00.01";
/*
// The following string should be manually updated to contain the