NXP NFC Reader Library v4.040.05.011646

Modules | Functions
ISO/IEC 15693 / ISO/IEC 18000-3M1
Protocol Abstraction Layer

These component implements the protocol layer (activation) commands of ISO/IEC 15693 (ISO/IEC 18000-3M1) vicinity protocol. More...

Collaboration diagram for ISO/IEC 15693 / ISO/IEC 18000-3M1:

## Modules
| Component : Software

## Functions
phStatus_t | phpalSli15693_Inventory (void *pDataParams, uint8_t bFlags, uint8_t bAfi, uint8_t *pMask, uint8_t bMaskBitLength, uint8_t *pDsfid, uint8_t *pUid)
| Perform a ISO15693 Inventory command. More...
phStatus_t | phpalSli15693_SendEof (void *pDataParams, uint8_t bOption, uint8_t *pDsfid, uint8_t *pUid, uint8_t *pUidLength, uint8_t *pData, uint16_t *pDataLength)
| Send a ISO15693 EOF (End of Frame). More...
phStatus_t | phpalSli15693_StayQuiet (void *pDataParams)
| Perform a ISO15693 StayQuiet command. More...
phStatus_t | phpalSli15693_Select (void *pDataParams)
| Perform a ISO15693 Select command. More...
phStatus_t | phpalSli15693_ResetToReady (void *pDataParams)
| Perform a ISO15693 ResetToReady command. More...
phStatus_t | phpalSli15693_Exchange (void *pDataParams, uint16_t wOption, uint8_t *pTxBuffer, uint16_t wTxLength, uint8_t **ppRxBuffer, uint16_t *pRxLength)
| Perform ISO15693 Data Exchange with VICC. More...
phStatus_t | phpalSli15693_ActivateCard (void *pDataParams, uint8_t bOption, uint8_t bFlags, uint8_t bAfi, uint8_t *pMask, uint8_t bMaskBitLength, uint8_t *pDsfid, uint8_t *pUid, uint8_t *pMoreCardsAvailable)
| Perform ISO15693 ActivateCard command. More...
phStatus_t | phpalSli15693_GetSerialNo (void *pDataParams, uint8_t *pUid, uint8_t *bUidLength)
| Retrieve the serial number (UID). More...
phStatus_t | phpalSli15693_SetSerialNo (void *pDataParams, uint8_t *pUid, uint8_t bUidLength)
| Set serial number (UID). More...
phStatus_t | phpalSli15693_SetConfig (void *pDataParams, uint16_t wConfig, uint16_t wValue)
| Set value of the specified configuration identifier. More...
phStatus_t | phpalSli15693_GetConfig (void *pDataParams, uint16_t wConfig, uint16_t *pValue)
| Get value of the specified configuration identifier. More...
phStatus_t | phpalSli15693_InventoryRead (void *pDataParams, uint8_t bFlags, uint8_t bAfi, uint8_t *pMask, uint8_t bMaskBitLength, uint8_t bBlockNo, uint16_t wNoOfBlocks, uint8_t *pUid, uint8_t *pUidLength, uint8_t *pData, uint16_t *pDataLength)
| Perform ICODE SLI InventoryRead command. More...
phStatus_t | phpalSli15693_InventoryReadExtended (void *pDataParams, uint8_t bFlags, uint8_t bAfi, uint8_t bExtended, uint8_t bExtendedOptions, uint8_t *pMask, uint8_t bMaskBitLength, uint8_t bBlockNo, uint16_t wNoOfBlocks, uint8_t *pUid, uint8_t *pUidLength, uint8_t *pData, uint16_t *pDataLength)
| Perform ICODE SLI InventoryRead command in extended mode. More...
phStatus_t | phpalSli15693_FastInventoryRead (void *pDataParams, uint8_t bFlags, uint8_t bAfi, uint8_t *pMask, uint8_t bMaskBitLength, uint8_t bBlockNo, uint16_t wNoOfBlocks, uint8_t *pUid, uint8_t *pUidLength, uint8_t *pData, uint16_t *pDataLength)
| Perform ICODE SLI FastInventoryRead command. More...
phStatus_t | phpalSli15693_InventoryPageRead (void *pDataParams, uint8_t bFlags, uint8_t bAfi, uint8_t *pMask, uint8_t bMaskBitLength, uint8_t bPageNo, uint16_t wNoOfPages, uint8_t *pUid, uint8_t *pUidLength, uint8_t *pData, uint16_t *pDataLength)
| Perform ICODE SLI InventoryPageRead command. More...
phStatus_t | phpalSli15693_FastInventoryPageRead (void *pDataParams, uint8_t bFlags, uint8_t bAfi, uint8_t *pMask, uint8_t bMaskBitLength, uint8_t bPageNo, uint16_t wNoOfPages, uint8_t *pUid, uint8_t *pUidLength, uint8_t *pData, uint16_t *pDataLength)
| Perform ICODE SLI FastInventoryPageRead command. More...
phStatus_t | phpalSli15693_StayQuietPersistent (void *pDataParams)
| Perform ICODE SLI Stay quite persistent command. More...

## Configuration Types
These options shall be used along with phpalSli15693_SetConfig and phpalSli15693_GetConfig to configure PAL Sli15693 layer.
#define | PHPAL_SLI15693_CONFIG_FLAGS 0x0000U
| Set or get the flags field. More...
#define | PHPAL_SLI15693_CONFIG_ADD_INFO 0x0001U
| Get the additional error info. More...
#define | PHPAL_SLI15693_CONFIG_TIMEOUT_US 0x0002U
| Set or get the current timeout in microseconds.
#define | PHPAL_SLI15693_CONFIG_TIMEOUT_MS 0x0003U
| Set or get the current timeout in milliseconds.

## EOF command options
Options for EOF command.
#define | PHPAL_SLI15693_EOF_NEXT_SLOT 0x00
| Send an EOF with timing configuration for an inventory round.
#define | PHPAL_SLI15693_EOF_NEXT_SLOT_INV_READ 0x01
| Send an EOF with timing configuration for inventory read or fast inventoryread" or \ref phpalSli15693_InventoryPageRead "inventory page read" or \ref phpalSli15693_FastInventoryPageRead "fast inventory page read".
#define | PHPAL_SLI15693_EOF_WRITE_ALIKE 0x02
| Send an EOF with timing configuration for write alike commands without long waiting time PHPAL_SLI15693_TIMEOUT_LONG_US.
#define | PHPAL_SLI15693_EOF_WRITE_ALIKE_WITH_WAIT 0x03
| Send an EOF with timing configuration for write alike commands with long waiting time PHPAL_SLI15693_TIMEOUT_LONG_US.

## Activate Card command options
Options for activate card.
#define | PHPAL_SLI15693_ACTIVATE_ADDRESSED 0x0000U
| Card will be in addressed state (i.e. More...
#define | PHPAL_SLI15693_ACTIVATE_SELECTED 0x0001U
| Card will be in selected state (i.e. More...
#define | PHPAL_SLI15693_ACTIVATE_DEFAULT 0x0000U
| Default option. More...

## Timeouts.
#define | PHPAL_SLI15693_TIMEOUT_SHORT_US 324U
| Timeout T1 in microseconds as defined in ISO/IEC 15693, 9.1.4.
#define | PHPAL_SLI15693_TIMEOUT_LONG_US 20000U
| Extended timeout value in microseconds for long timeouts.

## Request Flags 1 to 4 according to ISO 15693.
In a request, the field "flags" specifies the actions to be performed by the VICC. It consists of eight bits.
#define | PHPAL_SLI15693_FLAG_TWO_SUB_CARRIERS 0x01U
| Sub-carrier_flag. More...
#define | PHPAL_SLI15693_FLAG_DATA_RATE 0x02U
| Data_rate_flag. More...
#define | PHPAL_SLI15693_FLAG_INVENTORY 0x04U
| Inventory_flag. More...
#define | PHPAL_SLI15693_FLAG_PROTOCOL_EXTENSION 0x08U
| Protocol_Extension_flag. More...
#define | PHPAL_SLI15693_FLAG_INVENTORY_READ_EXTENSION 0x80U
| Inventory Read Extension Flag. More...
#define | PHPAL_SLI15693_FLAG_SKIP_DATA 0x10U
| Extended Inventory Read Options Flag. More...
#define | PHPAL_SLI15693_FLAG_UID_MODE 0x02U
| Extended Inventory Read Options Flag If set the complete UID is transmitted by the VICC to the reader irrespective of the mask length.
#define | PHPAL_SLI15693_FLAG_QUIET 0x20U
| Extended Inventory Read Options Flag If set the VICC will go to quiet state after receiving the command. More...
#define | PHPAL_SLI15693_FLAG_PERSISTENT 0x40U
| Extended Inventory Read Options Flag If set the VICC will go to quiet state after receiving the command. More...

## Request Flags 5 to 7 when inventory flag is not set.
Flag 8 is RFU and shall be set to zero.
#define | PHPAL_SLI15693_FLAG_SELECTED 0x10U
| Select_flag. More...
#define | PHPAL_SLI15693_FLAG_ADDRESSED 0x20U
| Address_flag. More...
#define | PHPAL_SLI15693_FLAG_OPTION 0x40U
| Option_flag. More...

## Request Flags 5 to 7 when inventory flag is set.
Flag 8 is RFU and shall be set to zero.
#define | PHPAL_SLI15693_MASK_INVENTORY_FLAGS 0xF0U
| Inventory flags mask.
#define | PHPAL_SLI15693_FLAG_AFI 0x10U
| AFI_flag. More...
#define | PHPAL_SLI15693_FLAG_NBSLOTS 0x20U
| Nb_slots_flag. More...

## Response Flags 1 and 4 according to ISO15693.
All others flags are RFU and shall not be interpreted.
#define | PHPAL_SLI15693_FLAG_RESP_ERROR 0x01U
| Error_flag. More...
#define | PHPAL_SLI15693_FLAG_RESP_EXTERNSION 0x08U
| Extension_flag. More...

## Response error codes according to ISO15693.
Codes ranging from A0 - DF are custom command error codes.
#define | PHPAL_SLI15693_FLAG_ERROR_NOT_SUPPORTED 0x01U
| The command is not supported, i.e. More...
#define | PHPAL_SLI15693_FLAG_ERROR_FORMAT 0x02U
| The command is not recognized, for example: a format error occurred.
#define | PHPAL_SLI15693_FLAG_ERROR_OPTION 0x03U
| The command option is not supported.
#define | PHPAL_SLI15693_FLAG_ERROR_GENERIC 0x0FU
| Error with no information given or a specific error code is not supported.
#define | PHPAL_SLI15693_FLAG_ERROR_BLOCK_NA 0x10U
| The specified block is not available (doesn't exist).
#define | PHPAL_SLI15693_FLAG_ERROR_BLOCK_LOCKED1 0x11U
| The specified block is already locked and thus cannot be locked again.
#define | PHPAL_SLI15693_FLAG_ERROR_BLOCK_LOCKED2 0x12U
| The specified block is locked and its content cannot be changed.
#define | PHPAL_SLI15693_FLAG_ERROR_BLOCK_WRITE1 0x13U
| The specified block was not successfully programmed.
#define | PHPAL_SLI15693_FLAG_ERROR_BLOCK_WRITE2 0x14U
| The specified block was not successfully locked.

## Lengths
#define | PHPAL_SLI15693_UID_LENGTH 0x08U
| UID length in bytes.
#define | PHPAL_SLI15693_BLOCK_LENGTH 0x04U
| Block length in bytes.
#define | PHPAL_SLI15693_PAGE_LENGTH 0x10U
| Number of bytes per page.

## Detailed Description

These component implements the protocol layer (activation) commands of ISO/IEC 15693 (ISO/IEC 18000-3M1) vicinity protocol.

This implementation is based on ISO/IEC 15693-3:2009(E) specification. This layer also implements all activation related custom commands of NXP's ICODE SLI series of tags.

Different states of a VICC (Vicinity Integrated Circuit Card) and corresponding commands are shown below.

Note: PERSISTENT QUIET state is supported only by few ICODE SLI tags (like ICODE SLIX2). Refer function documentation for more information on commands.

## Macro Definition Documentation

## § PHPAL_SLI15693_CONFIG_FLAGS

#define PHPAL_SLI15693_CONFIG_FLAGS 0x0000U

Set or get the flags field.

This shall be used to set or get the value of request flag field used in the commands sent by the library.

## § PHPAL_SLI15693_CONFIG_ADD_INFO

#define PHPAL_SLI15693_CONFIG_ADD_INFO 0x0001U

Get the additional error info.

When a response is received from the VICC with the error flag PHPAL_SLI15693_FLAG_RESP_ERROR set, library returns the custom error code PHPAL_SLI15693_ERR_ISO15693. This configuration option can be used to get the actual error code returned by VICC.

## § PHPAL_SLI15693_ACTIVATE_ADDRESSED

#define PHPAL_SLI15693_ACTIVATE_ADDRESSED 0x0000U

Card will be in addressed state (i.e.

SELECT command is not send) after activate card command.

After activate card with this option, to bring VICC to SELECTED state, select command can be used.

## § PHPAL_SLI15693_ACTIVATE_SELECTED

#define PHPAL_SLI15693_ACTIVATE_SELECTED 0x0001U

Card will be in selected state (i.e.

SELECT command is send) after activate card command.

## § PHPAL_SLI15693_ACTIVATE_DEFAULT

#define PHPAL_SLI15693_ACTIVATE_DEFAULT 0x0000U

Default option.

Same as PHPAL_SLI15693_ACTIVATE_ADDRESSED.

## § PHPAL_SLI15693_FLAG_TWO_SUB_CARRIERS

#define PHPAL_SLI15693_FLAG_TWO_SUB_CARRIERS 0x01U

Sub-carrier_flag.

If set two sub-carriers shall be used (VICC to VCD). Else a single sub-carrier frequency shall be used by the VICC.

## § PHPAL_SLI15693_FLAG_DATA_RATE

#define PHPAL_SLI15693_FLAG_DATA_RATE 0x02U

Data_rate_flag.

If set high data rate shall be used (VICC to VCD). Else low data rate shall be used.

## § PHPAL_SLI15693_FLAG_INVENTORY

#define PHPAL_SLI15693_FLAG_INVENTORY 0x04U

Inventory_flag.

Shall be set for inventory request. If set flags 5 to 8 meaning is as per this list. If not set flags 5 to 8 meaning is defined by this list.

## § PHPAL_SLI15693_FLAG_PROTOCOL_EXTENSION

#define PHPAL_SLI15693_FLAG_PROTOCOL_EXTENSION 0x08U

Protocol_Extension_flag.

If set protocol format is extended. Reserved for future use. No supported in current version.

## § PHPAL_SLI15693_FLAG_INVENTORY_READ_EXTENSION

#define PHPAL_SLI15693_FLAG_INVENTORY_READ_EXTENSION 0x80U

Inventory Read Extension Flag.

If set the additional features of inventory mentioned along with the command will be performed by the VICC

## § PHPAL_SLI15693_FLAG_SKIP_DATA

#define PHPAL_SLI15693_FLAG_SKIP_DATA 0x10U

Extended Inventory Read Options Flag.

If set no user memory data are requested from the tag If not set the tag will add the user memory blocks in the response as requested in command

## § PHPAL_SLI15693_FLAG_QUIET

#define PHPAL_SLI15693_FLAG_QUIET 0x20U

Extended Inventory Read Options Flag If set the VICC will go to quiet state after receiving the command.

## § PHPAL_SLI15693_FLAG_PERSISTENT

#define PHPAL_SLI15693_FLAG_PERSISTENT 0x40U

Extended Inventory Read Options Flag If set the VICC will go to quiet state after receiving the command.

## § PHPAL_SLI15693_FLAG_SELECTED

#define PHPAL_SLI15693_FLAG_SELECTED 0x10U

Select_flag.

If set only VICC in selected state shall respond. The Address_flag PHPAL_SLI15693_FLAG_ADDRESSED shall be set to 0 and the UID field will not be included in the request. If not set Request shall be executed by any VICC according to the setting of Address_flag PHPAL_SLI15693_FLAG_ADDRESSED.

## § PHPAL_SLI15693_FLAG_ADDRESSED

#define PHPAL_SLI15693_FLAG_ADDRESSED 0x20U

Address_flag.

If set request is addressed. UID field is included in request. It shall be executed only by the VICC whose UID matches the UID specified in the request. If not set request is not addressed. UID field is not included in request. It shall be executed by any VICC.

## § PHPAL_SLI15693_FLAG_OPTION

#define PHPAL_SLI15693_FLAG_OPTION 0x40U

Option_flag.

Meaning is defined by the command description. It shall be set to 0 if not otherwise defined by the command.

## § PHPAL_SLI15693_FLAG_AFI

#define PHPAL_SLI15693_FLAG_AFI 0x10U

AFI_flag.

If set AFI field is present in request. If not set AFI field is not present in request.

## § PHPAL_SLI15693_FLAG_NBSLOTS

#define PHPAL_SLI15693_FLAG_NBSLOTS 0x20U

Nb_slots_flag.

If set Use 1 slot instead of 16 slots for inventory. If not set use 16 slots.

## § PHPAL_SLI15693_FLAG_RESP_ERROR

#define PHPAL_SLI15693_FLAG_RESP_ERROR 0x01U

Error_flag.

Error detected. Error code is in the "Error" field of response. When a response is received from the VICC with the error flag set, library returns the custom error code PHPAL_SLI15693_ERR_ISO15693. The configuration option PHPAL_SLI15693_CONFIG_ADD_INFO can be used to get the actual error code returned by the VICC.

## § PHPAL_SLI15693_FLAG_RESP_EXTERNSION

#define PHPAL_SLI15693_FLAG_RESP_EXTERNSION 0x08U

Extension_flag.

Protocol format is extended. Reserved for future use.

## § PHPAL_SLI15693_FLAG_ERROR_NOT_SUPPORTED

#define PHPAL_SLI15693_FLAG_ERROR_NOT_SUPPORTED 0x01U

The command is not supported, i.e.

the request code is not recognized.

## Function Documentation

## § phpalSli15693_Inventory()

phStatus_t phpalSli15693_Inventory | ( | void * | pDataParams,
|  | uint8_t | bFlags,
|  | uint8_t | bAfi,
|  | uint8_t * | pMask,
|  | uint8_t | bMaskBitLength,
|  | uint8_t * | pDsfid,
|  | uint8_t * | pUid
| ) |  |

Perform a ISO15693 Inventory command.

When receiving the Inventory request, the VICC shall perform the anti-collision sequence. This is the fist command in the activation/detection sequence of VICC.

When issuing the inventory command, the reader shall set the Nb_slots_flag PHPAL_SLI15693_FLAG_NBSLOTS to the desired setting to select 1 slot or 16 slots for the inventory process.

The mask length indicates the number of significant bits of the mask value. It can have any value between 0 and 60 when 16 slots are used and any value between 0 and 64 when 1 slot is used. The mask value is contained in an integer number of bytes. If the mask length is not a multiple of 8 (bits), the mask value MSB shall be padded with the required number of null (set to 0) bits so that the mask value is contained in an integer number of bytes.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PH_ERR_INVALID_PARAMETER | mask length or flag invalid.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bFlags | Request flags byte.
  [in] | bAfi | Application Family Identifier.
  [in] | pMask | UID mask, holding known UID bits.
  [in] | bMaskBitLength | Number of UID bits within pMask.
  [out] | pDsfid | Data Storage Format Identifier.
  [out] | pUid | Received UID.

## § phpalSli15693_SendEof()

phStatus_t phpalSli15693_SendEof | ( | void * | pDataParams,
|  | uint8_t | bOption,
|  | uint8_t * | pDsfid,
|  | uint8_t * | pUid,
|  | uint8_t * | pUidLength,
|  | uint8_t * | pData,
|  | uint16_t * | pDataLength
| ) |  |

Send a ISO15693 EOF (End of Frame).

When 16 slots are used in the inventory process, to switch to the next slot, the reader shall send an EOF with option PHPAL_SLI15693_EOF_NEXT_SLOT.

To send EOF for write alike commands, PHPAL_SLI15693_EOF_WRITE_ALIKE or PHPAL_SLI15693_EOF_WRITE_ALIKE_WITH_WAIT shall be used. For ICODE SLI custom commands like Inventory Read, PHPAL_SLI15693_EOF_NEXT_SLOT_INV_READ option shall be used.

`bOption` can be one of:

- PHPAL_SLI15693_EOF_NEXT_SLOT
- PHPAL_SLI15693_EOF_WRITE_ALIKE
- PHPAL_SLI15693_EOF_NEXT_SLOT_INV_READ
- PHPAL_SLI15693_EOF_WRITE_ALIKE_WITH_WAIT

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PH_ERR_INVALID_PARAMETER | Invalid option
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bOption | Option parameter.
  [out] | pDsfid | Data Storage Format Identifier.
  [out] | pUid | Received Uid
  [out] | pUidLength | Number of received UID bytes.
  [out] | pData | Received data.
  [out] | pDataLength | Number of received data bytes.

## § phpalSli15693_StayQuiet()

phStatus_t phpalSli15693_StayQuiet | ( | void * | pDataParams | ) |

Perform a ISO15693 StayQuiet command.

When receiving the Stay quiet command, the VICC shall enter the quiet state and shall not send back a response. There is no response to the stay quiet command.

In quiet state, the VICC shall not process any request where Inventory_flag is set and the VICC shall process any addressed request. The VICC shall exit the quiet state when reset (power off), receiving a Select request (It shall then go to the selected state if supported or return an error if not supported), receiving a Reset to ready request (It shall then go to the Ready state).

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PH_ERR_USE_CONDITION | No UID available.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.

## § phpalSli15693_Select()

phStatus_t phpalSli15693_Select | ( | void * | pDataParams | ) |

Perform a ISO15693 Select command.

When receiving the Select command, if the UID is equal to its own UID, the VICC shall enter the selected state and shall send a response. If the UID is different to its own and in selected state, the VICC shall return to the Ready state and shall not send a response. If the UID is different to its own and not in selected state, the VICC shall remain in its state and shall not send a response.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PH_ERR_USE_CONDITION | No UID available.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.

## § phpalSli15693_ResetToReady()

phStatus_t phpalSli15693_ResetToReady | ( | void * | pDataParams | ) |

Perform a ISO15693 ResetToReady command.

When receiving a Reset to ready command, the VICC shall return to the Ready state.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.

## § phpalSli15693_Exchange()

phStatus_t phpalSli15693_Exchange | ( | void * | pDataParams,
|  | uint16_t | wOption,
|  | uint8_t * | pTxBuffer,
|  | uint16_t | wTxLength,
|  | uint8_t ** | ppRxBuffer,
|  | uint16_t * | pRxLength
| ) |  |

Perform ISO15693 Data Exchange with VICC.

`wOption` can be one of:

- PH_EXCHANGE_DEFAULT
- PH_EXCHANGE_BUFFER_FIRST
- PH_EXCHANGE_BUFFER_CONT
- PH_EXCHANGE_BUFFER_LAST

Alternatively, the following bits can be combined:

- PH_EXCHANGE_BUFFERED_BIT
- PH_EXCHANGE_LEAVE_BUFFER_BIT

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PH_ERR_USE_CONDITION | No UID available.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | wOption | Option parameter.
  [in] | pTxBuffer | Data to transmit. Flags, IC MFC code and UID will be added automatically.
  [in] | wTxLength | Length of data to transmit.
  [out] | ppRxBuffer | Pointer to received data.
  [out] | pRxLength | number of received data bytes.

## § phpalSli15693_ActivateCard()

phStatus_t phpalSli15693_ActivateCard | ( | void * | pDataParams,
|  | uint8_t | bOption,
|  | uint8_t | bFlags,
|  | uint8_t | bAfi,
|  | uint8_t * | pMask,
|  | uint8_t | bMaskBitLength,
|  | uint8_t * | pDsfid,
|  | uint8_t * | pUid,
|  | uint8_t * | pMoreCardsAvailable
| ) |  |

Perform ISO15693 ActivateCard command.

This function activates the first VICC detected during the collision resolution and optionally move it to selected state based on the wOption specified.

`wOption` can be one of:

- PHPAL_SLI15693_ACTIVATE_DEFAULT
- PHPAL_SLI15693_ACTIVATE_SELECTED
- PHPAL_SLI15693_ACTIVATE_ADDRESSED

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PH_ERR_INVALID_PARAMETER | mask length or flag invalid.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bOption | Selected or addressed
  [in] | bFlags | Request flags byte.
  [in] | bAfi | Application Family Identifier.
  [in] | pMask | UID mask, holding known UID bits.
  [in] | bMaskBitLength | Number of UID bits within pMask.
  [out] | pDsfid | Data Storage Format Identifier.
  [out] | pUid | Received UID of first found card
  [out] | pMoreCardsAvailable | If there are more cards available this value is different from zero.

## § phpalSli15693_GetSerialNo()

phStatus_t phpalSli15693_GetSerialNo | ( | void * | pDataParams,
|  | uint8_t * | pUid,
|  | uint8_t * | bUidLength
| ) |  |

Retrieve the serial number (UID).

This API is used to get the UID of current VICC with which this layer is communicating.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_USE_CONDITION | No UID available.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [out] | pUid | Buffer, holding the UID (8 bytes)
  [out] | bUidLength | Length of received UID bytes.

## § phpalSli15693_SetSerialNo()

phStatus_t phpalSli15693_SetSerialNo | ( | void * | pDataParams,
|  | uint8_t * | pUid,
|  | uint8_t | bUidLength
| ) |  |

Set serial number (UID).

When multiple VICCs are detected, this API shall be used to set a specific UID to this layer from the list of detected UIDs.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_INVALID_PARAMETER | UID length invalid.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | pUid | Buffer, holding the UID (8 bytes)
  [in] | bUidLength | Length of UID in bytes.

## § phpalSli15693_SetConfig()

phStatus_t phpalSli15693_SetConfig | ( | void * | pDataParams,
|  | uint16_t | wConfig,
|  | uint16_t | wValue
| ) |  |

Set value of the specified configuration identifier.

The SetConfig command is used to set values for the different configuration parameters of this layer.

`wConfig` can be one of:

- PHPAL_SLI15693_CONFIG_FLAGS
- PHPAL_SLI15693_CONFIG_ADD_INFO
- PHPAL_SLI15693_CONFIG_TIMEOUT_US

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_UNSUPPORTED_PARAMETER | Invalid wConfig.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | wConfig | Item to configure.
  [in] | wValue | Value to set.

## § phpalSli15693_GetConfig()

phStatus_t phpalSli15693_GetConfig | ( | void * | pDataParams,
|  | uint16_t | wConfig,
|  | uint16_t * | pValue
| ) |  |

Get value of the specified configuration identifier.

The GetConfig command is used to retrieve values of different configuration parameters of this layer.

`wConfig` can be one of:

- PHPAL_SLI15693_CONFIG_FLAGS
- PHPAL_SLI15693_CONFIG_ADD_INFO
- PHPAL_SLI15693_CONFIG_TIMEOUT_US

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_UNSUPPORTED_PARAMETER | Invalid wConfig.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | wConfig | Item to read.
  [in] | pValue | Read value.

## § phpalSli15693_InventoryRead()

phStatus_t phpalSli15693_InventoryRead | ( | void * | pDataParams,
|  | uint8_t | bFlags,
|  | uint8_t | bAfi,
|  | uint8_t * | pMask,
|  | uint8_t | bMaskBitLength,
|  | uint8_t | bBlockNo,
|  | uint16_t | wNoOfBlocks,
|  | uint8_t * | pUid,
|  | uint8_t * | pUidLength,
|  | uint8_t * | pData,
|  | uint16_t * | pDataLength
| ) |  |

Perform ICODE SLI InventoryRead command.

When receiving the INVENTORY READ request, the ICODE SLI tag performs the same as the anti-collision sequence, with the difference that instead of the UID and the DSFID, the requested memory content is re-transmitted from the ICODE SLI. If an error is detected, the ICODE SLI tag remains silent.

If the Option_flag PHPAL_SLI15693_FLAG_OPTION is not set, n blocks of data are re-transmitted. If the Option_flag is set, n blocks of data and the part of the UID which is not part of the mask are re-transmitted. Additionally the slot number in case of 16 slots, are returned. Instead of padding with zeros up to the next byte boundary, the corresponding bits of the UID are returned.

The number of bits of the re-transmitted UID can be calculated as follows:

- 16 slots: 60 bits (bit 64 to bit 4) - mask length rounded up to the next byte boundary.
- 1 slot: 64 bits - mask length rounded up to the next byte boundary.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  PH_ERR_INVALID_PARAMETER | mask length or flag or number of blocks invalid.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bFlags | Request flags byte.
  [in] | bAfi | Application Family Identifier.
  [in] | pMask | UID mask, holding known UID bits.
  [in] | bMaskBitLength | Number of UID bits within pMask.
  [in] | bBlockNo | Block number of first block to read.
  [in] | wNoOfBlocks | Number of blocks to read
  [out] | pUid | Received UID
  [out] | pUidLength | Number of received UID bytes.
  [out] | pData | Received data.
  [out] | pDataLength | Number of received data bytes.

## § phpalSli15693_InventoryReadExtended()

phStatus_t phpalSli15693_InventoryReadExtended | ( | void * | pDataParams,
|  | uint8_t | bFlags,
|  | uint8_t | bAfi,
|  | uint8_t | bExtended,
|  | uint8_t | bExtendedOptions,
|  | uint8_t * | pMask,
|  | uint8_t | bMaskBitLength,
|  | uint8_t | bBlockNo,
|  | uint16_t | wNoOfBlocks,
|  | uint8_t * | pUid,
|  | uint8_t * | pUidLength,
|  | uint8_t * | pData,
|  | uint16_t * | pDataLength
| ) |  |

Perform ICODE SLI InventoryRead command in extended mode.

When receiving the INVENTORY READ EXTENDED request, the ICODE SLI tag performs the same as the anti-collision sequence, with the difference that instead of the UID and the DSFID, the requested memory content is re-transmitted from the ICODE SLI. If an error is detected, the ICODE SLI tag remains silent.

If the Option_flag PHPAL_SLI15693_FLAG_OPTION is not set, n blocks of data are re-transmitted. If the Option_flag is set, n blocks of data and the part of the UID which is not part of the mask are re-transmitted. Additionally the slot number in case of 16 slots, are returned. Instead of padding with zeros up to the next byte boundary, the corresponding bits of the UID are returned.

The number of bits of the re-transmitted UID can be calculated as follows:

- 16 slots: 60 bits (bit 64 to bit 4) - mask length rounded up to the next byte boundary.
- 1 slot: 64 bits - mask length rounded up to the next byte boundary.

Depending on different values of Extended Options the api behaves differently b1 - 0 –> Label responds independent from the EAS status b1 - 1 –> Only labels will respond which have the EAS enabled b2 - 0 –> UID will be transmitted as in regular mode b2 - 1 –> Complete UID will be transmitted b3 - 0 –> RFU b4 - 0 –> RFU b5 - 0 –> tag will add the user memory block in the response as requested b5 - 1 –> no user memory data is requested from the tag b6 & b7 - 00 –> Remain in current state b6 & b7 - 10 –> Go to quiet state after response b6 & b7 - 01 –> Go to persistent quiet state after response b6 & b7 - 11 –> Only tags in the PERSISTENT QUIET state will respond to the command b8 - 0 –> RFU

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  PH_ERR_INVALID_PARAMETER | mask length or flag or number of blocks invalid.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bFlags | Request flags byte.
  [in] | bAfi | Application Family Identifier.
  [in] | bExtended | Extended mode
  [in] | bExtendedOptions | Features of the extended mode
  [in] | pMask | UID mask, holding known UID bits.
  [in] | bMaskBitLength | Number of UID bits within pMask.
  [in] | bBlockNo | Block number of first block to read.
  [in] | wNoOfBlocks | Number of blocks to read
  [out] | pUid | Received UID
  [out] | pUidLength | Number of received UID bytes.
  [out] | pData | Received data.
  [out] | pDataLength | Number of received data bytes.

## § phpalSli15693_FastInventoryRead()

phStatus_t phpalSli15693_FastInventoryRead | ( | void * | pDataParams,
|  | uint8_t | bFlags,
|  | uint8_t | bAfi,
|  | uint8_t * | pMask,
|  | uint8_t | bMaskBitLength,
|  | uint8_t | bBlockNo,
|  | uint16_t | wNoOfBlocks,
|  | uint8_t * | pUid,
|  | uint8_t * | pUidLength,
|  | uint8_t * | pData,
|  | uint16_t * | pDataLength
| ) |  |

Perform ICODE SLI FastInventoryRead command.

When receiving the FAST INVENTORY READ command the ICODE SLI tag behaves the same as the INVENTORY READ command with the exceptions that the data rate in the direction ICODE SLI tag to the reader is twice than defined in ISO/IEC 15693-3 depending on the Datarate_flag 53 kbit (high data rate) or 13 kbit (low data rate).

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  PH_ERR_INVALID_PARAMETER | mask length or flag or number of blocks invalid.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bFlags | Request flags byte.
  [in] | bAfi | Application Family Identifier.
  [in] | pMask | UID mask, holding known UID bits.
  [in] | bMaskBitLength | Number of UID bits within pMask.
  [in] | bBlockNo | Block number of first block to read.
  [in] | wNoOfBlocks | Number of blocks to read
  [out] | pUid | Received UID
  [out] | pUidLength | Number of received UID bytes.
  [out] | pData | Received data.
  [out] | pDataLength | Number of received data bytes.

## § phpalSli15693_InventoryPageRead()

phStatus_t phpalSli15693_InventoryPageRead | ( | void * | pDataParams,
|  | uint8_t | bFlags,
|  | uint8_t | bAfi,
|  | uint8_t * | pMask,
|  | uint8_t | bMaskBitLength,
|  | uint8_t | bPageNo,
|  | uint16_t | wNoOfPages,
|  | uint8_t * | pUid,
|  | uint8_t * | pUidLength,
|  | uint8_t * | pData,
|  | uint16_t * | pDataLength
| ) |  |

Perform ICODE SLI InventoryPageRead command.

When receiving the Inventory Page Read request, the ICODE SLI tag performs the same as in the anti-collision sequence, with the difference that instead of the UID and the DSFID the requested memory content is re-transmitted from the tag.

If an error is detected the ICODE SLI tag remains silent.

If the Option_flag PHPAL_SLI15693_FLAG_OPTION is not set, n pages of data including page protection status (password protection condition) are re-transmitted. If the Option_flag is set, n pages (4 blocks = 16 byte) of data including page protection status (password protection condition) and the part of the UID which is not part of the mask are re-transmitted. Additionally the slot number in case of 16 slots, are returned.

The number of bits of the re-transmitted UID can be calculated as follows:

- 16 slots: 60 bits (bit 64 to bit 4) - mask length rounded up to the next byte boundary.
- 1 slot: 64 bits - mask length rounded up to the next byte boundary.

If a requested page is protected with the Read password and the valid Read password has not been transmitted before, the page is not read and only protection status (0x0F) is returned.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  PH_ERR_INVALID_PARAMETER | mask length or flag or number of pages invalid.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bFlags | Request flags byte.
  [in] | bAfi | Application Family Identifier.
  [in] | pMask | UID mask, holding known UID bits.
  [in] | bMaskBitLength | Number of UID bits within pMask.
  [in] | bPageNo | Block number of first page to read.
  [in] | wNoOfPages | Number of pages to read
  [out] | pUid | Received UID
  [out] | pUidLength | Number of received UID bytes.
  [out] | pData | Received data.
  [out] | pDataLength | Number of received data bytes.

## § phpalSli15693_FastInventoryPageRead()

phStatus_t phpalSli15693_FastInventoryPageRead | ( | void * | pDataParams,
|  | uint8_t | bFlags,
|  | uint8_t | bAfi,
|  | uint8_t * | pMask,
|  | uint8_t | bMaskBitLength,
|  | uint8_t | bPageNo,
|  | uint16_t | wNoOfPages,
|  | uint8_t * | pUid,
|  | uint8_t * | pUidLength,
|  | uint8_t * | pData,
|  | uint16_t * | pDataLength
| ) |  |

Perform ICODE SLI FastInventoryPageRead command.

When receiving the Fast Inventory Page Read command the ICODE SLI tag behaves the same as in the Inventory Page Read command with the exceptions that the data rate in the direction of tag to the reader is twice as defined in ISO/IEC 15693-3, depending on the datarate_flag 53 kbit (high data rate) or 13 kbit (low data rate).

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PHPAL_SLI15693_ERR_ISO15693 | error response from VICC.
  PH_ERR_INVALID_PARAMETER | mask length or flag or number of pages invalid.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.
  [in] | bFlags | Request flags byte.
  [in] | bAfi | Application Family Identifier.
  [in] | pMask | UID mask, holding known UID bits.
  [in] | bMaskBitLength | Number of UID bits within pMask.
  [in] | bPageNo | Block number of first page to read.
  [in] | wNoOfPages | Number of pages to read
  [out] | pUid | Received UID
  [out] | pUidLength | Number of received UID bytes.
  [out] | pData | Received data.
  [out] | pDataLength | Number of received data bytes.

## § phpalSli15693_StayQuietPersistent()

phStatus_t phpalSli15693_StayQuietPersistent | ( | void * | pDataParams | ) |

Perform ICODE SLI Stay quite persistent command.

When receiving the STAY QUIET PERSISTENT command, the tag enters the persistent quiet state and will not send back a response.

The STAY QUIET PERSISTENT command provides the same behavior as the mandatory STAY QUIET command with the only difference at a reset (power off), the tag will turn to the ready state, if the power off time is exceeding the persistent time. Refer the corresponding ICODE SLI tag specification for the value of persistent time.

The tag will exit the persistent quiet state when:

- reset (power off) exceeding the persistent time.
- receiving a SELECT request. It shall then go to the Selected state.
- receiving a RESET TO READY request. It shall then go to the Ready state.

Returns
  Status code

Return values

  PH_ERR_SUCCESS | Operation successful.
  PH_ERR_PROTOCOL_ERROR | Invalid response received.
  PH_ERR_USE_CONDITION | No UID available.
  Other | Depending on implementation and underlying component.

Parameters

  [in] | pDataParams | Pointer to this layers parameter structure.