| /****************************************************************************** |
| * |
| * Copyright 2018 NXP |
| * |
| * 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. |
| * |
| ******************************************************************************/ |
| |
| #ifndef NXP_FEATURES_H |
| #define NXP_FEATURES_H |
| #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_PN557 0x01 |
| using namespace std; |
| typedef enum { |
| unknown, |
| pn547C2, |
| pn65T, |
| pn548C2, |
| pn66T, |
| pn551, |
| pn67T, |
| pn553, |
| pn80T, |
| pn557, |
| pn81T |
| } tNFC_chipType; |
| |
| typedef struct { |
| 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_featureList; |
| |
| extern tNfc_featureList nfcFL; |
| |
| #define CONFIGURE_FEATURELIST(chipType) \ |
| { \ |
| nfcFL.chipType = chipType; \ |
| if (chipType == pn81T) { \ |
| nfcFL.chipType = pn557; \ |
| } else if (chipType == pn80T) { \ |
| nfcFL.chipType = pn553; \ |
| } else if (chipType == pn67T) { \ |
| nfcFL.chipType = pn551; \ |
| } \ |
| CONFIGURE_FEATURELIST_NFCC(chipType) \ |
| } |
| |
| #define CONFIGURE_FEATURELIST_NFCC(chipType) \ |
| { \ |
| nfcFL._PHDNLDNFC_USERDATA_EEPROM_OFFSET = 0x023CU; \ |
| nfcFL._PHDNLDNFC_USERDATA_EEPROM_LEN = 0x0C80U; \ |
| \ |
| if (chipType == pn557 || chipType == pn81T) { \ |
| \ |
| STRCPY_FW_LIB("libpn557_fw") \ |
| STRCPY_FW_BIN("pn557") \ |
| \ |
| nfcFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN557; \ |
| } else if (chipType == pn553 || chipType == pn80T) { \ |
| \ |
| STRCPY_FW_LIB("libpn553_fw") \ |
| STRCPY_FW_BIN("pn553") \ |
| \ |
| nfcFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN553; \ |
| \ |
| } else if (chipType == pn551 || chipType == pn67T) { \ |
| \ |
| STRCPY_FW_LIB("libpn551_fw") \ |
| STRCPY_FW_BIN("pn551") \ |
| \ |
| nfcFL._PHDNLDNFC_USERDATA_EEPROM_OFFSET = 0x02BCU; \ |
| nfcFL._PHDNLDNFC_USERDATA_EEPROM_LEN = 0x0C00U; \ |
| nfcFL._FW_MOBILE_MAJOR_NUMBER = FW_MOBILE_MAJOR_NUMBER_PN551; \ |
| \ |
| } \ |
| } |
| #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 |