NXP NFC Reader Library v4.040.05.011646

Modules | Functions
ISO/IEC 18000-3 Mode3
Application Layer

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_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [out] | ppRxBuffer | Pointer to Tag data and, if required, PacketCRC.
  [out] | pRxBitLength | Tag 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 :

- PHAL_I18000P3M3_REQRN_USE_HANDLE Other option is deprecated.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bOption | Option parameter.
  [out] | ppRxBuffer | New 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_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bMemBank | Memory bank where the read shall be performed.
  [in] | pWordPtr | Starting read address.
  [in] | bWordPtrLength | Length of the pointer in bytes; 0 -> 1byte,1->2bytes,2->3bytes or 3->4bytes.
  [in] | bWordCount | Number of bytes to read.
  [out] | ppRxBuffer | Header and requested memory words.
  [out] | pRxBitLength | Number 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:

- PHAL_I18000P3M3_AC_NO_COVER_CODING
- PHAL_I18000P3M3_AC_USE_COVER_CODING

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bOption | Option parameter.
  [in] | bMemBank | Memory bank where the write shall be performed.
  [in] | pWordPtr | Starting write address.
  [in] | bWordPtrLength | [In] Length of the pointer in bytes; 0 -> 1byte,1->2bytes,2->3bytes or 3->4bytes.
  [in] | pData | Word 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:

- PHAL_I18000P3M3_AC_NO_COVER_CODING
- PHAL_I18000P3M3_AC_USE_COVER_CODING

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bOption | Option parameter.
  [in] | pPassword | Full kill password; uint8_t[4]
  [in] | bRecom | Recommissioning 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_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | pMask | 10bit Action Field Mask; uint8_t[2].
  [in] | pAction | 10bit 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:

- PHAL_I18000P3M3_AC_NO_COVER_CODING
- PHAL_I18000P3M3_AC_USE_COVER_CODING

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bOption | Option parameter.
  [in] | pPassword | Full 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_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bMemBank | Memory bank where the write shall be performed.
  [in] | pWordPtr | Starting write adress.
  [in] | bWordPtrLength | Length of the pointer in bytes; 1,2,3 or 4.
  [in] | bWordCount | Number of blocks to write.
  [in] | pData | Words 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_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bMemBank | Memory bank where the erase shall be performed.
  [in] | pWordPtr | Starting erase adress.
  [in] | bWordPtrLength | Length of the pointer in bytes; 1,2,3 or 4.
  [in] | bWordCount | Number 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_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | bRFU | RFU, shall be set to `0`.
  [in] | bReadLock | Whether the permalock states shall be retrieved (`0`) or the blocks shall be permalocked (`1`).
  [in] | bMemBank | Memory bank where the erase shall be performed.
  [in] | pBlockPtr | Starting erase adress.
  [in] | bBlockPtrLength | Length of the pointer in bytes; 1,2,3 or 4.
  [in] | bBlockRange | Mask range, specified in units of 16 blocks.
  [in] | pMask | Specifies which memory blocks a tag permalocks; uint8_t[2 * `bBlockRange`] Ignored if `bReadLock` is `0`
  [out] | ppRxBuffer | Header and Permalock bits if `bReadLock` is `0` or NULL otherwise.
  [out] | pRxBitLength | Number 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_SUCCESS | Operation successful.
  Other | Depending on implementation and underlaying component.

Parameters

  [in] | pDataParams | Pointer to this layer's parameter structure.
  [in] | pHandle | Handle to the Card.