The smart card service provides functions for cards supporting ISO7816 protocol.
Modules | |
Quick Start Guide(s) | |
In this section you can find a list of all Quick Start guides related to the Smart Card Service. | |
Macros | |
#define | CASE1 1 |
Case for APDU commands. More... | |
#define | CASE2 2 |
#define | CASE3 3 |
#define | ISO_NULL_VAL 0x60 |
NULL byte to restart byte procedure. More... | |
#define | RST_WAIT_TIME 120 |
Reset wait time. More... | |
#define | RX_TIMEOUT 12000 |
Receive timeout. More... | |
Functions | |
void | iso7816_cold_reset (void) |
Cold reset. More... | |
void | iso7816_data_block_atr (uint8_t *p_atr, uint8_t *p_length) |
Answer To Reset (ATR). More... | |
void | iso7816_decode_atr (uint8_t *p_atr) |
Decode ATR trace. More... | |
static enum status_code | iso7816_get_char (uint8_t *p_char_received) |
Get a character from ISO7816. More... | |
bool | iso7816_get_reset_statuts (void) |
Pin status for ISO7816 RESET PIN. More... | |
static void | iso7816_icc_power_off (void) |
ISO7816 ICC power off. More... | |
static void | iso7816_icc_power_on (void) |
ISO7816 ICC power on. More... | |
void | iso7816_init (struct usart_module *const module, uint32_t pin_rst, uint32_t clock_get_hz) |
Initializes a ISO7816 interface device. More... | |
static enum status_code | iso7816_send_char (uint8_t uc_char) |
Send a char to ISO7816. More... | |
void | iso7816_warm_reset (void) |
Warm reset. More... | |
uint16_t | iso7816_xfr_block_tpdu_t0 (const uint8_t *p_apdu, uint8_t *p_message, uint16_t us_length) |
Transfer Block TPDU T = 0. More... | |
Variables | |
volatile uint32_t | iso7816_gs_frequency |
Generator source frequency of smart card usart. More... | |
static uint32_t | iso7816_pin_rst |
Smart Card reset PIN. More... | |
static struct usart_module * | iso7816_usart_module |
static uint8_t | iso7816_usart_status = ISO7816_USART_RCV |
Variable for state of send and receive from USART. More... | |
#define CASE1 1 |
Case for APDU commands.
Referenced by iso7816_xfr_block_tpdu_t0().
#define CASE2 2 |
Referenced by iso7816_xfr_block_tpdu_t0().
#define CASE3 3 |
Referenced by iso7816_xfr_block_tpdu_t0().
#define ISO_NULL_VAL 0x60 |
NULL byte to restart byte procedure.
Referenced by iso7816_xfr_block_tpdu_t0().
#define RST_WAIT_TIME 120 |
Reset wait time.
Referenced by iso7816_cold_reset(), and iso7816_warm_reset().
#define RX_TIMEOUT 12000 |
Receive timeout.
Referenced by iso7816_get_char().
void iso7816_cold_reset | ( | void | ) |
Cold reset.
References i, iso7816_icc_power_on(), and RST_WAIT_TIME.
void iso7816_data_block_atr | ( | uint8_t * | p_atr, |
uint8_t * | p_length | ||
) |
Answer To Reset (ATR).
[in] | p_atr | Pointer to ATR buffer. |
[in] | p_length | Pointer for store the ATR length. |
References Assert, i, iso7816_get_char(), and j.
void iso7816_decode_atr | ( | uint8_t * | p_atr | ) |
|
static |
Get a character from ISO7816.
[in] | p_char_received | Pointer for store the received char. |
STATUS_OK | If the operation was completed |
STATUS_ERR_TIMEOUT | If operation was not completed, due to USART module timing out |
References ISO7816_USART_RCV, ISO7816_USART_SEND, RX_TIMEOUT, STATUS_ERR_TIMEOUT, STATUS_OK, and usart_read_wait().
Referenced by iso7816_data_block_atr(), and iso7816_xfr_block_tpdu_t0().
bool iso7816_get_reset_statuts | ( | void | ) |
Pin status for ISO7816 RESET PIN.
References port_pin_get_output_level().
|
static |
ISO7816 ICC power off.
References ISO7816_PIN_POWER_OFF, and port_pin_set_output_level().
Referenced by iso7816_warm_reset().
|
static |
ISO7816 ICC power on.
References ISO7816_PIN_POWER_ON, and port_pin_set_output_level().
Referenced by iso7816_cold_reset(), and iso7816_warm_reset().
void iso7816_init | ( | struct usart_module *const | module, |
uint32_t | pin_rst, | ||
uint32_t | clock_get_hz | ||
) |
Initializes a ISO7816 interface device.
[out] | module | Pointer to USART device |
[in] | pin_rst | Control smart card RST pin index |
[in] | clock_get_hz | Generator source frequency of smart card usart |
References Assert.
|
static |
Send a char to ISO7816.
[in] | uc_char | Char to be sent. |
References ISO7816_USART_RCV, ISO7816_USART_SEND, and usart_write_wait().
Referenced by iso7816_xfr_block_tpdu_t0().
void iso7816_warm_reset | ( | void | ) |
Warm reset.
References i, iso7816_icc_power_off(), iso7816_icc_power_on(), and RST_WAIT_TIME.
uint16_t iso7816_xfr_block_tpdu_t0 | ( | const uint8_t * | p_apdu, |
uint8_t * | p_message, | ||
uint16_t | us_length | ||
) |
Transfer Block TPDU T = 0.
[in] | p_apdu | Pointer to APDU buffer. |
[in] | p_message | Pointer to message buffer. |
[in] | us_length | Block length. |
References Assert, CASE1, CASE2, CASE3, iso7816_get_char(), iso7816_send_char(), and ISO_NULL_VAL.
volatile uint32_t iso7816_gs_frequency |
Generator source frequency of smart card usart.
|
static |
Smart Card reset PIN.
|
static |
|
static |
Variable for state of send and receive from USART.