RTEMS 6.1-rc5
Loading...
Searching...
No Matches
Macros | Typedefs | Enumerations | Enumerator
Smartcard_emvsim_driver

Macros

#define SMARTCARD_EMV_RX_NACK_THRESHOLD   (5u)
 EMV RX NACK interrupt generation threshold.
 
#define SMARTCARD_EMV_TX_NACK_THRESHOLD   (5u)
 EMV TX NACK interrupt generation threshold.
 
#define SMARTCARD_WWT_ADJUSTMENT   (160u)
 Smart card Word Wait Timer adjustment value.
 
#define SMARTCARD_CWT_ADJUSTMENT   (3u)
 Smart card Character Wait Timer adjustment value.
 

Typedefs

typedef enum _emvsim_gpc_clock_select emvsim_gpc_clock_select_t
 General Purpose Counter clock selections.
 
typedef enum _presence_detect_edge emvsim_presence_detect_edge_t
 EMVSIM card presence detection edge control.
 
typedef enum _presence_detect_status emvsim_presence_detect_status_t
 EMVSIM card presence detection status.
 

Enumerations

enum  _emvsim_gpc_clock_select { kEMVSIM_GPCClockDisable = 0u , kEMVSIM_GPCCardClock = 1u , kEMVSIM_GPCRxClock = 2u , kEMVSIM_GPCTxClock = 3u }
 General Purpose Counter clock selections. More...
 
enum  _presence_detect_edge { kEMVSIM_DetectOnFallingEdge = 0u , kEMVSIM_DetectOnRisingEdge = 1u }
 EMVSIM card presence detection edge control. More...
 
enum  _presence_detect_status { kEMVSIM_DetectPinIsLow = 0u , kEMVSIM_DetectPinIsHigh = 1u }
 EMVSIM card presence detection status. More...
 

Smart card EMVSIM Driver

void SMARTCARD_EMVSIM_GetDefaultConfig (smartcard_card_params_t *cardParams)
 Fills in the smartcard_card_params structure with default values according to the EMV 4.3 specification.
 
status_t SMARTCARD_EMVSIM_Init (EMVSIM_Type *base, smartcard_context_t *context, uint32_t srcClock_Hz)
 Initializes an EMVSIM peripheral for the Smart card/ISO-7816 operation.
 
void SMARTCARD_EMVSIM_Deinit (EMVSIM_Type *base)
 This function disables the EMVSIM interrupts, disables the transmitter and receiver, flushes the FIFOs, and gates EMVSIM clock in SIM.
 
int32_t SMARTCARD_EMVSIM_GetTransferRemainingBytes (EMVSIM_Type *base, smartcard_context_t *context)
 Returns whether the previous EMVSIM transfer has finished.
 
status_t SMARTCARD_EMVSIM_AbortTransfer (EMVSIM_Type *base, smartcard_context_t *context)
 Terminates an asynchronous EMVSIM transfer early.
 
status_t SMARTCARD_EMVSIM_TransferNonBlocking (EMVSIM_Type *base, smartcard_context_t *context, smartcard_xfer_t *xfer)
 Transfer data using interrupts.
 
status_t SMARTCARD_EMVSIM_Control (EMVSIM_Type *base, smartcard_context_t *context, smartcard_control_t control, uint32_t param)
 Controls the EMVSIM module per different user request.
 
void SMARTCARD_EMVSIM_IRQHandler (EMVSIM_Type *base, smartcard_context_t *context)
 Handles EMVSIM module interrupts.
 

Detailed Description

Enumeration Type Documentation

◆ _emvsim_gpc_clock_select

General Purpose Counter clock selections.

Enumerator
kEMVSIM_GPCClockDisable 

Disabled

kEMVSIM_GPCCardClock 

Card clock

kEMVSIM_GPCRxClock 

Receive clock

kEMVSIM_GPCTxClock 

Transmit ETU clock

◆ _presence_detect_edge

EMVSIM card presence detection edge control.

Enumerator
kEMVSIM_DetectOnFallingEdge 

Presence detected on the falling edge

kEMVSIM_DetectOnRisingEdge 

Presence detected on the rising edge

◆ _presence_detect_status

EMVSIM card presence detection status.

Enumerator
kEMVSIM_DetectPinIsLow 

Presence detected pin is logic low

kEMVSIM_DetectPinIsHigh 

Presence detected pin is logic high

Function Documentation

◆ SMARTCARD_EMVSIM_AbortTransfer()

status_t SMARTCARD_EMVSIM_AbortTransfer ( EMVSIM_Type base,
smartcard_context_t context 
)

Terminates an asynchronous EMVSIM transfer early.

During an async EMVSIM transfer, the user can terminate the transfer early if the transfer is still in progress.

Parameters
baseThe EMVSIM peripheral address.
contextA pointer to a smart card driver context structure.
Return values
kStatus_SMARTCARD_SuccessThe transmit abort was successful.
kStatus_SMARTCARD_NoTransmitInProgressNo transmission is currently in progress.

brief Terminates an asynchronous EMVSIM transfer early.

During an async EMVSIM transfer, the user can terminate the transfer early if the transfer is still in progress.

param base The EMVSIM peripheral address. param context A pointer to a smart card driver context structure. retval kStatus_SMARTCARD_Success The transmit abort was successful. retval kStatus_SMARTCARD_NoTransmitInProgress No transmission is currently in progress.

◆ SMARTCARD_EMVSIM_Control()

status_t SMARTCARD_EMVSIM_Control ( EMVSIM_Type base,
smartcard_context_t context,
smartcard_control_t  control,
uint32_t  param 
)

Controls the EMVSIM module per different user request.

Parameters
baseThe EMVSIM peripheral base address.
contextA pointer to a smart card driver context structure.
controlControl type.
paramInteger value of specific to control command.

return kStatus_SMARTCARD_Success in success. return kStatus_SMARTCARD_OtherError in case of error.

brief Controls the EMVSIM module per different user request.

param base The EMVSIM peripheral base address. param context A pointer to a smart card driver context structure. param control Control type. param param Integer value of specific to control command.

return kStatus_SMARTCARD_Success in success. return kStatus_SMARTCARD_OtherError in case of error.

◆ SMARTCARD_EMVSIM_Deinit()

void SMARTCARD_EMVSIM_Deinit ( EMVSIM_Type base)

This function disables the EMVSIM interrupts, disables the transmitter and receiver, flushes the FIFOs, and gates EMVSIM clock in SIM.

Parameters
baseThe EMVSIM module base address.

brief This function disables the EMVSIM interrupts, disables the transmitter and receiver, flushes the FIFOs, and gates EMVSIM clock in SIM.

param base The EMVSIM module base address.

◆ SMARTCARD_EMVSIM_GetDefaultConfig()

void SMARTCARD_EMVSIM_GetDefaultConfig ( smartcard_card_params_t cardParams)

Fills in the smartcard_card_params structure with default values according to the EMV 4.3 specification.

Parameters
cardParamsThe configuration structure of type smartcard_interface_config_t. Function fill in members: Fi = 372; Di = 1; currentD = 1; WI = 0x0A; GTN = 0x00; with default values.

brief Fills in the smartcard_card_params structure with default values according to the EMV 4.3 specification.

param cardParams The configuration structure of type smartcard_interface_config_t. Function fill in members: Fi = 372; Di = 1; currentD = 1; WI = 0x0A; GTN = 0x00; with default values.

◆ SMARTCARD_EMVSIM_GetTransferRemainingBytes()

int32_t SMARTCARD_EMVSIM_GetTransferRemainingBytes ( EMVSIM_Type base,
smartcard_context_t context 
)

Returns whether the previous EMVSIM transfer has finished.

When performing an async transfer, call this function to ascertain the context of the current transfer: in progress (or busy) or complete (success). If the transfer is still in progress, the user can obtain the number of words that have not been transferred.

Parameters
baseThe EMVSIM module base address.
contextA pointer to a smart card driver context structure.
Returns
The number of bytes not transferred.

brief Returns whether the previous EMVSIM transfer has finished.

When performing an async transfer, call this function to ascertain the context of the current transfer: in progress (or busy) or complete (success). If the transfer is still in progress, the user can obtain the number of words that have not been transferred.

param base The EMVSIM module base address. param context A pointer to a smart card driver context structure.

return The number of bytes not transferred.

◆ SMARTCARD_EMVSIM_Init()

status_t SMARTCARD_EMVSIM_Init ( EMVSIM_Type base,
smartcard_context_t context,
uint32_t  srcClock_Hz 
)

Initializes an EMVSIM peripheral for the Smart card/ISO-7816 operation.

This function un-gates the EMVSIM clock, initializes the module to EMV default settings, configures the IRQ, enables the module-level interrupt to the core and, initializes the driver context.

Parameters
baseThe EMVSIM peripheral base address.
contextA pointer to the smart card driver context structure.
srcClock_HzSmart card clock generation module source clock.
Returns
An error code or kStatus_SMARTCARD_Success.

brief Initializes an EMVSIM peripheral for the Smart card/ISO-7816 operation.

This function un-gates the EMVSIM clock, initializes the module to EMV default settings, configures the IRQ, enables the module-level interrupt to the core and, initializes the driver context.

param base The EMVSIM peripheral base address. param context A pointer to the smart card driver context structure. param srcClock_Hz Smart card clock generation module source clock.

return An error code or kStatus_SMARTCARD_Success.

◆ SMARTCARD_EMVSIM_IRQHandler()

void SMARTCARD_EMVSIM_IRQHandler ( EMVSIM_Type base,
smartcard_context_t context 
)

Handles EMVSIM module interrupts.

Parameters
baseThe EMVSIM peripheral base address.
contextA pointer to a smart card driver context structure.

brief Handles EMVSIM module interrupts.

param base The EMVSIM peripheral base address. param context A pointer to a smart card driver context structure.

◆ SMARTCARD_EMVSIM_TransferNonBlocking()

status_t SMARTCARD_EMVSIM_TransferNonBlocking ( EMVSIM_Type base,
smartcard_context_t context,
smartcard_xfer_t xfer 
)

Transfer data using interrupts.

A non-blocking (also known as asynchronous) function means that the function returns immediately after initiating the transfer function. The application has to get the transfer status to see when the transfer is complete. In other words, after calling the non-blocking (asynchronous) transfer function, the application must get the transfer status to check if the transmit is completed or not.

Parameters
baseThe EMVSIM peripheral base address.
contextA pointer to a smart card driver context structure.
xferA pointer to the smart card transfer structure where the linked buffers and sizes are stored.
Returns
An error code or kStatus_SMARTCARD_Success.

brief Transfer data using interrupts.

A non-blocking (also known as asynchronous) function means that the function returns immediately after initiating the transfer function. The application has to get the transfer status to see when the transfer is complete. In other words, after calling the non-blocking (asynchronous) transfer function, the application must get the transfer status to check if the transmit is completed or not.

param base The EMVSIM peripheral base address. param context A pointer to a smart card driver context structure. param xfer A pointer to the smart card transfer structure where the linked buffers and sizes are stored.

return An error code or kStatus_SMARTCARD_Success.