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

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.

palSli15693_states.png

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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_INVALID_PARAMETERmask length or flag invalid.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bFlagsRequest flags byte.
[in]bAfiApplication Family Identifier.
[in]pMaskUID mask, holding known UID bits.
[in]bMaskBitLengthNumber of UID bits within pMask.
[out]pDsfidData Storage Format Identifier.
[out]pUidReceived 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:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_INVALID_PARAMETERInvalid option
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bOptionOption parameter.
[out]pDsfidData Storage Format Identifier.
[out]pUidReceived Uid
[out]pUidLengthNumber of received UID bytes.
[out]pDataReceived data.
[out]pDataLengthNumber 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_USE_CONDITIONNo UID available.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_USE_CONDITIONNo UID available.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer 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:

Alternatively, the following bits can be combined:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_USE_CONDITIONNo UID available.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]wOptionOption parameter.
[in]pTxBufferData to transmit. Flags, IC MFC code and UID will be added automatically.
[in]wTxLengthLength of data to transmit.
[out]ppRxBufferPointer to received data.
[out]pRxLengthnumber 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:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_INVALID_PARAMETERmask length or flag invalid.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bOptionSelected or addressed
[in]bFlagsRequest flags byte.
[in]bAfiApplication Family Identifier.
[in]pMaskUID mask, holding known UID bits.
[in]bMaskBitLengthNumber of UID bits within pMask.
[out]pDsfidData Storage Format Identifier.
[out]pUidReceived UID of first found card
[out]pMoreCardsAvailableIf 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_SUCCESSOperation successful.
PH_ERR_USE_CONDITIONNo UID available.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[out]pUidBuffer, holding the UID (8 bytes)
[out]bUidLengthLength 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_SUCCESSOperation successful.
PH_ERR_INVALID_PARAMETERUID length invalid.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]pUidBuffer, holding the UID (8 bytes)
[in]bUidLengthLength 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:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_UNSUPPORTED_PARAMETERInvalid wConfig.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]wConfigItem to configure.
[in]wValueValue 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:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_UNSUPPORTED_PARAMETERInvalid wConfig.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]wConfigItem to read.
[in]pValueRead 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
PH_ERR_INVALID_PARAMETERmask length or flag or number of blocks invalid.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bFlagsRequest flags byte.
[in]bAfiApplication Family Identifier.
[in]pMaskUID mask, holding known UID bits.
[in]bMaskBitLengthNumber of UID bits within pMask.
[in]bBlockNoBlock number of first block to read.
[in]wNoOfBlocksNumber of blocks to read
[out]pUidReceived UID
[out]pUidLengthNumber of received UID bytes.
[out]pDataReceived data.
[out]pDataLengthNumber 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
PH_ERR_INVALID_PARAMETERmask length or flag or number of blocks invalid.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bFlagsRequest flags byte.
[in]bAfiApplication Family Identifier.
[in]bExtendedExtended mode
[in]bExtendedOptionsFeatures of the extended mode
[in]pMaskUID mask, holding known UID bits.
[in]bMaskBitLengthNumber of UID bits within pMask.
[in]bBlockNoBlock number of first block to read.
[in]wNoOfBlocksNumber of blocks to read
[out]pUidReceived UID
[out]pUidLengthNumber of received UID bytes.
[out]pDataReceived data.
[out]pDataLengthNumber 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
PH_ERR_INVALID_PARAMETERmask length or flag or number of blocks invalid.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bFlagsRequest flags byte.
[in]bAfiApplication Family Identifier.
[in]pMaskUID mask, holding known UID bits.
[in]bMaskBitLengthNumber of UID bits within pMask.
[in]bBlockNoBlock number of first block to read.
[in]wNoOfBlocksNumber of blocks to read
[out]pUidReceived UID
[out]pUidLengthNumber of received UID bytes.
[out]pDataReceived data.
[out]pDataLengthNumber 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
PH_ERR_INVALID_PARAMETERmask length or flag or number of pages invalid.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bFlagsRequest flags byte.
[in]bAfiApplication Family Identifier.
[in]pMaskUID mask, holding known UID bits.
[in]bMaskBitLengthNumber of UID bits within pMask.
[in]bPageNoBlock number of first page to read.
[in]wNoOfPagesNumber of pages to read
[out]pUidReceived UID
[out]pUidLengthNumber of received UID bytes.
[out]pDataReceived data.
[out]pDataLengthNumber 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PHPAL_SLI15693_ERR_ISO15693error response from VICC.
PH_ERR_INVALID_PARAMETERmask length or flag or number of pages invalid.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.
[in]bFlagsRequest flags byte.
[in]bAfiApplication Family Identifier.
[in]pMaskUID mask, holding known UID bits.
[in]bMaskBitLengthNumber of UID bits within pMask.
[in]bPageNoBlock number of first page to read.
[in]wNoOfPagesNumber of pages to read
[out]pUidReceived UID
[out]pUidLengthNumber of received UID bytes.
[out]pDataReceived data.
[out]pDataLengthNumber 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_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_USE_CONDITIONNo UID available.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to this layers parameter structure.