NXP NFC Reader Library  v4.040.05.011646
ISO/IEC 18000-3 Mode3

These Components implement the ICODE ILT support. More...

Collaboration diagram for ISO/IEC 18000-3 Mode3:

Modules

 Component : Software
 

Functions

phStatus_t phalI18000p3m3_Ack (void *pDataParams, uint8_t **ppRxBuffer, uint16_t *pRxBitLength)
 Acknowledge a single tag. More...
 
phStatus_t phalI18000p3m3_ReqRn (void *pDataParams, uint8_t bOption, uint8_t **ppRxBuffer)
 Instruct a tag to loadmodulate a new RN16 or Handle. More...
 
phStatus_t phalI18000p3m3_Read (void *pDataParams, uint8_t bMemBank, uint8_t *pWordPtr, uint8_t bWordPtrLength, uint8_t bWordCount, uint8_t **ppRxBuffer, uint16_t *pRxBitLength)
 Read part or all of a tag Reserved, UII, TID, or User memory. More...
 
phStatus_t phalI18000p3m3_Write (void *pDataParams, uint8_t bOption, uint8_t bMemBank, uint8_t *pWordPtr, uint8_t bWordPtrLength, uint8_t *pData)
 Write a word in a tag Reserved, UII, TID, or User memory. More...
 
phStatus_t phalI18000p3m3_Kill (void *pDataParams, uint8_t bOption, uint8_t *pPassword, uint8_t bRecom)
 Render a tag killed or recommissioned as appropriate. More...
 
phStatus_t phalI18000p3m3_Lock (void *pDataParams, uint8_t *pMask, uint8_t *pAction)
 Lock or Permalock individual passwords and memory banks. More...
 
phStatus_t phalI18000p3m3_Access (void *pDataParams, uint8_t bOption, uint8_t *pPassword)
 Cause a tag with a non-zero-valued access password to transition from the open to the secured state. More...
 
phStatus_t phalI18000p3m3_BlockWrite (void *pDataParams, uint8_t bMemBank, uint8_t *pWordPtr, uint8_t bWordPtrLength, uint8_t bWordCount, uint8_t *pData)
 Write multiple words in a tag Reserved, UII, TID, or User memory. More...
 
phStatus_t phalI18000p3m3_BlockErase (void *pDataParams, uint8_t bMemBank, uint8_t *pWordPtr, uint8_t bWordPtrLength, uint8_t bWordCount)
 Erase multiple words in a tag Reserved, UII, TID, or User memory. More...
 
phStatus_t phalI18000p3m3_BlockPermaLock (void *pDataParams, uint8_t bRFU, uint8_t bReadLock, uint8_t bMemBank, uint8_t *pBlockPtr, uint8_t bBlockPtrLength, uint8_t bBlockRange, uint8_t *pMask, uint8_t **ppRxBuffer, uint16_t *pRxBitLength)
 Erase multiple words in a tag Reserved, UII, TID, or User memory. More...
 
phStatus_t phalI18000p3m3_SetHandle (void *pDataParams, uint8_t *pHandle)
 Set the Handle into the internal data structure. More...
 

ReqRn Options

#define PHAL_I18000P3M3_REQRN_USE_CRC   0x00U
 Use StoredCrc for ReqRn command. More...
 
#define PHAL_I18000P3M3_REQRN_USE_HANDLE   0x01U
 Use given Handle for ReqRn command. More...
 

Access Command Options

#define PHAL_I18000P3M3_AC_NO_COVER_CODING   0x00U
 Use cover coding to diversify passwords. More...
 
#define PHAL_I18000P3M3_AC_USE_COVER_CODING   0x01U
 Do not use cover coding, send plain passwords. More...
 

Memory Banks

#define PHAL_I18000P3M3_MEMBANK_RESERVED   0x00U /** < Reserved Memory Bank. */
 
#define PHAL_I18000P3M3_MEMBANK_UII   0x01U /** < UII Memory Bank. */
 
#define PHAL_I18000P3M3_MEMBANK_TID   0x02U /** < TID Memory Bank. */
 
#define PHAL_I18000P3M3_MEMBANK_USER   0x03U /** < User Memory Bank. */
 

Detailed Description

These Components implement the ICODE ILT support.

Macro Definition Documentation

§ PHAL_I18000P3M3_REQRN_USE_CRC

#define PHAL_I18000P3M3_REQRN_USE_CRC   0x00U

Use StoredCrc for ReqRn command.

Deprecated option. Not to be used anymore.

§ PHAL_I18000P3M3_REQRN_USE_HANDLE

#define PHAL_I18000P3M3_REQRN_USE_HANDLE   0x01U

Use given Handle for ReqRn command.

§ PHAL_I18000P3M3_AC_NO_COVER_CODING

#define PHAL_I18000P3M3_AC_NO_COVER_CODING   0x00U

Use cover coding to diversify passwords.

§ PHAL_I18000P3M3_AC_USE_COVER_CODING

#define PHAL_I18000P3M3_AC_USE_COVER_CODING   0x01U

Do not use cover coding, send plain passwords.

Function Documentation

§ phalI18000p3m3_Ack()

phStatus_t phalI18000p3m3_Ack ( void *  pDataParams,
uint8_t **  ppRxBuffer,
uint16_t pRxBitLength 
)

Acknowledge a single tag.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[out]ppRxBufferPointer to Tag data and, if required, PacketCRC.
[out]pRxBitLengthTag response length in bits.

§ phalI18000p3m3_ReqRn()

phStatus_t phalI18000p3m3_ReqRn ( void *  pDataParams,
uint8_t  bOption,
uint8_t **  ppRxBuffer 
)

Instruct a tag to loadmodulate a new RN16 or Handle.

bOption is :

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bOptionOption parameter.
[out]ppRxBufferNew RN16 or handle.

§ phalI18000p3m3_Read()

phStatus_t phalI18000p3m3_Read ( void *  pDataParams,
uint8_t  bMemBank,
uint8_t pWordPtr,
uint8_t  bWordPtrLength,
uint8_t  bWordCount,
uint8_t **  ppRxBuffer,
uint16_t pRxBitLength 
)

Read part or all of a tag Reserved, UII, TID, or User memory.

bWordPtrLength depends on the TAG memory size. For TAGs with 8 bits memory, bWordPtrLength should be always '0'. If we make 'bWordPtrLength' =1 (16bits) or higher for 8 bits memory TAGs then this function returns MEMORY_OVERRUN error. This is an expected behaviour.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bMemBankMemory bank where the read shall be performed.
[in]pWordPtrStarting read address.
[in]bWordPtrLengthLength of the pointer in bytes; 0 -> 1byte,1->2bytes,2->3bytes or 3->4bytes.
[in]bWordCountNumber of bytes to read.
[out]ppRxBufferHeader and requested memory words.
[out]pRxBitLengthNumber of received bits.

§ phalI18000p3m3_Write()

phStatus_t phalI18000p3m3_Write ( void *  pDataParams,
uint8_t  bOption,
uint8_t  bMemBank,
uint8_t pWordPtr,
uint8_t  bWordPtrLength,
uint8_t pData 
)

Write a word in a tag Reserved, UII, TID, or User memory.

bWordPtrLength depends on the TAG memory size. For TAGs with 8 bits memory, bWordPtrLength should be always '0'. If we make 'bWordPtrLength' =1 (16bits) or higher for 8 bits memory TAGs then this function returns MEMORY_OVERRUN error. This is an expected behaviour.

bOption can be one of:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bOptionOption parameter.
[in]bMemBankMemory bank where the write shall be performed.
[in]pWordPtrStarting write address.
[in]bWordPtrLength[In] Length of the pointer in bytes; 0 -> 1byte,1->2bytes,2->3bytes or 3->4bytes.
[in]pDataWord to write; uint8_t[2].

§ phalI18000p3m3_Kill()

phStatus_t phalI18000p3m3_Kill ( void *  pDataParams,
uint8_t  bOption,
uint8_t pPassword,
uint8_t  bRecom 
)

Render a tag killed or recommissioned as appropriate.

bOption can be one of:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bOptionOption parameter.
[in]pPasswordFull kill password; uint8_t[4]
[in]bRecomRecommissioning bits.

§ phalI18000p3m3_Lock()

phStatus_t phalI18000p3m3_Lock ( void *  pDataParams,
uint8_t pMask,
uint8_t pAction 
)

Lock or Permalock individual passwords and memory banks.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]pMask10bit Action Field Mask; uint8_t[2].
[in]pAction10bit Action Field; uint8_t[2].

§ phalI18000p3m3_Access()

phStatus_t phalI18000p3m3_Access ( void *  pDataParams,
uint8_t  bOption,
uint8_t pPassword 
)

Cause a tag with a non-zero-valued access password to transition from the open to the secured state.

bOption can be one of:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bOptionOption parameter.
[in]pPasswordFull access password; uint8_t[4]

§ phalI18000p3m3_BlockWrite()

phStatus_t phalI18000p3m3_BlockWrite ( void *  pDataParams,
uint8_t  bMemBank,
uint8_t pWordPtr,
uint8_t  bWordPtrLength,
uint8_t  bWordCount,
uint8_t pData 
)

Write multiple words in a tag Reserved, UII, TID, or User memory.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bMemBankMemory bank where the write shall be performed.
[in]pWordPtrStarting write adress.
[in]bWordPtrLengthLength of the pointer in bytes; 1,2,3 or 4.
[in]bWordCountNumber of blocks to write.
[in]pDataWords to write; uint8_t[2 * bWordCount].

§ phalI18000p3m3_BlockErase()

phStatus_t phalI18000p3m3_BlockErase ( void *  pDataParams,
uint8_t  bMemBank,
uint8_t pWordPtr,
uint8_t  bWordPtrLength,
uint8_t  bWordCount 
)

Erase multiple words in a tag Reserved, UII, TID, or User memory.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bMemBankMemory bank where the erase shall be performed.
[in]pWordPtrStarting erase adress.
[in]bWordPtrLengthLength of the pointer in bytes; 1,2,3 or 4.
[in]bWordCountNumber of blocks to erase.

§ phalI18000p3m3_BlockPermaLock()

phStatus_t phalI18000p3m3_BlockPermaLock ( void *  pDataParams,
uint8_t  bRFU,
uint8_t  bReadLock,
uint8_t  bMemBank,
uint8_t pBlockPtr,
uint8_t  bBlockPtrLength,
uint8_t  bBlockRange,
uint8_t pMask,
uint8_t **  ppRxBuffer,
uint16_t pRxBitLength 
)

Erase multiple words in a tag Reserved, UII, TID, or User memory.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]bRFURFU, shall be set to 0.
[in]bReadLockWhether the permalock states shall be retrieved (0) or the blocks shall be permalocked (1).
[in]bMemBankMemory bank where the erase shall be performed.
[in]pBlockPtrStarting erase adress.
[in]bBlockPtrLengthLength of the pointer in bytes; 1,2,3 or 4.
[in]bBlockRangeMask range, specified in units of 16 blocks.
[in]pMaskSpecifies which memory blocks a tag permalocks; uint8_t[2 * bBlockRange] Ignored if bReadLock is 0
[out]ppRxBufferHeader and Permalock bits if bReadLock is 0 or NULL otherwise.
[out]pRxBitLengthNumber of received bits if bReadLock is 0.

§ phalI18000p3m3_SetHandle()

phStatus_t phalI18000p3m3_SetHandle ( void *  pDataParams,
uint8_t pHandle 
)

Set the Handle into the internal data structure.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParamsPointer to this layer's parameter structure.
[in]pHandleHandle to the Card.