Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

DEVICE provides a wide set of primitives .

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:

  • dev_led_switch: LED #2 is switch on

Depending on the platform, these two primitives should be managed specifically if they alter the performance.

...

dev_lcd_put_string

...

DEVICE/

...

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

...

dev_sound_play_tone

...

SPED

...

Beep at a specific frequency for a specific duration (if supported by the platform)

...

dev_sound_play_sound

...

SPED

...

Generate a sound from a specific physical address

...

dev_rtc_sleep

...

SPED

...

Sleep. This function shall by implemented with care (no thread)

...

dev_led_switch

...

SPED

...

Switch ON/OFF a LED.

...

gpiClearScreen

...

SPED

...

Clear display

...

gpiGetString

...

SPED

...

Get string from the string table indexed by ID

...

Memory

...

Platform primitives are used to support the logic of the processing flow

...

dev_mem_set

...

Platform

...

Equivalent to stdlib’s memset

...

dev_mem_cmp

...

Platform

...

Equivalent to string’s memcmp

...

dev_mem_copy

...

Device Management

...

Equivalent to stdlib’s memcpy

...

RTC

...

dev_rtc_get_date

...

Device Management

...

Get system’s date. Careful with time format

...

dev_rtc_get_time

...

Device Management

...

Get system’s time. Careful with time format

...

dev_rtc_set_date

...

Device Management

...

Set system’s time. Careful with time format

...

dev_rtc_set_time

...

Device Management

...

dev_rtc_get_accurate_time_of_day

...

Device Management

...

dev_rtc_sleep

...

Device Management

...

gpiStartTimer

...

Device Management

...

gpiGetTimerTime

...

Device Management

...

gpiGetTimerState

...

Device Management

...

gpiFreeTimer

...

Device Management

...

dev_get_shared_ram_size

...

Device Management

Agnos card processing uses shared RAM (no dynamic allocation) to prevent runtime issues. Static RAM is allocated from inside the GPI.

...

dev_get_shared_ram

...

HSM

...

dev_hsn_rsa_computation

...

HSM Management

...

Standard EMV RSA computation primitive to support ODA

...

dev_hsm_sha_init

...

HSM Management

...

Standard EMV SHA computation primitive to support ODA

...

dev_hsm_sha_update

...

HSM Management

...

Standard EMV SHA computation primitive to support ODA

...

dev_hsm_sha_final

...

HSM Management

...

Standard EMV SHA computation primitive to support ODA

...

dev_hsm_get_random_number

...

HSM Management

...

dev_get_checksum

...

HSM Management

...

Provide the checksum corresponding to each L2 CT/CL kernel

...

File Management

...

dev_file_open

...

File Management

...

dev_file_close

...

File Management

...

dev_file_read

...

File Management

...

dev_file_write

...

File Management

...

dev_file_delete

...

File Management

...

dev_file_rename

...

File Management

...

dev_file_get_size

...

File Management

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.