diff options
author | Love Khanna <love.khanna@nxp.com> | 2018-03-19 19:13:06 +0530 |
---|---|---|
committer | Ruchi Kandoi <kandoiruchi@google.com> | 2018-03-26 23:33:14 +0000 |
commit | e09f8fe52be454b80a1ef33744ca665ce95101d9 (patch) | |
tree | 2dc630074bf2980452b8b8f8fb806dac464f0328 /extns | |
parent | fc21a70766bdb970c7c695d0ead58b1a3ce6bae5 (diff) | |
download | android_hardware_nxp_nfc-e09f8fe52be454b80a1ef33744ca665ce95101d9.tar.gz android_hardware_nxp_nfc-e09f8fe52be454b80a1ef33744ca665ce95101d9.tar.bz2 android_hardware_nxp_nfc-e09f8fe52be454b80a1ef33744ca665ce95101d9.zip |
Chip type decided at runtime.
Dynamically detect chip type, load configuarations
and firmware file base on chip type.
Bug: 75980364
Test: NFC enable/disable.
Merged-In: Iec6bd7f82ed65482df4b800e841e39e88968e201
Change-Id: Iec6bd7f82ed65482df4b800e841e39e88968e201
(cherry picked from commit e35823097843ed8c99e7c2b34c28ff6460901e6c)
Diffstat (limited to 'extns')
-rwxr-xr-x | extns/impl/Nxp_Features.h | 409 |
1 files changed, 36 insertions, 373 deletions
diff --git a/extns/impl/Nxp_Features.h b/extns/impl/Nxp_Features.h index 10f2400..6c03877 100755 --- a/extns/impl/Nxp_Features.h +++ b/extns/impl/Nxp_Features.h @@ -16,26 +16,16 @@ * ******************************************************************************/ -#include <unistd.h> -#include <string.h> #ifndef NXP_FEATURES_H #define NXP_FEATURES_H - -#define STRMAX_1 40 -#define STRMAX_2 100 -#define FW_DLL_EXTENSION ".so" +#include <unistd.h> +#include <string> #define FW_MOBILE_MAJOR_NUMBER_PN553 0x01 +#define FW_MOBILE_MAJOR_NUMBER_PN81A 0x02 #define FW_MOBILE_MAJOR_NUMBER_PN551 0x05 -#define FW_MOBILE_MAJOR_NUMBER_PN48AD 0x01 - -#define NFA_EE_MAX_EE_SUPPORTED 4 - -#define JCOP_VER_3_1 1 -#define JCOP_VER_3_2 2 -#define JCOP_VER_3_3 3 -#define JCOP_VER_4_0 4 - +#define FW_MOBILE_MAJOR_NUMBER_PN557 0x01 + using namespace std; typedef enum { pn547C2 = 0x01, pn65T, @@ -50,86 +40,12 @@ typedef enum { } tNFC_chipType; typedef struct { - /*Flags common to all chip types*/ - uint8_t _NXP_NFCC_EMPTY_DATA_PACKET : 1; - uint8_t _GEMALTO_SE_SUPPORT : 1; - uint8_t _NFCC_I2C_READ_WRITE_IMPROVEMENT : 1; - uint8_t _NFCC_MIFARE_TIANJIN : 1; - uint8_t _NFCC_MW_RCVRY_BLK_FW_DNLD : 1; - uint8_t _NFCC_DYNAMIC_DUAL_UICC : 1; - uint8_t _NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH : 1; - uint8_t _NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH : 1; - uint8_t _NFCC_FW_WA : 1; - uint8_t _NFCC_FORCE_NCI1_0_INIT : 1; - uint8_t _NFCC_ROUTING_BLOCK_BIT : 1; - uint8_t _NFCC_SPI_FW_DOWNLOAD_SYNC : 1; - uint8_t _HW_ANTENNA_LOOP4_SELF_TEST : 1; - uint8_t _NFCEE_REMOVED_NTF_RECOVERY : 1; - uint8_t _NFCC_FORCE_FW_DOWNLOAD : 1; - uint8_t _UICC_CREATE_CONNECTIVITY_PIPE : 1; - uint8_t _NFCC_AID_MATCHING_PLATFORM_CONFIG : 1; - uint8_t _NFCC_ROUTING_BLOCK_BIT_PROP : 1; - uint8_t _NXP_NFC_UICC_ETSI12 : 1; - uint8_t _NFA_EE_MAX_EE_SUPPORTED : 3; -} tNfc_nfccFeatureList; - -typedef struct { - uint8_t _ESE_EXCLUSIVE_WIRED_MODE : 2; - uint8_t _ESE_WIRED_MODE_RESUME : 2; - uint8_t _ESE_WIRED_MODE_TIMEOUT : 2; - uint8_t _ESE_PN67T_RESET : 2; - uint8_t _ESE_APDU_GATE_RESET : 2; - uint8_t _ESE_WIRED_MODE_DISABLE_DISCOVERY : 1; - uint8_t _LEGACY_APDU_GATE : 1; - uint8_t _TRIPLE_MODE_PROTECTION : 1; - uint8_t _ESE_FELICA_CLT : 1; - uint8_t _WIRED_MODE_STANDBY_PROP : 1; - uint8_t _WIRED_MODE_STANDBY : 1; - uint8_t _ESE_DUAL_MODE_PRIO_SCHEME : 2; - uint8_t _ESE_FORCE_ENABLE : 1; - uint8_t _ESE_RESET_METHOD : 1; - uint8_t _EXCLUDE_NV_MEM_DEPENDENCY : 1; - uint8_t _ESE_ETSI_READER_ENABLE : 1; - uint8_t _ESE_SVDD_SYNC : 1; - uint8_t _NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION : 1; - uint8_t _ESE_JCOP_DWNLD_PROTECTION : 1; - uint8_t _UICC_HANDLE_CLEAR_ALL_PIPES : 1; - uint8_t _GP_CONTINOUS_PROCESSING : 1; - uint8_t _ESE_DWP_SPI_SYNC_ENABLE : 1; - uint8_t _ESE_ETSI12_PROP_INIT : 1; - uint8_t _ESE_WIRED_MODE_PRIO : 1; - uint8_t _ESE_UICC_EXCLUSIVE_WIRED_MODE : 1; - uint8_t _ESE_POWER_MODE : 1; - uint8_t _ESE_P73_ISO_RST : 1; - uint8_t _BLOCK_PROPRIETARY_APDU_GATE : 1; - uint8_t _JCOP_WA_ENABLE : 1; - uint8_t _NXP_LDR_SVC_VER_2 : 1; - uint8_t _NXP_ESE_VER : 3; -} tNfc_eseFeatureList; -typedef struct { uint8_t _NFCC_RESET_RSP_LEN; } tNfc_platformFeatureList; - -typedef struct { - uint8_t _NCI_INTERFACE_UICC_DIRECT; - uint8_t _NCI_INTERFACE_ESE_DIRECT; - uint8_t _NCI_PWR_LINK_PARAM_CMD_SIZE; - uint8_t _NCI_EE_PWR_LINK_ALWAYS_ON; - uint8_t _NFA_EE_MAX_AID_ENTRIES; - uint8_t _NFC_NXP_AID_MAX_SIZE_DYN : 1; - uint8_t _FW_LIB_PATH[STRMAX_2]; - uint8_t _PLATFORM_LIB_PATH[STRMAX_2]; - uint8_t _PKU_LIB_PATH[STRMAX_2]; + tNFC_chipType chipType; + std::string _FW_LIB_PATH; + std::string _FW_BIN_PATH; uint16_t _PHDNLDNFC_USERDATA_EEPROM_OFFSET; uint16_t _PHDNLDNFC_USERDATA_EEPROM_LEN; uint8_t _FW_MOBILE_MAJOR_NUMBER; -} tNfc_nfcMwFeatureList; - -typedef struct { - uint8_t nfcNxpEse : 1; - tNFC_chipType chipType; - tNfc_nfccFeatureList nfccFL; - tNfc_eseFeatureList eseFL; - tNfc_platformFeatureList platformFL; - tNfc_nfcMwFeatureList nfcMwFL; } tNfc_featureList; extern tNfc_featureList nfcFL; @@ -137,308 +53,55 @@ extern tNfc_featureList nfcFL; #define CONFIGURE_FEATURELIST(chipType) \ { \ nfcFL.chipType = chipType; \ - nfcFL.nfcMwFL._NFC_NXP_AID_MAX_SIZE_DYN = true; \ if (chipType == pn81T) { \ nfcFL.chipType = pn557; \ } else if (chipType == pn80T) { \ nfcFL.chipType = pn553; \ } else if (chipType == pn67T) { \ nfcFL.chipType = pn551; \ - } else if (chipType == pn66T) { \ - nfcFL.chipType = pn548C2; \ - } else if (chipType == pn65T) { \ - nfcFL.chipType = pn547C2; \ } \ - if ((chipType == pn65T) || (chipType == pn66T) || (chipType == pn67T) || \ - (chipType == pn80T) || (chipType == pn81T)) { \ - nfcFL.nfcNxpEse = true; \ - CONFIGURE_FEATURELIST_NFCC_WITH_ESE(chipType) \ - } else { \ - nfcFL.nfcNxpEse = false; \ CONFIGURE_FEATURELIST_NFCC(chipType) \ - } \ - } - -#define CONFIGURE_FEATURELIST_NFCC_WITH_ESE(chipType) \ - { \ - nfcFL.nfccFL._NXP_NFCC_EMPTY_DATA_PACKET = true; \ - nfcFL.nfccFL._GEMALTO_SE_SUPPORT = true; \ - \ - nfcFL.eseFL._ESE_EXCLUSIVE_WIRED_MODE = 1; \ - nfcFL.eseFL._ESE_WIRED_MODE_RESUME = 2; \ - nfcFL.eseFL._ESE_PN67T_RESET = 1; \ - nfcFL.eseFL._ESE_APDU_GATE_RESET = 2; \ - nfcFL.eseFL._NXP_ESE_VER = JCOP_VER_4_0; \ - nfcFL.eseFL._NXP_LDR_SVC_VER_2 = true; \ - \ - if (chipType == pn81T) { \ - CONFIGURE_FEATURELIST_NFCC(pn557) \ - nfcFL.nfccFL._NFCC_SPI_FW_DOWNLOAD_SYNC = true; \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 4; \ - \ - nfcFL.eseFL._ESE_FELICA_CLT = true; \ - nfcFL.eseFL._ESE_DUAL_MODE_PRIO_SCHEME = \ - nfcFL.eseFL._ESE_WIRED_MODE_RESUME; \ - nfcFL.eseFL._ESE_RESET_METHOD = true; \ - nfcFL.eseFL._ESE_POWER_MODE = true; \ - nfcFL.eseFL._ESE_P73_ISO_RST = true; \ - nfcFL.eseFL._WIRED_MODE_STANDBY = true; \ - nfcFL.eseFL._ESE_ETSI_READER_ENABLE = true; \ - nfcFL.eseFL._ESE_SVDD_SYNC = true; \ - nfcFL.eseFL._ESE_JCOP_DWNLD_PROTECTION = true; \ - nfcFL.eseFL._UICC_HANDLE_CLEAR_ALL_PIPES = true; \ - nfcFL.eseFL._GP_CONTINOUS_PROCESSING = false; \ - nfcFL.eseFL._ESE_DWP_SPI_SYNC_ENABLE = true; \ - nfcFL.eseFL._ESE_ETSI12_PROP_INIT = true; \ - } \ - if (chipType == pn80T) { \ - CONFIGURE_FEATURELIST_NFCC(pn553) \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 4; \ - \ - nfcFL.eseFL._ESE_FELICA_CLT = true; \ - nfcFL.eseFL._WIRED_MODE_STANDBY = true; \ - nfcFL.eseFL._ESE_DUAL_MODE_PRIO_SCHEME = \ - nfcFL.eseFL._ESE_WIRED_MODE_RESUME; \ - nfcFL.eseFL._ESE_RESET_METHOD = true; \ - nfcFL.eseFL._ESE_ETSI_READER_ENABLE = true; \ - nfcFL.eseFL._ESE_SVDD_SYNC = true; \ - nfcFL.eseFL._ESE_JCOP_DWNLD_PROTECTION = true; \ - nfcFL.eseFL._UICC_HANDLE_CLEAR_ALL_PIPES = true; \ - nfcFL.eseFL._ESE_DWP_SPI_SYNC_ENABLE = true; \ - nfcFL.eseFL._ESE_POWER_MODE = true; \ - nfcFL.eseFL._ESE_P73_ISO_RST = true; \ - \ - nfcFL.nfcMwFL._NCI_PWR_LINK_PARAM_CMD_SIZE = 0x02; \ - nfcFL.nfcMwFL._NCI_EE_PWR_LINK_ALWAYS_ON = 0x01; \ - } else if (chipType == pn67T) { \ - CONFIGURE_FEATURELIST_NFCC(pn551) \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 3; \ - \ - nfcFL.eseFL._TRIPLE_MODE_PROTECTION = true; \ - nfcFL.eseFL._WIRED_MODE_STANDBY_PROP = true; \ - nfcFL.eseFL._ESE_FORCE_ENABLE = true; \ - nfcFL.eseFL._ESE_ETSI_READER_ENABLE = true; \ - nfcFL.eseFL._ESE_SVDD_SYNC = true; \ - nfcFL.eseFL._LEGACY_APDU_GATE = true; \ - nfcFL.eseFL._NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION = true; \ - nfcFL.eseFL._ESE_DWP_SPI_SYNC_ENABLE = true; \ - nfcFL.eseFL._NXP_ESE_VER = JCOP_VER_3_3; \ - } else if (chipType == pn66T) { \ - CONFIGURE_FEATURELIST_NFCC(pn548C2) \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 3; \ - \ - nfcFL.eseFL._TRIPLE_MODE_PROTECTION = true; \ - nfcFL.eseFL._WIRED_MODE_STANDBY_PROP = true; \ - nfcFL.eseFL._ESE_FORCE_ENABLE = true; \ - nfcFL.eseFL._ESE_ETSI_READER_ENABLE = true; \ - nfcFL.eseFL._ESE_SVDD_SYNC = true; \ - nfcFL.eseFL._LEGACY_APDU_GATE = true; \ - nfcFL.eseFL._NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION = true; \ - nfcFL.eseFL._ESE_DWP_SPI_SYNC_ENABLE = true; \ - nfcFL.eseFL._NXP_ESE_VER = JCOP_VER_3_3; \ - } else if (chipType == pn65T) { \ - CONFIGURE_FEATURELIST_NFCC(pn547C2) \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 3; \ - nfcFL.eseFL._ESE_WIRED_MODE_DISABLE_DISCOVERY = true; \ - nfcFL.eseFL._LEGACY_APDU_GATE = true; \ - } \ } #define CONFIGURE_FEATURELIST_NFCC(chipType) \ { \ - nfcFL.eseFL._ESE_WIRED_MODE_TIMEOUT = 3; \ - nfcFL.eseFL._ESE_WIRED_MODE_DISABLE_DISCOVERY = false; \ - nfcFL.eseFL._LEGACY_APDU_GATE = false; \ - nfcFL.eseFL._TRIPLE_MODE_PROTECTION = false; \ - nfcFL.eseFL._ESE_FELICA_CLT = false; \ - nfcFL.eseFL._WIRED_MODE_STANDBY_PROP = false; \ - nfcFL.eseFL._WIRED_MODE_STANDBY = false; \ - nfcFL.eseFL._ESE_DUAL_MODE_PRIO_SCHEME = \ - nfcFL.eseFL._ESE_WIRED_MODE_TIMEOUT; \ - nfcFL.eseFL._ESE_FORCE_ENABLE = false; \ - nfcFL.eseFL._ESE_RESET_METHOD = false; \ - nfcFL.eseFL._ESE_ETSI_READER_ENABLE = false; \ - nfcFL.eseFL._ESE_SVDD_SYNC = false; \ - nfcFL.eseFL._NFCC_ESE_UICC_CONCURRENT_ACCESS_PROTECTION = false; \ - nfcFL.eseFL._ESE_JCOP_DWNLD_PROTECTION = false; \ - nfcFL.eseFL._UICC_HANDLE_CLEAR_ALL_PIPES = false; \ - nfcFL.eseFL._GP_CONTINOUS_PROCESSING = false; \ - nfcFL.eseFL._ESE_DWP_SPI_SYNC_ENABLE = false; \ - nfcFL.eseFL._ESE_ETSI12_PROP_INIT = false; \ - nfcFL.eseFL._ESE_WIRED_MODE_PRIO = false; \ - nfcFL.eseFL._ESE_UICC_EXCLUSIVE_WIRED_MODE = false; \ - nfcFL.eseFL._ESE_POWER_MODE = false; \ - nfcFL.eseFL._ESE_P73_ISO_RST = false; \ - nfcFL.eseFL._BLOCK_PROPRIETARY_APDU_GATE = false; \ - nfcFL.eseFL._JCOP_WA_ENABLE = true; \ - nfcFL.eseFL._EXCLUDE_NV_MEM_DEPENDENCY = false; \ - nfcFL.nfccFL._NXP_NFC_UICC_ETSI12 = false; \ - nfcFL.nfccFL._NFCC_SPI_FW_DOWNLOAD_SYNC = false; \ - \ - nfcFL.platformFL._NFCC_RESET_RSP_LEN = 0; \ + nfcFL._PHDNLDNFC_USERDATA_EEPROM_OFFSET = 0x023CU; \ + nfcFL._PHDNLDNFC_USERDATA_EEPROM_LEN = 0x0C80U; \ \ - nfcFL.nfcMwFL._NCI_INTERFACE_UICC_DIRECT = 0x00; \ - nfcFL.nfcMwFL._NCI_INTERFACE_ESE_DIRECT = 0x00; \ - nfcFL.nfcMwFL._NCI_PWR_LINK_PARAM_CMD_SIZE = 0x02; \ - nfcFL.nfcMwFL._NCI_EE_PWR_LINK_ALWAYS_ON = 0x01; \ - nfcFL.nfcMwFL._PHDNLDNFC_USERDATA_EEPROM_OFFSET = 0x023CU; \ - nfcFL.nfcMwFL._PHDNLDNFC_USERDATA_EEPROM_LEN = 0x0C80U; \ - nfcFL.nfcMwFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN48AD; \ + if (chipType == pn557 || chipType == pn81T) { \ \ - if (chipType == pn557) { \ - nfcFL.nfccFL._NFCC_I2C_READ_WRITE_IMPROVEMENT = true; \ - nfcFL.nfccFL._NFCC_MIFARE_TIANJIN = false; \ - nfcFL.nfccFL._NFCC_MW_RCVRY_BLK_FW_DNLD = true; \ - nfcFL.nfccFL._NFCC_DYNAMIC_DUAL_UICC = true; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH = false; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH = true; \ - nfcFL.nfccFL._NFCC_FW_WA = true; \ - nfcFL.nfccFL._NFCC_FORCE_NCI1_0_INIT = false; \ - nfcFL.nfccFL._NFCC_SPI_FW_DOWNLOAD_SYNC = true; \ - nfcFL.nfccFL._HW_ANTENNA_LOOP4_SELF_TEST = false; \ - nfcFL.nfccFL._NFCEE_REMOVED_NTF_RECOVERY = true; \ - nfcFL.nfccFL._NFCC_FORCE_FW_DOWNLOAD = true; \ - nfcFL.nfccFL._UICC_CREATE_CONNECTIVITY_PIPE = true; \ - nfcFL.nfccFL._NXP_NFC_UICC_ETSI12 = false; \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 3; \ + STRCPY_FW_LIB("libpn557_fw") \ + STRCPY_FW_BIN("pn557") \ \ - nfcFL.eseFL._ESE_ETSI12_PROP_INIT = true; \ - nfcFL.eseFL._EXCLUDE_NV_MEM_DEPENDENCY = true; \ + nfcFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN557; \ + } else if (chipType == pn553 || chipType == pn80T) { \ \ - nfcFL.platformFL._NFCC_RESET_RSP_LEN = 0x10U; \ + STRCPY_FW_LIB("libpn553_fw") \ + STRCPY_FW_BIN("pn553") \ \ - nfcFL.nfcMwFL._NCI_INTERFACE_UICC_DIRECT = 0x82; \ - nfcFL.nfcMwFL._NCI_INTERFACE_ESE_DIRECT = 0x83; \ + nfcFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN553; \ \ - } else if (chipType == pn553) { \ - nfcFL.nfccFL._NFCC_I2C_READ_WRITE_IMPROVEMENT = true; \ - nfcFL.nfccFL._NFCC_MIFARE_TIANJIN = false; \ - nfcFL.nfccFL._NFCC_MW_RCVRY_BLK_FW_DNLD = true; \ - nfcFL.nfccFL._NFCC_DYNAMIC_DUAL_UICC = true; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH = false; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH = true; \ - nfcFL.nfccFL._NFCC_FW_WA = true; \ - nfcFL.nfccFL._NFCC_FORCE_NCI1_0_INIT = true; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT = true; \ - nfcFL.nfccFL._NFCC_SPI_FW_DOWNLOAD_SYNC = true; \ - nfcFL.nfccFL._HW_ANTENNA_LOOP4_SELF_TEST = false; \ - nfcFL.nfccFL._NFCEE_REMOVED_NTF_RECOVERY = true; \ - nfcFL.nfccFL._NFCC_FORCE_FW_DOWNLOAD = true; \ - nfcFL.nfccFL._UICC_CREATE_CONNECTIVITY_PIPE = true; \ - nfcFL.nfccFL._NFCC_AID_MATCHING_PLATFORM_CONFIG = false; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT_PROP = false; \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 3; \ + } else if (chipType == pn551 || chipType == pn67T) { \ \ - nfcFL.eseFL._ESE_ETSI12_PROP_INIT = true; \ - nfcFL.eseFL._JCOP_WA_ENABLE = false; \ - nfcFL.eseFL._EXCLUDE_NV_MEM_DEPENDENCY = true; \ + STRCPY_FW_LIB("libpn551_fw") \ + STRCPY_FW_BIN("pn551") \ \ - nfcFL.platformFL._NFCC_RESET_RSP_LEN = 0x10U; \ + nfcFL._PHDNLDNFC_USERDATA_EEPROM_OFFSET = 0x02BCU; \ + nfcFL._PHDNLDNFC_USERDATA_EEPROM_LEN = 0x0C00U; \ + nfcFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN551; \ \ - nfcFL.nfcMwFL._NCI_INTERFACE_UICC_DIRECT = 0x82; \ - nfcFL.nfcMwFL._NCI_INTERFACE_ESE_DIRECT = 0x83; \ - \ - SRTCPY_FW("libpn553tc_fw", "libpn553tc_fw_platform", \ - "libpn553tc_fw_pku") \ - \ - nfcFL.nfcMwFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN553; \ - \ - } else if (chipType == pn551) { \ - nfcFL.nfccFL._NFCC_I2C_READ_WRITE_IMPROVEMENT = true; \ - nfcFL.nfccFL._NFCC_MIFARE_TIANJIN = true; \ - nfcFL.nfccFL._NFCC_MW_RCVRY_BLK_FW_DNLD = false; \ - nfcFL.nfccFL._NFCC_DYNAMIC_DUAL_UICC = false; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH = true; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH = false; \ - nfcFL.nfccFL._NFCC_FW_WA = false; \ - nfcFL.nfccFL._NFCC_FORCE_NCI1_0_INIT = false; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT = false; \ - nfcFL.nfccFL._NFCC_SPI_FW_DOWNLOAD_SYNC = false; \ - nfcFL.nfccFL._HW_ANTENNA_LOOP4_SELF_TEST = true; \ - nfcFL.nfccFL._NFCEE_REMOVED_NTF_RECOVERY = true; \ - nfcFL.nfccFL._NFCC_FORCE_FW_DOWNLOAD = false; \ - nfcFL.nfccFL._UICC_CREATE_CONNECTIVITY_PIPE = false; \ - nfcFL.nfccFL._NFCC_AID_MATCHING_PLATFORM_CONFIG = true; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT_PROP = true; \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 2; \ - \ - nfcFL.eseFL._ESE_FORCE_ENABLE = true; \ - \ - nfcFL.platformFL._NFCC_RESET_RSP_LEN = 0x11U; \ - \ - nfcFL.nfcMwFL._NCI_INTERFACE_UICC_DIRECT = 0x82; \ - nfcFL.nfcMwFL._NCI_INTERFACE_ESE_DIRECT = 0x83; \ - \ - SRTCPY_FW("libpn551_fw", "libpn551_fw_platform", "libpn551_fw_pku") \ - \ - nfcFL.nfcMwFL._PHDNLDNFC_USERDATA_EEPROM_OFFSET = 0x02BCU; \ - nfcFL.nfcMwFL._PHDNLDNFC_USERDATA_EEPROM_LEN = 0x0C00U; \ - nfcFL.nfcMwFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN551; \ - \ - } else if (chipType == pn548C2) { \ - nfcFL.nfccFL._NFCC_I2C_READ_WRITE_IMPROVEMENT = true; \ - nfcFL.nfccFL._NFCC_MIFARE_TIANJIN = true; \ - nfcFL.nfccFL._NFCC_MW_RCVRY_BLK_FW_DNLD = false; \ - nfcFL.nfccFL._NFCC_DYNAMIC_DUAL_UICC = false; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH = true; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH = false; \ - nfcFL.nfccFL._NFCC_FW_WA = false; \ - nfcFL.nfccFL._NFCC_FORCE_NCI1_0_INIT = false; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT = false; \ - nfcFL.nfccFL._NFCC_SPI_FW_DOWNLOAD_SYNC = false; \ - nfcFL.nfccFL._HW_ANTENNA_LOOP4_SELF_TEST = true; \ - nfcFL.nfccFL._NFCEE_REMOVED_NTF_RECOVERY = true; \ - nfcFL.nfccFL._NFCC_FORCE_FW_DOWNLOAD = false; \ - nfcFL.nfccFL._UICC_CREATE_CONNECTIVITY_PIPE = false; \ - nfcFL.nfccFL._NFCC_AID_MATCHING_PLATFORM_CONFIG = true; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT_PROP = true; \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 2; \ - \ - nfcFL.eseFL._ESE_FORCE_ENABLE = true; \ - \ - nfcFL.nfcMwFL._NCI_INTERFACE_UICC_DIRECT = 0x82; \ - nfcFL.nfcMwFL._NCI_INTERFACE_ESE_DIRECT = 0x83; \ - \ - SRTCPY_FW("libpn548ad_fw", "libpn548ad_fw_platform", \ - "libpn548ad_fw_pku") \ - \ - nfcFL.nfcMwFL._PHDNLDNFC_USERDATA_EEPROM_OFFSET = 0x02BCU; \ - nfcFL.nfcMwFL._PHDNLDNFC_USERDATA_EEPROM_LEN = 0x0C00U; \ - \ - } else if (chipType == pn547C2) { \ - nfcFL.nfccFL._NFCC_I2C_READ_WRITE_IMPROVEMENT = false; \ - nfcFL.nfccFL._NFCC_MIFARE_TIANJIN = true; \ - nfcFL.nfccFL._NFCC_MW_RCVRY_BLK_FW_DNLD = false; \ - nfcFL.nfccFL._NFCC_DYNAMIC_DUAL_UICC = false; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH = false; \ - nfcFL.nfccFL._NFC_NXP_STAT_DUAL_UICC_WO_EXT_SWITCH = false; \ - nfcFL.nfccFL._NFCC_FW_WA = false; \ - nfcFL.nfccFL._NFCC_FORCE_NCI1_0_INIT = false; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT = false; \ - nfcFL.nfccFL._NFCC_SPI_FW_DOWNLOAD_SYNC = false; \ - nfcFL.nfccFL._HW_ANTENNA_LOOP4_SELF_TEST = true; \ - nfcFL.nfccFL._NFCEE_REMOVED_NTF_RECOVERY = true; \ - nfcFL.nfccFL._NFCC_FORCE_FW_DOWNLOAD = false; \ - nfcFL.nfccFL._UICC_CREATE_CONNECTIVITY_PIPE = false; \ - nfcFL.nfccFL._NFCC_AID_MATCHING_PLATFORM_CONFIG = true; \ - nfcFL.nfccFL._NFCC_ROUTING_BLOCK_BIT_PROP = false; \ - nfcFL.nfccFL._NFA_EE_MAX_EE_SUPPORTED = 2; \ - \ - nfcFL.nfcMwFL._NCI_INTERFACE_UICC_DIRECT = 0x81; \ - nfcFL.nfcMwFL._NCI_INTERFACE_ESE_DIRECT = 0x82; \ - \ - SRTCPY_FW("libpn547_fw", "libpn547_fw_platform", "libpn547_fw_pku") \ } \ } -#ifdef __cplusplus -#define SRTCPY_FW(str1, str2, str3) -#else -#define SRTCPY_FW(str1, str2, str3) \ - snprintf(nfcFL.nfcMwFL._FW_LIB_PATH, STRMAX_2, "%s%s%s", FW_DLL_ROOT_DIR, \ - str1, FW_DLL_EXTENSION); \ - snprintf(nfcFL.nfcMwFL._PLATFORM_LIB_PATH, STRMAX_2, "%s%s%s", \ - FW_DLL_ROOT_DIR, str2, FW_DLL_EXTENSION); \ - snprintf(nfcFL.nfcMwFL._PKU_LIB_PATH, STRMAX_2, "%s%s%s", FW_DLL_ROOT_DIR, \ - str3, FW_DLL_EXTENSION); -#endif +#define STRCPY_FW_LIB(str) { \ + nfcFL._FW_LIB_PATH.clear(); \ + nfcFL._FW_LIB_PATH.append(FW_LIB_ROOT_DIR); \ + nfcFL._FW_LIB_PATH.append(str); \ + nfcFL._FW_LIB_PATH.append(FW_LIB_EXTENSION); \ +} +#define STRCPY_FW_BIN(str) { \ + nfcFL._FW_BIN_PATH.clear(); \ + nfcFL._FW_BIN_PATH.append(FW_BIN_ROOT_DIR); \ + nfcFL._FW_BIN_PATH.append(str); \ + nfcFL._FW_BIN_PATH.append(FW_BIN_EXTENSION); \ +} #endif |