133 lines
7.6 KiB
C
133 lines
7.6 KiB
C
/*
|
|
* Copyright 2017-2020, NXP
|
|
*
|
|
* All rights are reserved. Reproduction in whole or in part is
|
|
* prohibited without the written consent of the copyright owner.
|
|
* NXP reserves the right to make changes without notice at any time.
|
|
* NXP makes no warranty, expressed, implied or statutory, including but
|
|
* not limited to any implied warranty of merchantability or fitness for any
|
|
*particular purpose, or that the use will not infringe any third party patent,
|
|
* copyright or trademark. NXP must not be liable for any loss or damage
|
|
* arising from its use.
|
|
*/
|
|
|
|
/** \file
|
|
* Simplified API ISO 18000.
|
|
*
|
|
* $Author$
|
|
* $Revision$ (v07.10.00)
|
|
* $Date$
|
|
*
|
|
*/
|
|
|
|
#ifndef EX11_SIMPLIFIEDAPI_ISO_18000_H
|
|
#define EX11_SIMPLIFIEDAPI_ISO_18000_H
|
|
|
|
/* ACK does not take any parameter and uses the handle present in context */
|
|
#define I18000_ACK() { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_Ack; \
|
|
}
|
|
|
|
/* REQRN takes the option with which to perform the REQRn Command */
|
|
/* bOpt can be only PHAL_I18000P3M3_REQRN_USE_HANDLE here */
|
|
#define I18000_REQRN(bOpt) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bOption = bOpt; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_ReqRn; \
|
|
}
|
|
|
|
/* READ takes the Memory Bank to read, address of the word to read, length of the word ptr and No of words to read */
|
|
/* bMembank can be 0x00 - 0x03 , pWordptr is user choice limited to tag memory size */
|
|
/* bWordPtrLength can be 0x00 - 0x03 and depends on the TAG memory size , bWordcount is the number of words to read */
|
|
#define I18000_READ(bMembank, pWordptr, bWordPtrlength, bWordcount) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bMemBank = bMembank; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pWordPtr = pWordptr; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bWordPtrLength = bWordPtrlength; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bWordCount = bWordcount; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_Read; \
|
|
}
|
|
|
|
/* WRITE takes the option, Memory Bank to write, address of the word to write, length of the word ptr and Data to write */
|
|
/* bOpt can be #PH_NFCLIB_18000P3M3_AC_NO_COVER_CODING or #PH_NFCLIB_18000P3M3_AC_USE_COVER_CODING, bMembank can be 0x00 - 0x03 */
|
|
/* pWordptr is user choice limited to tag memory size, bWordPtrLength can be 0x00 - 0x03 and depends on the TAG memory size */
|
|
/* pData is a 2 byte word to write */
|
|
#define I18000_WRITE(bOpt, bMembank, pWordptr, bWordPtrlength, pData) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bOption = bOpt; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bMemBank = bMembank; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pWordPtr = pWordptr; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bWordPtrLength = bWordPtrlength; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pBuffer = pData; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_Write; \
|
|
}
|
|
|
|
/* KILL takes the option , the password for the kill and recommissioning option */
|
|
/* bOpt can be #PH_NFCLIB_18000P3M3_AC_NO_COVER_CODING or #PH_NFCLIB_18000P3M3_AC_USE_COVER_CODING, pPassWord is a 4 byte password */
|
|
/* bReCom can be any optional or mandatory support Recom option, value 0x04 is a mandatory support */
|
|
#define I18000_KILL(bOpt, pPassWord, bReCom) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bOption = bOpt; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pPassword = pPassWord; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bRecom = bReCom; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_Kill; \
|
|
}
|
|
|
|
/* LOCK takes the Mask on which and the action with which to perform the Lock */
|
|
/* pLockMask and pLockAction both are a 10-bit field please refer ISO 18000-3M3 for detailed value */
|
|
#define I18000_LOCK(pLockMask, pLockAction) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pMask = pLockMask; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pAction = pLockAction; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_Lock; \
|
|
}
|
|
|
|
/* ACCESS takes the option and password for the Access */
|
|
/* bOpt can be #PH_NFCLIB_18000P3M3_AC_NO_COVER_CODING or #PH_NFCLIB_18000P3M3_AC_USE_COVER_CODING, pPassWord is a 4 byte password */
|
|
#define I18000_ACCESS(bOpt, pPassWord) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bOption = bOpt; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pPassword = pPassWord; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_Access; \
|
|
}
|
|
|
|
/* BLOCKWRITE takes the Memory Bank to write ,address of the word,length of the word ptr, No of words and Data to write */
|
|
/* bMembank can be 0x00 - 0x03, pWordptr is user choice limited to tag memory size, bWordPtrLen can be 0x00 - 0x03 and depends on the TAG memory size */
|
|
/* bWordcount is the no of words to write and is card support specific, pData takes the data to write */
|
|
#define I18000_BLOCKWRITE(bMembank, pWordptr, bWordPtrLen, bWordcount, pData) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bMemBank = bMembank; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pWordPtr = pWordptr; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bWordPtrLength = bWordPtrLen; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bWordCount = bWordcount; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pBuffer = pData; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_BlockWrite; \
|
|
}
|
|
|
|
/* BLOCKERASE takes the Memory Bank to write ,address of the word,length of the word ptr and No of words to erase */
|
|
/* bMembank can be 0x00 - 0x03, pWordptr is user choice limited to tag memory size */
|
|
/* bWordPtrLen can be 0x00 - 0x03 and depends on the TAG memory size and No of words to erase is card support specific*/
|
|
#define I18000_BLOCKERASE(bMembank, pWordptr, bWordPtrLen, bWordcount) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bMemBank = bMembank; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pWordPtr = pWordptr; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bWordPtrLength = bWordPtrLen; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bWordCount = bWordcount; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_BlockErase; \
|
|
}
|
|
|
|
/* BLOCKPERMALOCK takes the RFU, READ/LOCK choice, Memory Bank to PermaLock, starting address of the block and length of the block ptr, range of the block mask, and MemMask */
|
|
/* bRFU is to be kept 0, bReadlock can be 0/1, bMembank can be 0x00 - 0x03, pBlockptr is user choice limited to tag memory size */
|
|
/* bBlockPtrLen can be 0x00 - 0x03, bBlockrange depends on Tag Memory and pMemMask along with ReadLock depend upon 0/1 */
|
|
#define I18000_BLOCKPERMALOCK(bRfu, bReadlock, bMembank, pBlockptr, bBlockPtrLen, bBlockrange, pMemMask) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bRFU = bRfu; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bReadLock = bReadlock; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bMemBank = bMembank; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pBlockPtr = pBlockptr; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bBlockPtrLength = bBlockPtrLen; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bBlockRange = bBlockrange; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pMask = pMemMask; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_BlockPermaLock; \
|
|
}
|
|
|
|
/* SETHANDLE takes the pointer to the handle */
|
|
/* pHandlePtr is a 2 byte Handle return by the REQRN command */
|
|
#define I18000_SETHANDLE(pHandlePtr) { \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.pHandle = pHandlePtr; \
|
|
phNfcLib_TransmitInput.phNfcLib_ISO18000.bCommand = ISO18000_SetHandle; \
|
|
}
|
|
|
|
#endif /* EX11_SIMPLIFIEDAPI_ISO_18000_H */
|