blob: d8417912e44d9d75cc0a8642053150e84fb7d43e [file] [log] [blame]
/******************************************************************************
*
* 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