NfcrdlibEx8_HCE_T4T example

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

NfcrdlibEx8_HCE_T4T example

564 Views
nddona
Contributor I

We have a custom Linux platform where we have successfully made the PN5190 to work as a card reader for years.

Now we want to try out to make it work as a type 4A tag as in example "NfcrdlibEx8_HCE_T4T". We have tried to use the example with the reader library version 7.14.00 but we're getting the same results as reported in the thread: https://community.nxp.com/t5/NFC/HCE-T4T-Example-not-working-with-NXP-NFC-Library-v07-08-00-in/td-p/...

When Android (Samsung S23 ultra) is tapped with NXP "TagInfo" App, it's getting an invalid RATS. Rx buffer receives data starting with 0x11 0xD4 ... etc.

[phacDiscLoop_Sw_Run] Starting Listen Mode
[T4TCardEmulation] Card Activated in Listen mode...
[phpalI14443p4mC_Sw_Activate] RATS: 11 D4 00 8C 26 82 9B FA 12 01 DF 84 5B 00 00 00 30
[phpalI14443p4mC_Sw_Activate] Invalid RATS received...

 

Is it because the phone is trying to talk in NFC-DEP (P2P Mode / SNEP)

Appreciate any help to resolve this issue.

Thanks!

0 Kudos
Reply
4 Replies

256 Views
nddona
Contributor I

Hi,

I have further question related to this topic.

Even though I got our device to work as a type 4 card emulator with "NfcrdlibEx8_HCE_T4T" example, it seems very slow. The application steps are as below.

1. Device runs in the reader (polling) mode

2. A phone is tapped and it reads a card in mobile wallet

3. Immediately turns off RF after reading finishes

4. Re-initialize the RF chip in HCE type 4 card emulator mode (passive listener mode)

5. Sends a URL (NDEF) to the smart phone

The issue is it takes about 1500ms to re-init the RF chip in card emulator mode and send the URL to smartphone.

Is there a faster way to do this, so that user doesn't have to keep the phone holding/tapping ?

When I searched on Google it says that it can be done via type 2 tag as below. But it didn't work. Nothing was received by the phone.



Step 1: Terminate Field 
│ (~1ms)

Step 2: Load NDEF Data 
│ (~3ms)


Step 3: Go Autocoll 

Appreciate if you can guide me on how exactly I can achieve this fast mode switching and a URL is sent to a phone within 500ms.

Thanks!

0 Kudos
Reply

243 Views
nddona
Contributor I

In related to my question above, the code I tried to implement after terminating the field as given below. I can get phhalHw_Autocoll() to return success but I get 0x020A for phhalHw_Pn5190_Instr_ExchangeRFData(). 

phhalHw_Pn5190_Autocoll() is also updated with the below.

phhalHw_Pn5190_Instr_SwitchModeAutocoll(pDataParams,bRfTechnology,PHHAL_HW_PN5190_AUTOCOLL_MODE_AUTONOMOUS_WITH_STANDBY))

 

int card_emulator_main_cutdown(void)

{

    do

    {

        int               ret;

        phStatus_t        status;

        pHal_Hce = phNfcLib_GetDataParams(PH_COMP_HAL);

        TRACE0("NfcLib data params pointers set successfully");

 

        /* ================================================================= */

        /*   STEP 3: STAGE EMULATION PROFILE AND LOAD URL PAYLOAD        */

        /* ================================================================= */

        TRACE0("Configuring hardware target layers and loading URL buffer...");

       

        /* Configure target mode HAL parameters */

        status = phAppHce_HALConfigAutoColl();

        CHECK_STATUS(status);

        if (status != PH_ERR_SUCCESS) {

            TRACE1("phhalHw_TargetInit failed: 0x%04X", status);

            return status;

        }

        /* ================================================================= */

        /*   STEP 4: ENGAGE AUTOCOLL (Autonomous Listening State)         */

        /* ================================================================= */

        TRACE0("Entering sub-100ms Autonomous Listen mode...");

       

        // CRITICAL FIX: Allocate valid storage memory to prevent PH_ASSERT_NULL crashes

        uint8_t * pRxBufferPtr = NULL;

        uint16_t  wRxLengthData = 0;

        uint16_t  wProtocolParams = 0;

        // Execute the function mapping strictly to your HAL's parameter footprint.

        // We pass 'A_MODE' to tell the switch code to select Passive NFC-A Technology.

        status = phhalHw_Autocoll(

            pHal_Hce,

            A_MODE,             // Bitmask flag forcing NFC-A technology profiling

            &pRxBufferPtr,      // Passed as a valid pointer reference to a pointer

            &wRxLengthData,     // Passed as a valid pointer reference to length

            &wProtocolParams    // Passed as a valid pointer reference to parameters

        );

        if ((status & PH_ERR_MASK) == PH_ERR_SUCCESS) {

            TRACE0(" Tap-to-URL switch executed perfectly! Phone hit the antenna field.");

            TRACE1("De-wrapped Activation Protocol Parameters: 0x%04X", wProtocolParams);

            /* ================================================================= */

            /*   STEP 5: PROCESS INCOMING APDU COMMANDS FROM THE PHONE         */

            /* ================================================================= */

            TRACE0("Listening for phone file system read commands...");

           

            // Allocate data exchange buffers

            uint8_t * pDataIn = NULL;

            uint16_t  wDataInLen = 0;

            // Retrieve the initial data packet the phone transmitted right upon activation

            // Your Autocoll snippet already stores the address in pRxBufferPtr / wRxLengthData

            pDataIn = pRxBufferPtr;

            wDataInLen = wRxLengthData;

            // Enter a rapid loop to process the phone's Read commands

            // The phone will send "Select NDEF Application" -> "Select NDEF File" -> "Read Binary"

            //while (1)

            {

                //Use the correct Target Emulation transmit function to bypass the 0x0225 check

                //PH_RECEIVE_RF_ENABLE_EVT_STATUS enables event tracking for the transfer

                status = phhalHw_Pn5190_Instr_ExchangeRFData(

                    pHal_Hce,

                    PH_EXCHANGE_DEFAULT,                  // wOption

                    0,                                    // bTxLastBits (0 indicates complete 8-bit byte layout)

                    0x05,                                 // bRespControl: Bitmask 0x04 (Event Status) | 0x01 (Rx Status)

                    aNdefFile,                            // Your URL array structure

                    23,                                   // Size of your URL data payload

                    &pRxBufferPtr,                          // Address of your response data pointer

                    &wRxLengthData                        // Address of your incoming length tracker

                );

           

                if (status == PH_ERR_SUCCESS) {

                    TRACE0(" Single-shot URL packet injected successfully. Task complete!");

                } else {

                    TRACE1("Injection status / timeout: 0x%04X (Phone likely disconnected cleanly)", status);

                }

            }

        } else {

            TRACE1("Autocoll exited, timed out, or dropped with status: 0x%04X", status);

        }

    } while(0);

    return 0;

}

 

// /* Mandatory NDEF file. It's set using phceT4T_SetElementaryFile. */

uint8_t aNdefFile[] = {

    /* --- MANDATORY CONTACTLESS TRANSPORT HEADER --- */

    //0x02,       // 1. PCB Byte: Configures this frame as a Part 4 I-Block (Block Number 0)

    0x00, 0x13, // 1. T4T Container Length Indicator (19 bytes total payload)

    0xD1,       // 2. NDEF Record Header (MB=1, ME=1, SR=1, TNF=0x01 Well-Known Type)

    0x01,       // 3. Type Length (1 byte long name)

    0x0F,       // 4. Payload Length (15 bytes for prefix + string)

    0x55,       // 5. Record Type: 'U' (0x55 for URI record)

    0x02,       // 6. URI Identifier Prefix: Code 0x02 maps to "https://www."

   

    // 7. URI Payload String of 14bytes

    0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww, 0xww,

     /* --- MANDATORY SMART CARD STATUS TRAILER --- */

    0x90, 0x00  // 21-22. APDU Success Status (tells Android the data read is complete)

};

Log output:

06-16 17:34:31.600 26047 27687 E nfc : [card_emulator_main_cutdown] NfcLib data params pointers set successfully

06-16 17:34:31.600 26047 27687 E nfc : [card_emulator_main_cutdown] Configuring hardware target layers and loading URL buffer...

06-16 17:34:31.605 26047 27687 E nfc : [card_emulator_main_cutdown] Entering sub-100ms Autonomous Listen mode...

06-16 17:34:31.607 26047 27999 V nfc : [socket_send_thread] Entered socketSend

06-16 17:34:31.607 26047 27999 V nfc :

06-16 17:34:32.456 26047 27687 E nfc : [card_emulator_main_cutdown] Tap-to-URL switch executed perfectly! Phone hit the antenna field.

06-16 17:34:32.456 26047 27687 W nfc : [card_emulator_main_cutdown] De-wrapped Activation Protocol Parameters: 0x0100

06-16 17:34:32.456 26047 27687 E nfc : [card_emulator_main_cutdown] Listening for phone file system read commands...

06-16 17:34:32.456 26047 27687 W nfc : [card_emulator_main_cutdown] Injection status / timeout: 0x020A (Phone likely disconnected cleanly)

 

 

0 Kudos
Reply

510 Views
nddona
Contributor I
This issue is solved by disabling some macros and updating the SAK to correct value 0x20.
0 Kudos
Reply

459 Views
Fabian_R
NXP TechSupport
NXP TechSupport

Hello sir,

Thank you for letting me know. I will address this for the respective clarifications and updates.

Have a great day!

Best Regards,
Fabian
0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2372202%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ENfcrdlibEx8_HCE_T4T%20example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2372202%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3EWe%20have%20a%20custom%20Linux%20platform%20where%20we%20have%20successfully%26nbsp%3Bmade%20the%20PN5190%20to%20work%20as%20a%20card%20reader%20for%20years.%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ENow%20we%20want%20to%20try%20out%20to%20make%20it%20work%20as%20a%20type%204A%20tag%20as%20in%20example%20%22NfcrdlibEx8_HCE_T4T%22.%20We%20have%20tried%20to%20use%20the%20example%20with%20the%20reader%20library%20version%207.14.00%20but%20we're%20getting%20the%20same%20results%20as%20reported%20in%20the%20thread%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNFC%2FHCE-T4T-Example-not-working-with-NXP-NFC-Library-v07-08-00-in%2Ftd-p%2F1686764%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.nxp.com%2Ft5%2FNFC%2FHCE-T4T-Example-not-working-with-NXP-NFC-Library-v07-08-00-in%2Ftd-p%2F1686764%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EWhen%20Android%20(Samsung%20S23%20ultra)%20is%20tapped%20with%20NXP%20%22TagInfo%22%20App%2C%20it's%20getting%20an%20invalid%20RATS.%20Rx%20buffer%20receives%20data%20starting%20with%200x11%200xD4%20...%20etc.%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%5BphacDiscLoop_Sw_Run%5D%20Starting%20Listen%20Mode%3CBR%20%2F%3E%5BT4TCardEmulation%5D%20Card%20Activated%20in%20Listen%20mode...%3CBR%20%2F%3E%5BphpalI14443p4mC_Sw_Activate%5D%20RATS%3A%2011%20D4%2000%208C%2026%2082%209B%20FA%2012%2001%20DF%2084%205B%2000%2000%2000%2030%3CBR%20%2F%3E%5BphpalI14443p4mC_Sw_Activate%5D%20Invalid%20RATS%20received...%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3EIs%20it%20because%20the%20phone%20is%20trying%26nbsp%3Bto%20talk%20in%26nbsp%3B%3CSTRONG%3ENFC-DEP%20(P2P%20Mode%20%2F%20SNEP)%3C%2FSTRONG%3E%3F%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EAppreciate%20any%20help%20to%20resolve%20this%20issue.%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EThanks!%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2372819%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20NfcrdlibEx8_HCE_T4T%20example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2372819%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EThis%20issue%20is%20solved%20by%20disabling%20some%20macros%20and%20updating%20the%20SAK%20to%20correct%20value%200x20.%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2374562%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20NfcrdlibEx8_HCE_T4T%20example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2374562%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%20sir%2C%3C%2FP%3E%0A%3CP%3EThank%20you%20for%20letting%20me%20know.%20I%20will%20address%20this%20for%20the%20respective%20clarifications%20and%20updates.%3C%2FP%3E%0A%3CP%3EHave%20a%20great%20day!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2381683%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20NfcrdlibEx8_HCE_T4T%20example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2381683%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EIn%20related%20to%20my%20question%20above%2C%20the%20code%20I%20tried%20to%20implement%20after%20terminating%20the%20field%20as%20given%20below.%20I%20can%20get%26nbsp%3BphhalHw_Autocoll()%20to%20return%20success%20but%20I%20get%200x020A%20for%26nbsp%3BphhalHw_Pn5190_Instr_ExchangeRFData().%26nbsp%3B%3C%2FP%3E%3CP%3EphhalHw_Pn5190_Autocoll()%20is%20also%20updated%20with%20the%20below.%3C%2FP%3E%3CP%3E%3CSPAN%3EphhalHw_Pn5190_Instr_SwitchModeAutocoll%3C%2FSPAN%3E%3CSPAN%3E(pDataParams%2CbRfTechnology%2C%3CFONT%20color%3D%22%230000FF%22%3E%3CSTRONG%3EPHHAL_HW_PN5190_AUTOCOLL_MODE_AUTONOMOUS_WITH_STANDBY%3C%2FSTRONG%3E%3C%2FFONT%3E))%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3Eint%20card_emulator_main_cutdown(void)%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20do%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20int%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20ret%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20phStatus_t%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3Bstatus%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20pHal_Hce%20%3D%20phNfcLib_GetDataParams(PH_COMP_HAL)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE0(%22NfcLib%20data%20params%20pointers%20set%20successfully%22)%3B%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_backhand-index-pointing-right%22%20title%3D%22%3Abackhand_index_pointing_right%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20STEP%203%3A%20STAGE%20EMULATION%20PROFILE%20AND%20LOAD%20URL%20PAYLOAD%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE0(%22Configuring%20hardware%20target%20layers%20and%20loading%20URL%20buffer...%22)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20Configure%20target%20mode%20HAL%20parameters%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20status%20%3D%20phAppHce_HALConfigAutoColl()%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20CHECK_STATUS(status)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20if%20(status%20!%3D%20PH_ERR_SUCCESS)%20%7B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE1(%22phhalHw_TargetInit%20failed%3A%200x%2504X%22%2C%20status)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20return%20status%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_backhand-index-pointing-right%22%20title%3D%22%3Abackhand_index_pointing_right%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20STEP%204%3A%20ENGAGE%20AUTOCOLL%20(Autonomous%20Listening%20State)%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE0(%22Entering%20sub-100ms%20Autonomous%20Listen%20mode...%22)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20CRITICAL%20FIX%3A%20Allocate%20valid%20storage%20memory%20to%20prevent%20PH_ASSERT_NULL%20crashes%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20uint8_t%20*%20pRxBufferPtr%20%3D%20NULL%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20uint16_t%20%26nbsp%3BwRxLengthData%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20uint16_t%20%26nbsp%3BwProtocolParams%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Execute%20the%20function%20mapping%20strictly%20to%20your%20HAL's%20parameter%20footprint.%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20We%20pass%20'A_MODE'%20to%20tell%20the%20switch%20code%20to%20select%20Passive%20NFC-A%20Technology.%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20status%20%3D%20phhalHw_Autocoll(%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20pHal_Hce%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20A_MODE%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Bitmask%20flag%20forcing%20NFC-A%20technology%20profiling%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26amp%3BpRxBufferPtr%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F%2F%20Passed%20as%20a%20valid%20pointer%20reference%20to%20a%20pointer%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26amp%3BwRxLengthData%2C%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Passed%20as%20a%20valid%20pointer%20reference%20to%20length%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26amp%3BwProtocolParams%20%26nbsp%3B%20%26nbsp%3B%2F%2F%20Passed%20as%20a%20valid%20pointer%20reference%20to%20parameters%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20if%20((status%20%26amp%3B%20PH_ERR_MASK)%20%3D%3D%20PH_ERR_SUCCESS)%20%7B%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE0(%22%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_rocket%22%20title%3D%22%3Arocket%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20Tap-to-URL%20switch%20executed%20perfectly!%20Phone%20hit%20the%20antenna%20field.%22)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE1(%22De-wrapped%20Activation%20Protocol%20Parameters%3A%200x%2504X%22%2C%20wProtocolParams)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_backhand-index-pointing-right%22%20title%3D%22%3Abackhand_index_pointing_right%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20STEP%205%3A%20PROCESS%20INCOMING%20APDU%20COMMANDS%20FROM%20THE%20PHONE%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE0(%22Listening%20for%20phone%20file%20system%20read%20commands...%22)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Allocate%20data%20exchange%20buffers%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20uint8_t%20*%20pDataIn%20%3D%20NULL%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20uint16_t%20%26nbsp%3BwDataInLen%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Retrieve%20the%20initial%20data%20packet%20the%20phone%20transmitted%20right%20upon%20activation%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Your%20Autocoll%20snippet%20already%20stores%20the%20address%20in%20pRxBufferPtr%20%2F%20wRxLengthData%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20pDataIn%20%3D%20pRxBufferPtr%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20wDataInLen%20%3D%20wRxLengthData%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Enter%20a%20rapid%20loop%20to%20process%20the%20phone's%20Read%20commands%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20The%20phone%20will%20send%20%22Select%20NDEF%20Application%22%20-%26gt%3B%20%22Select%20NDEF%20File%22%20-%26gt%3B%20%22Read%20Binary%22%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2Fwhile%20(1)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2FUse%20the%20correct%20Target%20Emulation%20transmit%20function%20to%20bypass%20the%200x0225%20check%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2FPH_RECEIVE_RF_ENABLE_EVT_STATUS%20enables%20event%20tracking%20for%20the%20transfer%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20status%20%3D%20phhalHw_Pn5190_Instr_ExchangeRFData(%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20pHal_Hce%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20PH_EXCHANGE_DEFAULT%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F%2F%20wOption%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%200%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F%2F%20bTxLastBits%20(0%20indicates%20complete%208-bit%20byte%20layout)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%200x05%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20bRespControl%3A%20Bitmask%200x04%20(Event%20Status)%20%7C%200x01%20(Rx%20Status)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20aNdefFile%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F%2F%20Your%20URL%20array%20structure%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2023%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%20Size%20of%20your%20URL%20data%20payload%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26amp%3BpRxBufferPtr%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F%2F%20Address%20of%20your%20response%20data%20pointer%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26amp%3BwRxLengthData%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F%2F%20Address%20of%20your%20incoming%20length%20tracker%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20if%20(status%20%3D%3D%20PH_ERR_SUCCESS)%20%7B%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE0(%22%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_party-popper%22%20title%3D%22%3Aparty_popper%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20Single-shot%20URL%20packet%20injected%20successfully.%20Task%20complete!%22)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%20else%20%7B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE1(%22Injection%20status%20%2F%20timeout%3A%200x%2504X%20(Phone%20likely%20disconnected%20cleanly)%22%2C%20status)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%20else%20%7B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20TRACE1(%22Autocoll%20exited%2C%20timed%20out%2C%20or%20dropped%20with%20status%3A%200x%2504X%22%2C%20status)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%7D%20while(0)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20return%200%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F%2F%20%2F*%20Mandatory%20NDEF%20file.%20It's%20set%20using%20phceT4T_SetElementaryFile.%20*%2F%3C%2FP%3E%3CP%3Euint8_t%20aNdefFile%5B%5D%20%3D%20%7B%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20---%20%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_backhand-index-pointing-right%22%20title%3D%22%3Abackhand_index_pointing_right%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20MANDATORY%20CONTACTLESS%20TRANSPORT%20HEADER%20---%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F%2F0x02%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%201.%20PCB%20Byte%3A%20Configures%20this%20frame%20as%20a%20Part%204%20I-Block%20(Block%20Number%200)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200x00%2C%200x13%2C%20%2F%2F%201.%20T4T%20Container%20Length%20Indicator%20(19%20bytes%20total%20payload)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200xD1%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%202.%20NDEF%20Record%20Header%20(MB%3D1%2C%20ME%3D1%2C%20SR%3D1%2C%20TNF%3D0x01%20Well-Known%20Type)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200x01%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%203.%20Type%20Length%20(1%20byte%20long%20name)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200x0F%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%204.%20Payload%20Length%20(15%20bytes%20for%20prefix%20%2B%20string)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200x55%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%205.%20Record%20Type%3A%20'U'%20(0x55%20for%20URI%20record)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200x02%2C%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F%2F%206.%20URI%20Identifier%20Prefix%3A%20Code%200x02%20maps%20to%20%22%3CA%20href%3D%22https%3A%2F%2Fwww.%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Ehttps%3A%2F%2Fwww.%3C%2FA%3E%22%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F%2F%207.%20URI%20Payload%20String%20of%2014bytes%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200xww%2C%200xww%2C%200xww%2C%200xww%2C%200xww%2C%200xww%2C%26nbsp%3B0xww%2C%200xww%2C%200xww%2C%200xww%2C%200xww%2C%200xww%2C%200xww%2C%200xww%2C%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F*%20---%20%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_backhand-index-pointing-right%22%20title%3D%22%3Abackhand_index_pointing_right%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20MANDATORY%20SMART%20CARD%20STATUS%20TRAILER%20---%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%200x90%2C%200x00%20%26nbsp%3B%2F%2F%2021-22.%20APDU%20Success%20Status%20(tells%20Android%20the%20data%20read%20is%20complete)%3C%2FP%3E%3CP%3E%7D%3B%3C%2FP%3E%3CP%3ELog%20output%3A%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A31.600%2026047%2027687%20E%20nfc%20%3A%20%5Bcard_emulator_main_cutdown%5D%20NfcLib%20data%20params%20pointers%20set%20successfully%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A31.600%2026047%2027687%20E%20nfc%20%3A%20%5Bcard_emulator_main_cutdown%5D%20Configuring%20hardware%20target%20layers%20and%20loading%20URL%20buffer...%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A31.605%2026047%2027687%20E%20nfc%20%3A%20%5Bcard_emulator_main_cutdown%5D%20Entering%20sub-100ms%20Autonomous%20Listen%20mode...%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A31.607%2026047%2027999%20V%20nfc%20%3A%20%5Bsocket_send_thread%5D%20Entered%20socketSend%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A31.607%2026047%2027999%20V%20nfc%20%3A%3C%2FP%3E%3CP%3E%3CSPAN%3E06-16%2017%3A34%3A32.456%2026047%2027687%20E%20nfc%20%3A%20%5Bcard_emulator_main_cutdown%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3CLI-EMOJI%20id%3D%22lia_rocket%22%20title%3D%22%3Arocket%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FSPAN%3E%3CSPAN%3E%20Tap-to-URL%20switch%20executed%20perfectly!%20Phone%20hit%20the%20antenna%20field.%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A32.456%2026047%2027687%20W%20nfc%20%3A%20%5Bcard_emulator_main_cutdown%5D%20De-wrapped%20Activation%20Protocol%20Parameters%3A%200x0100%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A32.456%2026047%2027687%20E%20nfc%20%3A%20%5Bcard_emulator_main_cutdown%5D%20Listening%20for%20phone%20file%20system%20read%20commands...%3C%2FP%3E%3CP%3E06-16%2017%3A34%3A32.456%2026047%2027687%20W%20nfc%20%3A%20%5Bcard_emulator_main_cutdown%5D%20Injection%20status%20%2F%20timeout%3A%200x020A%20(Phone%20likely%20disconnected%20cleanly)%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2381614%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20NfcrdlibEx8_HCE_T4T%20example%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2381614%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3EI%20have%20further%20question%20related%20to%20this%20topic.%3C%2FP%3E%3CP%3EEven%20though%20I%20got%20our%20device%20to%20work%20as%20a%20type%204%20card%20emulator%20with%20%22%3CSPAN%3ENfcrdlibEx8_HCE_T4T%22%20example%2C%20it%20seems%20very%20slow.%20The%20application%20steps%20are%20as%20below.%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E1.%20Device%20runs%20in%20the%20reader%20(polling)%20mode%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E2.%20A%20phone%20is%20tapped%20and%20it%20reads%20a%20card%20in%20mobile%20wallet%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E3.%20Immediately%20turns%20off%20RF%20after%20reading%20finishes%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E4.%20Re-initialize%20the%20RF%20chip%20in%20HCE%20type%204%20card%20emulator%20mode%20(passive%20listener%20mode)%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E5.%20Sends%20a%20URL%20(NDEF)%20to%20the%20smart%20phone%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EThe%20issue%20is%20it%20takes%20about%201500ms%20to%20re-init%20the%20RF%20chip%20in%20card%20emulator%20mode%20and%20send%20the%20URL%20to%20smartphone.%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EIs%20there%20a%20faster%20way%20to%20do%20this%2C%20so%20that%20user%20doesn't%20have%20to%20keep%20the%20phone%20holding%2Ftapping%20%3F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EWhen%20I%20searched%20on%20Google%20it%20says%20that%20it%20can%20be%20done%20via%20type%202%20tag%20as%20below.%20But%20it%20didn't%20work.%20Nothing%20was%20received%20by%20the%20phone.%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E2%94%82%3CBR%20%2F%3E%E2%96%BC%3CBR%20%2F%3EStep%201%3A%20Terminate%20Field%26nbsp%3B%3CBR%20%2F%3E%E2%94%82%20(~1ms)%3CBR%20%2F%3E%E2%96%BC%3CBR%20%2F%3EStep%202%3A%20Load%20NDEF%20Data%26nbsp%3B%3CBR%20%2F%3E%E2%94%82%20(~3ms)%3CBR%20%2F%3E%E2%96%BC%3CBR%20%2F%3E%3CBR%20%2F%3EStep%203%3A%20Go%20Autocoll%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EAppreciate%20if%20you%20can%20guide%20me%20on%20how%20exactly%20I%20can%20achieve%20this%20fast%20mode%20switching%20and%20a%20URL%20is%20sent%20to%20a%20phone%20within%20500ms.%3C%2FP%3E%3CP%3EThanks!%3C%2FP%3E%3C%2FLINGO-BODY%3E