NXP Reader Library  v17.1.0.2535

These Components implement the ISO/IEC 14443-3 Type-A contactless protocol. More...

Collaboration diagram for ISO/IEC 14443-3A:

Modules

 Component : Software
 
 Component : Rd70x
 
 Component : Rd710
 
 Component : Pcsc
 
 Component : SamAV2_X
 
 Component : SamAV3_X
 

Macros

#define PHPAL_I14443P3A_CASCADE_LEVEL_1   0x93
 Cascade Level 1 code for ISO14443-3A anticollision/select command.
 
#define PHPAL_I14443P3A_CASCADE_LEVEL_2   0x95
 Cascade Level 2 code for ISO14443-3A anticollision/select command.
 
#define PHPAL_I14443P3A_CASCADE_LEVEL_3   0x97
 Cascade Level 3 code for ISO14443-3A anticollision/select command.
 
#define PHPAL_I14443P3A_TIMEOUT_DEFAULT_MS   10
 Timeout after card selection in milliseconds.
 

Functions

phStatus_t phpalI14443p3a_RequestA (void *pDataParams, uint8_t *pAtqa)
 Perform a ISO14443-3A Request A command. More...
 
phStatus_t phpalI14443p3a_RequestS (void *pDataParams, uint8_t *pAtqs)
 Perform a ISO14443-3A Request S command. More...
 
phStatus_t phpalI14443p3a_WakeUpA (void *pDataParams, uint8_t *pAtqa)
 Perform a ISO14443-3A Wakeup A command. More...
 
phStatus_t phpalI14443p3a_WakeUpS (void *pDataParams, uint8_t *pAtqs)
 Perform a ISO14443-3A Wakeup S command. More...
 
phStatus_t phpalI14443p3a_HaltA (void *pDataParams)
 Perform a ISO14443-3A Halt command. More...
 
phStatus_t phpalI14443p3a_Anticollision (void *pDataParams, uint8_t bCascadeLevel, uint8_t *pUidIn, uint8_t bNvbUidIn, uint8_t *pUidOut, uint8_t *pNvbUidOut)
 Perform a ISO14443-3A Anticollision or Select command. More...
 
phStatus_t phpalI14443p3a_Select (void *pDataParams, uint8_t bCascadeLevel, uint8_t *pUidIn, uint8_t *pSak)
 Perform a ISO14443-3A Select command. More...
 
phStatus_t phpalI14443p3a_ActivateCard (void *pDataParams, uint8_t *pUidIn, uint8_t bLenUidIn, uint8_t *pUidOut, uint8_t *pLenUidOut, uint8_t *pSak, uint8_t *pMoreCardsAvailable)
 Perform ISO14443-3A ReqA/WupA or ReqS/WupS and Anticollision/Select commands for all cascade levels. More...
 
phStatus_t phpalI14443p3a_Exchange (void *pDataParams, uint16_t wOption, uint8_t *pTxBuffer, uint16_t wTxLength, uint8_t **ppRxBuffer, uint16_t *pRxLength)
 Perform ISO14443-3A Data Exchange with Picc. More...
 
phStatus_t phpalI14443p3a_GetSerialNo (void *pDataParams, uint8_t *pUidOut, uint8_t *pLenUidOut)
 Retrieve the serial number. More...
 
phStatus_t phpalI14443p3a_GetConfig (void *pDataParams, uint16_t wConfig, uint16_t *pValue)
 Perform a GetConfig command. More...
 
phStatus_t phpalI14443p3a_SetConfig (void *pDataParams, uint16_t wConfig, uint16_t wValue)
 Perform a SetConfig command. More...
 

The configuration to be used for SetConfig / GetConfig.

#define PHPAL_I14443P3A_SILENT_MODE   0x00A1U
 Option for Get/Set Config to enable/disable Silent mode activation (phpalI14443p3a_ActivateCard). More...
 
#define PHPAL_I14443P3A_SILENT_MODE_DISABLED   0x00U
 Silent mode is disabled. More...
 
#define PHPAL_I14443P3A_SILENT_MODE_ENABLED   0x01U
 Silent mode is enabled. More...
 

Detailed Description

These Components implement the ISO/IEC 14443-3 Type-A contactless protocol.

Macro Definition Documentation

◆ PHPAL_I14443P3A_SILENT_MODE

#define PHPAL_I14443P3A_SILENT_MODE   0x00A1U

Option for Get/Set Config to enable/disable Silent mode activation (phpalI14443p3a_ActivateCard).

By default the configuration will be disabled.

◆ PHPAL_I14443P3A_SILENT_MODE_DISABLED

#define PHPAL_I14443P3A_SILENT_MODE_DISABLED   0x00U

Silent mode is disabled.

ReqA / WupA command will be used. This is the default option for PHPAL_I14443P3A_SILENT_MODE configuration.

◆ PHPAL_I14443P3A_SILENT_MODE_ENABLED

#define PHPAL_I14443P3A_SILENT_MODE_ENABLED   0x01U

Silent mode is enabled.

ReqS / WupS command will be used.

Function Documentation

◆ phpalI14443p3a_RequestA()

phStatus_t phpalI14443p3a_RequestA ( void *  pDataParams,
uint8_t pAtqa 
)

Perform a ISO14443-3A Request A command.

Note: The "Request Guard Time" (see 6.2.2, ISO/IEC 14443-3:2009(E)) is mandatory and is neither implemented here nor implemented in every Hardware Abstraction Layer layer.
Make sure that either the used HAL or the used application does comply to this rule.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[out]pAtqa[Out] Response of RequestA command. The buffer cannot be null and size should be 2 bytes long.

◆ phpalI14443p3a_RequestS()

phStatus_t phpalI14443p3a_RequestS ( void *  pDataParams,
uint8_t pAtqs 
)

Perform a ISO14443-3A Request S command.

This command is support for software mode only.

Note: The "Request Guard Time" (see 6.2.2, ISO/IEC 14443-3:2009(E)) is mandatory and is neither implemented here nor implemented in every Hardware Abstraction Layer layer.
Make sure that either the used HAL or the used application does comply to this rule.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[out]pAtqs[Out] Response of RequestS command. The buffer cannot be null and size should be 2 bytes long.

◆ phpalI14443p3a_WakeUpA()

phStatus_t phpalI14443p3a_WakeUpA ( void *  pDataParams,
uint8_t pAtqa 
)

Perform a ISO14443-3A Wakeup A command.

Note: The "Request Guard Time" (see 6.2.2, ISO/IEC 14443-3:2009(E)) is mandatory and is neither implemented here nor implemented in every Hardware Abstraction Layer layer.
Make sure that either the used HAL or the used application does comply to this rule.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[out]pAtqa[Out] Response of WakeUpA command. The buffer cannot be null and size should be 2 bytes long.

◆ phpalI14443p3a_WakeUpS()

phStatus_t phpalI14443p3a_WakeUpS ( void *  pDataParams,
uint8_t pAtqs 
)

Perform a ISO14443-3A Wakeup S command.

This command is support for software mode only.

Note: The "Request Guard Time" (see 6.2.2, ISO/IEC 14443-3:2009(E)) is mandatory and is neither implemented here nor implemented in every Hardware Abstraction Layer layer.
Make sure that either the used HAL or the used application does comply to this rule.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[out]pAtqs[Out] Response of WakeUpS command. The buffer cannot be null and size should be 2 bytes long.

◆ phpalI14443p3a_HaltA()

phStatus_t phpalI14443p3a_HaltA ( void *  pDataParams)

Perform a ISO14443-3A Halt command.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.

◆ phpalI14443p3a_Anticollision()

phStatus_t phpalI14443p3a_Anticollision ( void *  pDataParams,
uint8_t  bCascadeLevel,
uint8_t pUidIn,
uint8_t  bNvbUidIn,
uint8_t pUidOut,
uint8_t pNvbUidOut 
)

Perform a ISO14443-3A Anticollision or Select command.

bNvbUidIn != 0x40: Perform Anticollision command.
bNvbUidIn = 0x40: Perform Select command.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_FRAMING_ERRORBcc invalid.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[in]bCascadeLevel[In] Cascade level code.
[in]pUidIn[In] Known Uid, can be NULL; uint8_t[0-4].
[in]bNvbUidIn[In] Number of valid bits of UidIn. MSB codes the valid bytes, LSB codes the valid bits.
[out]pUidOut[Out] Complete Uid; uint8_t[4].
[out]pNvbUidOut[Out] Number of valid bits of UidOut. MSB codes the valid bytes, LSB codes the valid bits.

◆ phpalI14443p3a_Select()

phStatus_t phpalI14443p3a_Select ( void *  pDataParams,
uint8_t  bCascadeLevel,
uint8_t pUidIn,
uint8_t pSak 
)

Perform a ISO14443-3A Select command.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[in]bCascadeLevel[In] Cascade level code.
[in]pUidIn[In] Uid; uint8_t[4].
[out]pSak[Out] Select Acknowledge; uint8_t.

◆ phpalI14443p3a_ActivateCard()

phStatus_t phpalI14443p3a_ActivateCard ( void *  pDataParams,
uint8_t pUidIn,
uint8_t  bLenUidIn,
uint8_t pUidOut,
uint8_t pLenUidOut,
uint8_t pSak,
uint8_t pMoreCardsAvailable 
)

Perform ISO14443-3A ReqA/WupA or ReqS/WupS and Anticollision/Select commands for all cascade levels.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_PROTOCOL_ERRORInvalid response received.
PH_ERR_FRAMING_ERRORBcc invalid.
PH_ERR_LENGTH_ERRORGiven pUidIn is not complete.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[in]pUidIn[In] Known Uid, can be NULL if bLenUidIn is 0; uint8_t[4/7/10].
[in]bLenUidIn[In] Length of known Uid; 0/4/7/10.
[out]pUidOut[Out] Complete Uid; uint8_t[10].
[out]pLenUidOut[Out] Length of Uid; 4/7/10.
[out]pSak[Out] Select Acknowledge; uint8_t.
[out]pMoreCardsAvailable[Out] Whether there are more cards in the field or not; uint8_t.

◆ phpalI14443p3a_Exchange()

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

Perform ISO14443-3A Data Exchange with Picc.

wOption can be one of:

Alternatively, the following bits can be combined:

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlaying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[in]wOption[In] Option parameter.
[in]pTxBuffer[In] Data to transmit.
[in]wTxLength[In] Length of data to transmit.
[out]ppRxBuffer[Out] Pointer to received data.
[out]pRxLength[Out] number of received data bytes.

◆ phpalI14443p3a_GetSerialNo()

phStatus_t phpalI14443p3a_GetSerialNo ( void *  pDataParams,
uint8_t pUidOut,
uint8_t pLenUidOut 
)

Retrieve the serial number.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_USE_CONDITIONNo Serial number available at the moment.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[out]pUidOut[Out] Last Complete Uid; uint8_t[10].
[out]pLenUidOut[Out] Length of Uid; 4/7/10.

◆ phpalI14443p3a_GetConfig()

phStatus_t phpalI14443p3a_GetConfig ( void *  pDataParams,
uint16_t  wConfig,
uint16_t pValue 
)

Perform a GetConfig command.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[in]wConfig[In] Configuration to read. Will be one of the below values.
[out]pValue[Out] The value for the mentioned configuration.

◆ phpalI14443p3a_SetConfig()

phStatus_t phpalI14443p3a_SetConfig ( void *  pDataParams,
uint16_t  wConfig,
uint16_t  wValue 
)

Perform a SetConfig command.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParams[In] Pointer to this layer's parameter structure.
[in]wConfig[In] Configuration to set. Will be one of the below values.
[in]wValue[In] The value for the mentioned configuration.