GPI DEVICE provides a wide set of primitives . Some of them have to be integrated from the payment application. Other are used by card processing logic implemented in L2 components (EMV core engine and L2 CL kernels).
Table of Contents |
---|
Primitives
Miscellaneous
...
Primitives
...
Module
...
Comments
...
User Interface
UI primitives are limited to a few set of functions. EMV processing doesn’t require sophisticated displays. However, a minimum set of functions is required to provide a feedback to the cardholder and the merchants. Most of them are not used during transaction flow excepted:
gpiSwitchLED: LED #2 is switch on
gpiDisplayMessageByID: PROCESSING identifier
Depending on the platform, these two primitives should be managed specifically if they alter the performance.
...
gpiDisplayMessage
...
SPED
...
Display any string
...
gpiDisplayMessageByID
...
SPED
...
Display a string from the string table indexed by ID
...
gpiSetPollingMessage
...
SPED
...
Set the message to be display at AgnosEP’s polling time
...
gpiDisplayPollingMessage
...
SPED
...
Display the message - at AgnosEP’s polling time - that has been set from gpiSetPollingMessage
...
gpiBeep
...
SPED
...
Beep at a specific frequency for a specific duration (if supported by the platform)
...
gpiSound
...
SPED
...
Generate a sound from a specific physical address
...
gpiSleep
...
SPED
...
Sleep. This function shall by implemented with care (no thread)
...
gpiSwitchLED
...
SPED
...
Switch ON/OFF a LED
...
gpiClearScreen
...
SPED
...
Clear display
...
gpiGetString
...
SPED
...
Get string from the string table indexed by ID
...
Platform
...
Platform primitives are used to support the logic of the processing flow
...
gpiMemSet
...
Platform
...
Equivalent to stdlib’s memset
...
gpiStrLen
...
Platform
...
Equivalent to string’s memset
...
gpiMemCpy
...
Platform
...
Equivalent to stdlib’s memcpy
...
gpiGetDate
...
Platform
...
Get system’s date. Careful with time format
...
gpiGetTimer
...
Platform
...
Get system’s time. Careful with time format
...
gpiSetDateTime
...
Platform
...
Set system’s time. Careful with time format
...
gpiStartTimer
...
Platform
...
gpiGetTimerTime
...
Platform
...
gpiGetTimerState
...
Platform
...
gpiFreeTimer
...
Platform
...
gpiGetTotalRAM
...
Platform
...
Agnos card processing uses shared RAM (no dynamic allocation) no prevent runtime issues. Static RAM is allocated from inside the GPI. This primitive returns a pointer on the toal RAM available. Similar primitives exclusively used by Agnos framework:
gpiGetRAMForTags
gpiGetRAMForUnknownTags
gpiGetFreeRAM
gpiGetPrivateScratchPAD
...
HSM
...
gpiRsaComputation
...
HSM
...
Standard EMV RSA computation primitive to support ODA
...
gpiShaInit
...
HSM
...
Standard EMV SHA computation primitive to support ODA
...
gpiShaUpdate
...
HSM
...
Standard EMV SHA computation primitive to support ODA
...
gpiShaFinal
...
HSM
...
Standard EMV SHA computation primitive to support ODA
...
gpiRandomNumber
...
HSM
...
gpiGetCheckSum
...
HSM
...
Provide the checksum corresponding to each L2 CT/CL kernel
...
gpiGetEMVCertificate
...
HSM
...
gpiGetEMVCRL
...
HSM
Initialization
...
Primitives
...
Module
...
Comment
...
Initialization
...
gpiMain
...
Platform
...
GPI specific
...
gpiInitialize
...
Platform
...
Platform specific. Enable any initialization related to the plaftorm
...
gpiInitPolling
...
CAD
...
Platform specific. Enable any initialization realted to the contactless reader
...
gpiInitializeHSM
...
HSM
...
Platform specific. Enable any initialization related to the platform’s crypto
Card Processing
...
Primitives
...
Module
...
Comment
...
Card Interfaces
...
gpiSetTechnoToDetect
...
CAD
...
Set the type of technologies to be detected during a polling:
Technologies to detect are in:
TECHNO_CL_ANY
TECHNO_CL_TYPE_EMV
TECHNO_MANUAL
TECHNO_CONTACT
TECHNO_MAGSTRIPE
...
gpiTechnoPolling
...
CAD
...
Perform a polling on technologies previously set.
gpiError are in:
clcEMV_CARD
scrCARD_INSERTED
msrCARD_SWIPED
keyNO_ERROR
clcOTHER_CARD
...
gpiPowerOn
...
CAD
...
gpiPolling
...
CAD
...
Poll for a contactless card. Its implementation depends on the platform. It leverages on L1 API to detect a card, to detect a collision, and to activate a card.
gpiError are in:
clcNO_ERROR
clcEMV_CARD
clc_COLLISION
polTIMEOUT
scrINTERRUPTED
scrCARD_INSERTED
msrCARD_SWIPED
clcOTHER_CARd
scrSYSTEM_ERROR
...
gpiExchangeAPDU
...
CAD
...
Send / Receive an APDU Command / Response
...
gpiGetLastExchangedAPDU
...
CAD
...
Provide last APDU command/response
...
gpiRemovalProcedure
...
CAD
...
As per EMVCo standard
...
gpiCardSwiped
...
CAD
...
If a card is swiped, return msrCARD_SWIPED
...
gpiCardInsterted
...
CAD
...
If a card is inserted, retunr scrCARD_INSERTED
...
gpiReadMagstripe
...
CAD
...
Provide all card’s tracks after a swipe
...
gpiPowerOff
...
CAD
...
gpiPowerOffAllDevices
...
CAD
...
Swirch off all devices
...
gpiResetContactless
...
CAD
...
Reset antenna
...
gpiSetContactlessTransactionInProgress
...
CAD
...
Indicates that a contactless transaction is in progress
...
gpiSetContactTransactionInProgress
...
CAD
...
Indicates that a contact transaction is in progress
...
gpiSetSwipeTransactionInProgress
...
CAD
...
Indicates that a swipe transaction is in progress
...
IsSetContactlessTransactionInProgress
...
CAD
...
IsSetContactTransactionInProgress
...
CAD
...
IsSwipeTransactionInProgress
...
CAD
PIN Management
...
Primitives
...
Module
...
Comment
...
PIN Management
...
gpiPINEnter
...
that will be integrated depending on available platform’s services. This is the Hardware Abstraction Level (HAL) for Agnos Framework.
Please refer to dev.h, and functionset.txt to implement the platform integration.