NXP NFC Reader Library  v4.040.05.011646
Discovery Loop

Discovery loop component as per NFC Forum Activity Specification 1.1 and EMVCo Digital 2.5 specification. More...

Collaboration diagram for Discovery Loop:

Modules

 Component : Software
 

Functions

phStatus_t phacDiscLoop_Run (void *pDataParams, uint8_t bEntryPoint)
 Starts the discovery loop in poll mode or listen mode. More...
 
phStatus_t phacDiscLoop_SetConfig (void *pDataParams, uint16_t wConfig, uint16_t wValue)
 Set discovery loop configuration value. More...
 
phStatus_t phacDiscLoop_GetConfig (void *pDataParams, uint16_t wConfig, uint16_t *pValue)
 Get discovery loop configuration value. More...
 
phStatus_t phacDiscLoop_ActivateCard (void *pDataParams, uint8_t bTagType, uint8_t bTagIndex)
 Activates the given tag type with given index. More...
 

Configuration Types

These options shall be used along with phacDiscLoop_SetConfig and phacDiscLoop_GetConfig to set/get discovery loop configurations.

#define PHAC_DISCLOOP_CONFIG_GTA_VALUE_US   0x00U
 Set/Get the guard time for Type A technology in microseconds for passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_GTB_VALUE_US   0x01U
 Set/Get the guard time for Type B technology in microseconds for passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_GTFB_VALUE_US   0x02U
 Set/Get the guard time for Type F technology in microseconds for passive poll mode when polling for Type B is preceded by polling for Type F. More...
 
#define PHAC_DISCLOOP_CONFIG_GTBF_VALUE_US   0x03U
 Set/Get the guard time for Type F technology in microseconds for passive poll mode when polling for Type F is preceded by polling for Type B. More...
 
#define PHAC_DISCLOOP_CONFIG_GTV_VALUE_US   0x04U
 Set/Get the guard time for Type V technology in microseconds for passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_GT18000P3M3_VALUE_US   0x05U
 Set/Get the guard time for 18000P3M3 technology in microseconds for passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_GT_ACTIVE_US   0x06U
 Set/Get the guard time for Active poll mode in microseconds. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_DEVICE_LIMIT   0x10U
 Set/Get the number of Type A devices/tags that can be detected in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_DEVICE_LIMIT   0x11U
 Set/Get the number of Type B devices/tags that can be detected in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_DEVICE_LIMIT   0x12U
 Set/Get the number of Type F devices/tags that can be detected in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEV_DEVICE_LIMIT   0x13U
 Set/Get the number of Type V tags that can be detected in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_18000P3M3_DEVICE_LIMIT   0x14U
 Set/Get the number of 18000P3M3 tags that can be detected in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_TAGS_FOUND   0x20U
 Returns the number of Type A devices/tags found in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_TAGS_FOUND   0x21U
 Returns the number of Type B devices/tags found in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_TAGS_FOUND   0x22U
 Returns the number of Type F devices/tags found in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEV_TAGS_FOUND   0x23U
 Returns the number of Type V tags found in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_18000P3M3_TAGS_FOUND   0x24U
 Returns the number of 18000P3M3 tags found in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_SUPPORT_TYPE4B   0x25U
 Returns if the activated Type B device/tag is compliant with ISO/IEC 14443-4 or not. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_AFI_REQ   0x30U
 Set/Get Application Family Identifier (AFI) to be used for Type B in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_EXTATQB   0x31U
 Enable or disable (PH_ON or PH_OFF) extended ATQB (Answer to Request B) option for Type B during passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_FSDI   0x32U
 Sets the Frame Size Device Integer (FSDI) value for the Type B tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_CID   0x33U
 Sets the Card Identifier (CID) value for the Type B tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_NAD   0x34U
 Sets the Node ADdress (NAD) value for the Type B tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_DRI   0x35U
 Sets the Divisor Receive Integer (DRI) for Type B tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEB_DSI   0x36U
 Sets the Divisor Send Integer (DSI) for Type B tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_FSDI   0x40U
 Sets the Frame Size Device Integer (FSDI) for the 14443P4A tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_CID   0x41U
 Sets the Card Identifier (CID) for the 14443P4A tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_NAD   0x42U
 Sets the Node ADdress (NAD) for the 14443P4A tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_DRI   0x43U
 Sets the Divisor Receive Integer (DRI) for the 14443P4A tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_DSI   0x44U
 Sets the Divisor Send Integer (DSI) for the 14443P4A tags in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_DID   0x45U
 Sets the Device Identifier (DID) for Type A P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_LRI   0x46U
 Sets the Initiator Length Reduction field (LRI) for Type A P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_NAD_ENABLE   0x47U
 Enable/Disable Node Addressing (NAD) (PH_ON or PH_OFF) for Type A P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_NAD   0x48U
 Sets the Node Address (NAD) for Type A P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_GI_LEN   0x49U
 Sets the length of the general bytes for Type A P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_ATR_RES_LEN   0x50U
 Get ATR response length from Type A P2P devices in passive poll mode.
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_DID   0x51U
 Sets the Device Identifier (DID) for Type F P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_LRI   0x52U
 Sets the Initiator Length Reduction field (LRI) for Type F P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_NAD_ENABLE   0x53U
 Enable/Disable Node Addressing (NAD) (PH_ON or PH_OFF) for Type F P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_NAD   0x54U
 Sets the Node Address (NAD) for Type F P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_GI_LEN   0x55U
 Sets the length of the general bytes for Type F P2P devices in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_ATR_RES_LEN   0x56U
 Get ATR response length from Type A P2P devices in passive poll mode.
 
#define PHAC_DISCLOOP_CONFIG_TYPEF_CUR_BAUD   0x57U
 Set/Get the baud rate of Felica in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TYPEV_RX_DATA_RATE   0x60U
 Configure ISO 15693 for high/low RX data rate. More...
 
#define PHAC_DISCLOOP_CONFIG_I18000P3M3_MODULATION   0x70U
 Configure ISO 18000p3m3 modulation/sub-carrier. More...
 
#define PHAC_DISCLOOP_CONFIG_I18000P3M3_FREQUENCY   0x71U
 Configure ISO 18000p3m3 link frequency. More...
 
#define PHAC_DISCLOOP_CONFIG_ENABLE_LPCD   0x80U
 Enable/Disable Low Power Card Detection (LPCD) in passive poll mode (PH_ON or PH_OFF). More...
 
#define PHAC_DISCLOOP_CONFIG_NR_TAGS_FOUND   0x81U
 Returns the number of devices/tags found in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_ANTI_COLL   0x88U
 Enable/Disable anti-collision support for Type A technology (PH_ON or PH_OFF). More...
 
#define PHAC_DISCLOOP_CONFIG_ADDITIONAL_INFO   0x85U
 Get the actual error code from lower layer when discovery loop returns PHAC_DISCLOOP_FAILURE.
 
#define PHAC_DISCLOOP_CONFIG_OPE_MODE   0x82U
 Configure operation mode of discovery loop. More...
 
#define PHAC_DISCLOOP_CONFIG_COLLISION_PENDING   0x83U
 Get collision pending status of polled technologies. More...
 
#define PHAC_DISCLOOP_CONFIG_NEXT_POLL_STATE   0x84U
 Set the discovery loop state to start with while in poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_BAIL_OUT   0x86U
 Set/Get the bail out option for various technologies in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_TECH_DETECTED   0x87U
 Returns the technologies that were detected during poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_ACT_LIS_TECH_CFG   0x89U
 Configure technologies to listen for in active listen mode. More...
 
#define PHAC_DISCLOOP_CONFIG_ACT_POLL_TECH_CFG   0x8AU
 Configure technologies to be detected in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_PAS_LIS_TECH_CFG   0x8BU
 Configure technologies to listen for in passive listen mode. More...
 
#define PHAC_DISCLOOP_CONFIG_PAS_POLL_TECH_CFG   0x8CU
 Configure technologies to be detected in passive poll mode. More...
 
#define PHAC_DISCLOOP_CONFIG_ACTIVITY_VERSION   0x8DU
 Configure NFC activity version. More...
 
#define PHAC_DISCLOOP_CONFIG_TARGET_RETRY_COUNT   0x90U
 Configure AUTOCOLL retry count in listen mode. More...
 

Detailed Description

Discovery loop component as per NFC Forum Activity Specification 1.1 and EMVCo Digital 2.5 specification.

Discovery loop implements poll mode based on NFC Activity Specification 1.1 (backward compatibility with version 1.0) and EMVCo Specification 2.5. Listen mode is implemented based on NFC Activity Specification 1.1. Support for Type V (ISO 15693) polling is included based on NFC Forum draft specification. ISO 18000-3 Mode 3 (EPC Gen2) is supported as a proprietary technology in poll mode.

Poll_Mode This scenario depicts sequence for Poll_Mode.

Poll_Mode.png

Listen_Mode This scenario depicts sequence for Listen_Mode.

Listen_Mode.png

Macro Definition Documentation

§ PHAC_DISCLOOP_CONFIG_GTA_VALUE_US

#define PHAC_DISCLOOP_CONFIG_GTA_VALUE_US   0x00U

Set/Get the guard time for Type A technology in microseconds for passive poll mode.

Default guard time is set to 5200 microseconds for Type A.

§ PHAC_DISCLOOP_CONFIG_GTB_VALUE_US

#define PHAC_DISCLOOP_CONFIG_GTB_VALUE_US   0x01U

Set/Get the guard time for Type B technology in microseconds for passive poll mode.

Default guard time is set to 5200 microseconds for Type B.

§ PHAC_DISCLOOP_CONFIG_GTFB_VALUE_US

#define PHAC_DISCLOOP_CONFIG_GTFB_VALUE_US   0x02U

Set/Get the guard time for Type F technology in microseconds for passive poll mode when polling for Type B is preceded by polling for Type F.

Default guard time is set to 20400 microseconds for Type F.

§ PHAC_DISCLOOP_CONFIG_GTBF_VALUE_US

#define PHAC_DISCLOOP_CONFIG_GTBF_VALUE_US   0x03U

Set/Get the guard time for Type F technology in microseconds for passive poll mode when polling for Type F is preceded by polling for Type B.

Default guard time is set to 15300 microseconds for Type F.

§ PHAC_DISCLOOP_CONFIG_GTV_VALUE_US

#define PHAC_DISCLOOP_CONFIG_GTV_VALUE_US   0x04U

Set/Get the guard time for Type V technology in microseconds for passive poll mode.

Default guard time is set to 5200 microseconds for Type V.

§ PHAC_DISCLOOP_CONFIG_GT18000P3M3_VALUE_US

#define PHAC_DISCLOOP_CONFIG_GT18000P3M3_VALUE_US   0x05U

Set/Get the guard time for 18000P3M3 technology in microseconds for passive poll mode.

Default guard time is set to 10000 microseconds for 18000P3M3.

§ PHAC_DISCLOOP_CONFIG_GT_ACTIVE_US

#define PHAC_DISCLOOP_CONFIG_GT_ACTIVE_US   0x06U

Set/Get the guard time for Active poll mode in microseconds.

Default guard time is set to 5100 microseconds.

§ PHAC_DISCLOOP_CONFIG_TYPEA_DEVICE_LIMIT

#define PHAC_DISCLOOP_CONFIG_TYPEA_DEVICE_LIMIT   0x10U

Set/Get the number of Type A devices/tags that can be detected in passive poll mode.

Default device limit is 1 for Type A. Maximum supported device limit is PHAC_DISCLOOP_CFG_MAX_CARDS_SUPPORTED.

§ PHAC_DISCLOOP_CONFIG_TYPEB_DEVICE_LIMIT

#define PHAC_DISCLOOP_CONFIG_TYPEB_DEVICE_LIMIT   0x11U

Set/Get the number of Type B devices/tags that can be detected in passive poll mode.

Default device limit is 1 for Type B. Maximum supported device limit is PHAC_DISCLOOP_CFG_MAX_CARDS_SUPPORTED.

§ PHAC_DISCLOOP_CONFIG_TYPEF_DEVICE_LIMIT

#define PHAC_DISCLOOP_CONFIG_TYPEF_DEVICE_LIMIT   0x12U

Set/Get the number of Type F devices/tags that can be detected in passive poll mode.

Default device limit is 1 for Type F. Maximum supported device limit is PHAC_DISCLOOP_CFG_MAX_CARDS_SUPPORTED.

§ PHAC_DISCLOOP_CONFIG_TYPEV_DEVICE_LIMIT

#define PHAC_DISCLOOP_CONFIG_TYPEV_DEVICE_LIMIT   0x13U

Set/Get the number of Type V tags that can be detected in passive poll mode.

Default device limit is 1 for Type V. Maximum supported device limit is PHAC_DISCLOOP_CFG_MAX_CARDS_SUPPORTED.

§ PHAC_DISCLOOP_CONFIG_18000P3M3_DEVICE_LIMIT

#define PHAC_DISCLOOP_CONFIG_18000P3M3_DEVICE_LIMIT   0x14U

Set/Get the number of 18000P3M3 tags that can be detected in passive poll mode.

Default device limit is 1 for 18000P3M3. Maximum supported device limit is PHAC_DISCLOOP_CFG_MAX_CARDS_SUPPORTED.

§ PHAC_DISCLOOP_CONFIG_TYPEA_TAGS_FOUND

#define PHAC_DISCLOOP_CONFIG_TYPEA_TAGS_FOUND   0x20U

Returns the number of Type A devices/tags found in passive poll mode.

This gives the number of Type A devices/tags found after phacDiscLoop_Run in poll mode (PHAC_DISCLOOP_ENTRY_POINT_POLL).

§ PHAC_DISCLOOP_CONFIG_TYPEB_TAGS_FOUND

#define PHAC_DISCLOOP_CONFIG_TYPEB_TAGS_FOUND   0x21U

Returns the number of Type B devices/tags found in passive poll mode.

This gives the number of Type B devices/tags found after phacDiscLoop_Run in poll mode (PHAC_DISCLOOP_ENTRY_POINT_POLL).

§ PHAC_DISCLOOP_CONFIG_TYPEF_TAGS_FOUND

#define PHAC_DISCLOOP_CONFIG_TYPEF_TAGS_FOUND   0x22U

Returns the number of Type F devices/tags found in passive poll mode.

This gives the number of Type F devices/tags found after phacDiscLoop_Run in poll mode (PHAC_DISCLOOP_ENTRY_POINT_POLL).

§ PHAC_DISCLOOP_CONFIG_TYPEV_TAGS_FOUND

#define PHAC_DISCLOOP_CONFIG_TYPEV_TAGS_FOUND   0x23U

Returns the number of Type V tags found in passive poll mode.

This gives the number of Type V tags found after phacDiscLoop_Run in poll mode (PHAC_DISCLOOP_ENTRY_POINT_POLL).

§ PHAC_DISCLOOP_CONFIG_18000P3M3_TAGS_FOUND

#define PHAC_DISCLOOP_CONFIG_18000P3M3_TAGS_FOUND   0x24U

Returns the number of 18000P3M3 tags found in passive poll mode.

This gives the number of 18000P3M3 tags found after phacDiscLoop_Run in poll mode (PHAC_DISCLOOP_ENTRY_POINT_POLL).

§ PHAC_DISCLOOP_CONFIG_TYPEB_SUPPORT_TYPE4B

#define PHAC_DISCLOOP_CONFIG_TYPEB_SUPPORT_TYPE4B   0x25U

Returns if the activated Type B device/tag is compliant with ISO/IEC 14443-4 or not.

In ISO mode this is used to take decision if tag is compliant with ISO/IEC 14443-4.

§ PHAC_DISCLOOP_CONFIG_TYPEB_AFI_REQ

#define PHAC_DISCLOOP_CONFIG_TYPEB_AFI_REQ   0x30U

Set/Get Application Family Identifier (AFI) to be used for Type B in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEB_EXTATQB

#define PHAC_DISCLOOP_CONFIG_TYPEB_EXTATQB   0x31U

Enable or disable (PH_ON or PH_OFF) extended ATQB (Answer to Request B) option for Type B during passive poll mode.

Default is PH_OFF.

§ PHAC_DISCLOOP_CONFIG_TYPEB_FSDI

#define PHAC_DISCLOOP_CONFIG_TYPEB_FSDI   0x32U

Sets the Frame Size Device Integer (FSDI) value for the Type B tags in passive poll mode.

Default is 0x08.

§ PHAC_DISCLOOP_CONFIG_TYPEB_CID

#define PHAC_DISCLOOP_CONFIG_TYPEB_CID   0x33U

Sets the Card Identifier (CID) value for the Type B tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEB_NAD

#define PHAC_DISCLOOP_CONFIG_TYPEB_NAD   0x34U

Sets the Node ADdress (NAD) value for the Type B tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEB_DRI

#define PHAC_DISCLOOP_CONFIG_TYPEB_DRI   0x35U

Sets the Divisor Receive Integer (DRI) for Type B tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEB_DSI

#define PHAC_DISCLOOP_CONFIG_TYPEB_DSI   0x36U

Sets the Divisor Send Integer (DSI) for Type B tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_FSDI

#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_FSDI   0x40U

Sets the Frame Size Device Integer (FSDI) for the 14443P4A tags in passive poll mode.

Default is 0x08.

§ PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_CID

#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_CID   0x41U

Sets the Card Identifier (CID) for the 14443P4A tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_NAD

#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_NAD   0x42U

Sets the Node ADdress (NAD) for the 14443P4A tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_DRI

#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_DRI   0x43U

Sets the Divisor Receive Integer (DRI) for the 14443P4A tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_DSI

#define PHAC_DISCLOOP_CONFIG_TYPEA_I3P4_DSI   0x44U

Sets the Divisor Send Integer (DSI) for the 14443P4A tags in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_P2P_DID

#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_DID   0x45U

Sets the Device Identifier (DID) for Type A P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_P2P_LRI

#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_LRI   0x46U

Sets the Initiator Length Reduction field (LRI) for Type A P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_P2P_NAD_ENABLE

#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_NAD_ENABLE   0x47U

Enable/Disable Node Addressing (NAD) (PH_ON or PH_OFF) for Type A P2P devices in passive poll mode.

Default is PH_OFF.

§ PHAC_DISCLOOP_CONFIG_TYPEA_P2P_NAD

#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_NAD   0x48U

Sets the Node Address (NAD) for Type A P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEA_P2P_GI_LEN

#define PHAC_DISCLOOP_CONFIG_TYPEA_P2P_GI_LEN   0x49U

Sets the length of the general bytes for Type A P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEF_P2P_DID

#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_DID   0x51U

Sets the Device Identifier (DID) for Type F P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEF_P2P_LRI

#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_LRI   0x52U

Sets the Initiator Length Reduction field (LRI) for Type F P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEF_P2P_NAD_ENABLE

#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_NAD_ENABLE   0x53U

Enable/Disable Node Addressing (NAD) (PH_ON or PH_OFF) for Type F P2P devices in passive poll mode.

Default is PH_OFF.

§ PHAC_DISCLOOP_CONFIG_TYPEF_P2P_NAD

#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_NAD   0x54U

Sets the Node Address (NAD) for Type F P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEF_P2P_GI_LEN

#define PHAC_DISCLOOP_CONFIG_TYPEF_P2P_GI_LEN   0x55U

Sets the length of the general bytes for Type F P2P devices in passive poll mode.

Default is 0.

§ PHAC_DISCLOOP_CONFIG_TYPEF_CUR_BAUD

#define PHAC_DISCLOOP_CONFIG_TYPEF_CUR_BAUD   0x57U

Set/Get the baud rate of Felica in passive poll mode.

PHAC_DISCLOOP_CON_BITR_212 - Felica @ 212 kbps.
PHAC_DISCLOOP_CON_BITR_424 - Felica @ 424 kbps.

§ PHAC_DISCLOOP_CONFIG_TYPEV_RX_DATA_RATE

#define PHAC_DISCLOOP_CONFIG_TYPEV_RX_DATA_RATE   0x60U

Configure ISO 15693 for high/low RX data rate.

PHHAL_HW_RF_RX_DATARATE_HIGH
PHHAL_HW_RF_RX_DATARATE_LOW
Default is PHHAL_HW_RF_RX_DATARATE_HIGH.

§ PHAC_DISCLOOP_CONFIG_I18000P3M3_MODULATION

#define PHAC_DISCLOOP_CONFIG_I18000P3M3_MODULATION   0x70U

Configure ISO 18000p3m3 modulation/sub-carrier.

PHPAL_I18000P3M3_M_MANCHESTER_2 - Use two sub-carrier.
PHPAL_I18000P3M3_M_MANCHESTER_4 - Use four sub-carrier.
Default is PHPAL_I18000P3M3_M_MANCHESTER_4.

§ PHAC_DISCLOOP_CONFIG_I18000P3M3_FREQUENCY

#define PHAC_DISCLOOP_CONFIG_I18000P3M3_FREQUENCY   0x71U

Configure ISO 18000p3m3 link frequency.

PHPAL_I18000P3M3_LF_423KHZ - 423kHz (fc/32).
PHPAL_I18000P3M3_LF_847KHZ - 847kHz (fc/16).
Default is PHPAL_I18000P3M3_LF_847KHZ.

§ PHAC_DISCLOOP_CONFIG_ENABLE_LPCD

#define PHAC_DISCLOOP_CONFIG_ENABLE_LPCD   0x80U

Enable/Disable Low Power Card Detection (LPCD) in passive poll mode (PH_ON or PH_OFF).

Default is PH_OFF.

§ PHAC_DISCLOOP_CONFIG_NR_TAGS_FOUND

#define PHAC_DISCLOOP_CONFIG_NR_TAGS_FOUND   0x81U

Returns the number of devices/tags found in passive poll mode.

This gives the number of devices/tags found after phacDiscLoop_Run in poll mode (PHAC_DISCLOOP_ENTRY_POINT_POLL).

§ PHAC_DISCLOOP_CONFIG_ANTI_COLL

#define PHAC_DISCLOOP_CONFIG_ANTI_COLL   0x88U

Enable/Disable anti-collision support for Type A technology (PH_ON or PH_OFF).

Default is PH_ON.

§ PHAC_DISCLOOP_CONFIG_OPE_MODE

#define PHAC_DISCLOOP_CONFIG_OPE_MODE   0x82U

Configure operation mode of discovery loop.

RD_LIB_MODE_EMVCO -> Run in EMVCO mode.
RD_LIB_MODE_NFC -> Run in NFC mode. This is the default mode.
Default is RD_LIB_MODE_NFC.

§ PHAC_DISCLOOP_CONFIG_COLLISION_PENDING

#define PHAC_DISCLOOP_CONFIG_COLLISION_PENDING   0x83U

Get collision pending status of polled technologies.

PHAC_DISCLOOP_POS_BIT_MASK_A -> Collision pending for Type A.
PHAC_DISCLOOP_POS_BIT_MASK_B -> Collision pending for Type B.
PHAC_DISCLOOP_POS_BIT_MASK_F212 -> Collision pending for FELICA @ 212 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_F424 -> Collision pending for FELICA @ 424 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_V -> Collision pending for Type V / ISO 15693.
PHAC_DISCLOOP_POS_BIT_MASK_18000P3M3 -> Collision pending for ISO 18000p3m3/ EPC Gen2.

§ PHAC_DISCLOOP_CONFIG_NEXT_POLL_STATE

#define PHAC_DISCLOOP_CONFIG_NEXT_POLL_STATE   0x84U

Set the discovery loop state to start with while in poll mode.

Refer phacDiscLoop_Sw_PollState for all supported states.
PHAC_DISCLOOP_POLL_STATE_DETECTION -> Start with detection phase.
PHAC_DISCLOOP_POLL_STATE_COLLISION_RESOLUTION -> Start with collision resolution.
PHAC_DISCLOOP_POLL_STATE_REMOVAL -> Start with card removal phase (shall be used only in EMVCo mode).
Default is PHAC_DISCLOOP_POLL_STATE_DETECTION. When phacDiscLoop_Run gives PHAC_DISCLOOP_MULTI_TECH_DETECTED in poll mode, application shall select one technology and start poll mode again in PHAC_DISCLOOP_POLL_STATE_COLLISION_RESOLUTION state.

§ PHAC_DISCLOOP_CONFIG_BAIL_OUT

#define PHAC_DISCLOOP_CONFIG_BAIL_OUT   0x86U

Set/Get the bail out option for various technologies in passive poll mode.

Default bail out is not set for any technology.
PHAC_DISCLOOP_POS_BIT_MASK_A -> Bail out for Type A.
PHAC_DISCLOOP_POS_BIT_MASK_B -> Bail out for Type B.
PHAC_DISCLOOP_POS_BIT_MASK_F212 -> Bail out for Type FELICA @ 212 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_F424 -> Bail out for Type FELICA @ 424 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_V -> Bail out for Type V / ISO 15693.
PHAC_DISCLOOP_POS_BIT_MASK_18000P3M3 -> Bail out for ISO 18000p3m3/ EPC Gen2.

§ PHAC_DISCLOOP_CONFIG_TECH_DETECTED

#define PHAC_DISCLOOP_CONFIG_TECH_DETECTED   0x87U

Returns the technologies that were detected during poll mode.

Passive technologies:
PHAC_DISCLOOP_POS_BIT_MASK_A -> Detected Type A.
PHAC_DISCLOOP_POS_BIT_MASK_B -> Detected Type B.
PHAC_DISCLOOP_POS_BIT_MASK_F212 -> Detected FELICA @ 212 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_F424 -> Detected FELICA @ 424 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_V -> Detected Type V / ISO 15693.
PHAC_DISCLOOP_POS_BIT_MASK_18000P3M3 -> Detected ISO 18000p3m3/ EPC Gen2.
Active technologies:
PHAC_DISCLOOP_ACT_POS_BIT_MASK_106 -> Detected active target @ 106 kbps.
PHAC_DISCLOOP_ACT_POS_BIT_MASK_212 -> Detected active target @ 212 kbps.
PHAC_DISCLOOP_ACT_POS_BIT_MASK_424 -> Detected active target @ 424 kbps.

§ PHAC_DISCLOOP_CONFIG_ACT_LIS_TECH_CFG

#define PHAC_DISCLOOP_CONFIG_ACT_LIS_TECH_CFG   0x89U

Configure technologies to listen for in active listen mode.

PHAC_DISCLOOP_POS_BIT_MASK_A -> Listen for Type A.
PHAC_DISCLOOP_POS_BIT_MASK_B -> Listen for Type B.[Reserved. Not supported currently]
PHAC_DISCLOOP_POS_BIT_MASK_F212 -> Listen for Type FELICA @ 212 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_F424 -> Listen for Type FELICA @ 424 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_V -> Listen for Type V / ISO 15693.[Reserved. Not supported currently]
PHAC_DISCLOOP_POS_BIT_MASK_18000P3M3 -> Listen for ISO 18000p3m3/ EPC Gen2.[Reserved. Not supported currently]

§ PHAC_DISCLOOP_CONFIG_ACT_POLL_TECH_CFG

#define PHAC_DISCLOOP_CONFIG_ACT_POLL_TECH_CFG   0x8AU

Configure technologies to be detected in passive poll mode.

PHAC_DISCLOOP_ACT_POS_BIT_MASK_106 -> Detect active target @ 106 kbps
PHAC_DISCLOOP_ACT_POS_BIT_MASK_212 -> Detect active target @ 212 kbps
PHAC_DISCLOOP_ACT_POS_BIT_MASK_424 -> Detect active target @ 424 kbps

§ PHAC_DISCLOOP_CONFIG_PAS_LIS_TECH_CFG

#define PHAC_DISCLOOP_CONFIG_PAS_LIS_TECH_CFG   0x8BU

Configure technologies to listen for in passive listen mode.

PHAC_DISCLOOP_POS_BIT_MASK_A -> Listen for Type A.
PHAC_DISCLOOP_POS_BIT_MASK_B -> Listen for Type B.[Reserved. Not supported currently]
PHAC_DISCLOOP_POS_BIT_MASK_F212 -> Listen for Type FELICA @ 212 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_F424 -> Listen for Type FELICA @ 424 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_V -> Listen for Type V / ISO 15693.[Reserved. Not supported currently]
PHAC_DISCLOOP_POS_BIT_MASK_18000P3M3 -> Listen for ISO 18000p3m3/ EPC Gen2.[Reserved. Not supported currently]

§ PHAC_DISCLOOP_CONFIG_PAS_POLL_TECH_CFG

#define PHAC_DISCLOOP_CONFIG_PAS_POLL_TECH_CFG   0x8CU

Configure technologies to be detected in passive poll mode.

PHAC_DISCLOOP_POS_BIT_MASK_A -> Detect Type A.
PHAC_DISCLOOP_POS_BIT_MASK_B -> Detect Type B.
PHAC_DISCLOOP_POS_BIT_MASK_F212 -> Detect Type FELICA @ 212 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_F424 -> Detect Type FELICA @ 424 kbps.
PHAC_DISCLOOP_POS_BIT_MASK_V -> Detect Type V / ISO 15693.
PHAC_DISCLOOP_POS_BIT_MASK_18000P3M3 -> Detect ISO 18000p3m3/ EPC Gen2.

§ PHAC_DISCLOOP_CONFIG_ACTIVITY_VERSION

#define PHAC_DISCLOOP_CONFIG_ACTIVITY_VERSION   0x8DU

Configure NFC activity version.

PHAC_DISCLOOP_NFC_ACTIVITY_VERSION_1_0 -> Run in Activity 1.0 mode.
PHAC_DISCLOOP_NFC_ACTIVITY_VERSION_1_1 -> Run in Activity 1.1 mode. This is the default.

§ PHAC_DISCLOOP_CONFIG_TARGET_RETRY_COUNT

#define PHAC_DISCLOOP_CONFIG_TARGET_RETRY_COUNT   0x90U

Configure AUTOCOLL retry count in listen mode.

How many times to retry AUTOCOLL command if it fails. Default is 0. Supported range is from 0 to 255.

Function Documentation

§ phacDiscLoop_Run()

phStatus_t phacDiscLoop_Run ( void *  pDataParams,
uint8_t  bEntryPoint 
)

Starts the discovery loop in poll mode or listen mode.

Use phacDiscLoop_SetConfig with configuration options to modify poll mode and listen mode settings of discovery loop.

Returns
Status code
Return values
PHAC_DISCLOOP_FAILUREDiscovery loop failure due to error from lower layer.
PHAC_DISCLOOP_COLLISION_PENDINGIndicates that collision is pending.
PHAC_DISCLOOP_EXTERNAL_RFONExternal RF field on.
PHAC_DISCLOOP_EXTERNAL_RFOFFExternal RF field off.
PHAC_DISCLOOP_NO_TECH_DETECTEDNo technologies detected.
PHAC_DISCLOOP_NO_DEVICE_RESOLVEDNo card/device resolved.
PHAC_DISCLOOP_LPCD_NO_TECH_DETECTEDLPCD succeeded but no technologies detected..
PHAC_DISCLOOP_MULTI_TECH_DETECTEDMultiple Technologies detected.
PHAC_DISCLOOP_MULTI_DEVICES_RESOLVEDMultiple cards/devices resolved.
PHAC_DISCLOOP_DEVICE_ACTIVATEDSingle card/device activated.
PHAC_DISCLOOP_ACTIVE_TARGET_ACTIVATEDActive target activated..
PHAC_DISCLOOP_PASSIVE_TARGET_ACTIVATEDPassive target activated.
PHAC_DISCLOOP_MERGED_SEL_RES_FOUNDMerged SAK with NFC-DEP and T4T support found.
PHAC_DISCLOOP_ACTIVATED_BY_PEERActivated in listen mode.
Parameters
[in]pDataParamsPointer to discovery loop parameter structure.
[in]bEntryPointEntry point to start discovery loop. Refer phacDiscLoop_Sw_EntryPoints for supported list of entry points.

§ phacDiscLoop_SetConfig()

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

Set discovery loop configuration value.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful.
PH_ERR_INVALID_PARAMETERInvalid option/response received.
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to discovery loop parameter structure.
[in]wConfigConfiguration identifier.
[in]wValueConfiguration value.

§ phacDiscLoop_GetConfig()

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

Get discovery loop configuration value.

Returns
Status code
Return values
PH_ERR_SUCCESSOperation successful
PH_ERR_INVALID_PARAMETERInvalid option/response received
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to discovery loop parameter structure.
[in]wConfigConfiguration identifier.
[out]pValueConfiguration value.

§ phacDiscLoop_ActivateCard()

phStatus_t phacDiscLoop_ActivateCard ( void *  pDataParams,
uint8_t  bTagType,
uint8_t  bTagIndex 
)

Activates the given tag type with given index.

Returns
Status code
Return values
PHAC_DISCLOOP_DEVICE_ACTIVATEDSingle card/device activated.
PHAC_DISCLOOP_PASSIVE_TARGET_ACTIVATEDPassive target activated.
PHAC_DISCLOOP_MERGED_SEL_RES_FOUNDMerged SAK with NFC-DEP and T4T support found.
PH_ERR_INVALID_PARAMETERIf invalid index or card type was given
OtherDepending on implementation and underlying component.
Parameters
[in]pDataParamsPointer to discovery loop parameter structure.
[in]bTagTypeTag type phacDiscLoop_Sw_NfcTech.
[in]bTagIndexThe tag index to be activated.