REQA and REQB Polling

REQA and REQB Polling

The SDK uses hard-coded default settings to poll with WUPA and WUPB. It is possible to change the default values to use REQA and REQB, and it is also possible to add these parameters to the polling configuration when polling is initiated, with some modifications to a few SDK files. This article uses the OS POS SDK 7.2.0, but it also applies to the non-OS and IOT Reader SDK, with minor differences.

The default values are set in ptxNSC_EmvGetDiscParams()  in ptxNSC_Interface.c in the OS POS SDK:

Changing the default values is the simplest solution. In such case, extending the polling parameters is not necessary.

In both cases, the result on the RF-field will be the following:

Changing the defaults

Change the above highlighted pieces of code according to this:

// REQB uint8_t conPollBCmd_emv[] = {(uint8_t)0x05, (uint8_t)0x00, (uint8_t)0x00}; // REQA discoverParams->conPollACmd = 0x26u;

Extending the polling parameters

The following changes need to be added to the relevant SDK files.

In ptxPOS.h  extend ptxPOS_PollConfig_t :

/** Poll with REQA instead of WUPA. */ uint8_t EnableReqa; /** Poll with REQB instead of WUPB. */ uint8_t EnableReqb;

In ptxPOS.c  add to ptxPOS_NSCDiscover() :

if (0 != pollCfg->EnableReqb) { rf_disc_params.conPollBCmd[2] = rf_disc_params.conPollBCmd[2] & (uint8_t)(~0x08); } if (0 != pollCfg->EnableReqa) { rf_disc_params.conPollACmd = 0x26u; }

In ptx_POS_Main.c  showing the parameters as examples:

poll_config.EnableReqa = 1u; poll_config.EnableReqb = 1u;

Please note, that all changes to SDK files are unofficial an not supported. These are only examples to fulfil requirements not directly supported by the SDK.