Amadis

GPI Performance

In order to focus on performance measurements, let’s now consider the 4 main primitives presented page GPI Antenna Management in order to understand the dynamic of a transaction:

tGPIError gpiPolling(const char* contactlessCardReaderName)

This primitive call starts the time frames measurement. It’s called only once by the entry point when L3 initiates a payment transaction using enpExecutePaymentTransaction (see entrypoint.h). At this time, the entry point performs a pre-processing (if not autorun mode set, i.e. start A) which is about 50ms. Then, gpiPolling is called and discovery processing starts at the GPI level and below. For 98% of the time related test cases, the next gpiBeep is used to stop the time frames measurements, or Led #3. This beep/led is always emitted/switched on by CL payment applications at different steps of a transaction depending on the specifications (example: after genAC for PayPass, after GPO for MSD PayWave, after Read Records for qVSDC PayWave, etc…). The Agnos rule is: as soon as the card read is completed, this “performance” beep/led is emitted.

tGPIError gpiPowerOff(const char* smartcardReaderName)

This primitive stops the time frames measurements for 1% of the time related test cases to be passed. For these cases, the field shall be switched off as early as possible. Thus, it is important to understand when gpiPowerOff is called by the entry point (C3/PayWave only):

EP Start

Comment

EP Start

Comment

Start A
Start B

After each CL payment application call, the entry point processes an outcome (as per EMVCo standard). In the case of a new Start B (i.e. a restart), gpiPowerOff will be called if a field off time is defined by the CL payment application. Then, a gpiSleep will wait before starting the subsequent gpiPolling (to reach the field off time request). That gpiPowerOff is used to stop the time frames measurements and occurs right after message displaying and signal processing following CL payment application exit. To allow a good performance, message display and signal management must be optimized. Recommendation: a good practice would be to deactivate signal emission or to detect message display identifier to power off the field earlier (from the GPI)

Start C

Power off is performed if autorun mode not set AND outcome is not “online request” AND CVM is not “online pin”. In that situation, antenna power off shall be performed by level3. That call is not part of the performance measurements

Start D

Power off is performed if autorun mode not set. That call is not part of the performance measurements

No START

Power off is performed if autorun mode not set. That call is not part of the performance measurements

tGPIError gpiResetContactless(const char* contactlessCardReaderName)

That primitive call is part of the time frames measurements for the last 1% of the time related test cases to be passed. Resetting the antenna maybe implemented in different manners depending on the platform. A specific L1 service maybe used to power off the antenna during a specific time. A power off followed by a sleep may work too.

This primitive is not is the scope of the performance measurements. But, it is important to consider it in regards to user experience especially in transportation domain. It’s always called once a card has been presented and processed with success (and always by CL payment applications, i.e. never by entry point). This call may block the flow while the card is not removed for the tap zone and a timeout has not been reached. Some systems may need to get rid of that feature to avoid late transaction system's disposition. Typically, it depends on the implementation and merchant context.