52 #ifndef _APP_ISO7816_H_
53 #define _APP_ISO7816_H_
65 #ifdef HAL_ISO7816_MODULE_ENABLED
73 #define APP_ISO7816_ACTION_NONE HAL_ISO7816_ACTION_NONE
74 #define APP_ISO7816_ACTION_OFF HAL_ISO7816_ACTION_OFF
75 #define APP_ISO7816_ACTION_STOPCLK HAL_ISO7816_ACTION_STOPCLK
76 #define APP_ISO7816_ACTION_ON HAL_ISO7816_ACTION_ON
77 #define APP_ISO7816_ACTION_WARMRST HAL_ISO7816_ACTION_WARMRST
78 #define APP_ISO7816_ACTION_RX HAL_ISO7816_ACTION_RX
79 #define APP_ISO7816_ACTION_TX HAL_ISO7816_ACTION_TX
80 #define APP_ISO7816_ACTION_TXRX HAL_ISO7816_ACTION_TXRX
86 #define APP_ISO7816_INTR_PRESENCE HAL_ISO7816_INTR_PRESENCE
87 #define APP_ISO7816_INTR_STATE_ERR HAL_ISO7816_INTR_STATE_ERR
88 #define APP_ISO7816_INTR_DMA_ERR HAL_ISO7816_INTR_DMA_ERR
89 #define APP_ISO7816_INTR_RETRY_ERR HAL_ISO7816_INTR_RETRY_ERR
90 #define APP_ISO7816_INTR_RX_ERR HAL_ISO7816_INTR_RX_ERR
91 #define APP_ISO7816_INTR_DONE HAL_ISO7816_INTR_DONE
98 #define APP_ISO7816_CARD_ABSENT HAL_ISO7816_CARD_ABSENT
99 #define APP_ISO7816_CARD_PRESENT HAL_ISO7816_CARD_PRESENT
105 #define APP_ISO7816_IO_STATE_OFF HAL_ISO7816_IO_STATE_OFF
106 #define APP_ISO7816_IO_STATE_IDLE HAL_ISO7816_IO_STATE_IDLE
107 #define APP_ISO7816_IO_STATE_RX_WAIT HAL_ISO7816_IO_STATE_RX_WAIT
108 #define APP_ISO7816_IO_STATE_RX HAL_ISO7816_IO_STATE_RX
109 #define APP_ISO7816_IO_STATE_TX HAL_ISO7816_IO_STATE_TX
110 #define APP_ISO7816_IO_STATE_TX_GUARD HAL_ISO7816_IO_STATE_TX_GUARD
116 #define APP_ISO7816_PWR_STATE_OFF HAL_ISO7816_PWR_STATE_OFF
117 #define APP_ISO7816_PWR_STATE_PWRUP_VCC HAL_ISO7816_PWR_STATE_PWRUP_VCC
118 #define APP_ISO7816_PWR_STATE_PWRUP_RST HAL_ISO7816_PWR_STATE_PWRUP_RST
119 #define APP_ISO7816_PWR_STATE_PWRDN_RST HAL_ISO7816_PWR_STATE_PWRDN_RST
120 #define APP_ISO7816_PWR_STATE_PWRDN_VCC HAL_ISO7816_PWR_STATE_PWRDN_VCC
121 #define APP_ISO7816_PWR_STATE_STOP_PRE HAL_ISO7816_PWR_STATE_STOP_PRE
122 #define APP_ISO7816_PWR_STATE_STOP HAL_ISO7816_PWR_STATE_STOP
123 #define APP_ISO7816_PWR_STATE_STOP_POST HAL_ISO7816_PWR_STATE_STOP_POST
124 #define APP_ISO7816_PWR_STATE_IDLE HAL_ISO7816_PWR_STATE_IDLE
125 #define APP_ISO7816_PWR_STATE_RX_TS0 HAL_ISO7816_PWR_STATE_RX_TS0
126 #define APP_ISO7816_PWR_STATE_RX_TS1 HAL_ISO7816_PWR_STATE_RX_TS1
127 #define APP_ISO7816_PWR_STATE_RX HAL_ISO7816_PWR_STATE_RX
128 #define APP_ISO7816_PWR_STATE_TX HAL_ISO7816_PWR_STATE_TX
129 #define APP_ISO7816_PWR_STATE_TX_RX HAL_ISO7816_PWR_STATE_TX_RX
143 APP_ISO7816_TYPE_INTERRUPT,
144 APP_ISO7816_TYPE_POLLING,
145 APP_ISO7816_TYPE_MAX,
146 } app_iso7816_mode_t;
153 APP_ISO7816_EVT_ERROR,
154 APP_ISO7816_EVT_ABORT,
155 APP_ISO7816_EVT_PRESENCE,
156 APP_ISO7816_EVT_ATR_CPLT,
157 APP_ISO7816_EVT_TX_CPLT,
158 APP_ISO7816_EVT_RX_CPLT,
159 APP_ISO7816_EVT_TX_RX_CPLT,
160 } app_iso7816_evt_type_t;
184 app_iso7816_pin_t clk;
185 app_iso7816_pin_t rst;
186 app_iso7816_pin_t io;
187 app_iso7816_pin_t presence;
188 } app_iso7816_pin_cfg_t;
195 app_iso7816_evt_type_t type;
212 typedef void (*app_iso7816_evt_handler_t)(app_iso7816_evt_t *p_evt);
223 APP_ISO7816_INVALID = 0,
224 APP_ISO7816_ACTIVITY,
225 #ifdef APP_DRIVER_WAKEUP_CALL_FUN
228 } app_iso7816_state_t;
240 app_iso7816_evt_handler_t evt_handler;
242 app_iso7816_mode_t use_mode;
243 app_iso7816_pin_cfg_t *p_pin_cfg;
244 app_iso7816_state_t iso7816_state;
253 app_iso7816_mode_t use_mode;
254 app_iso7816_pin_cfg_t pin_cfg;
256 iso7816_env_t iso7816_env;
257 } app_iso7816_params_t;
279 uint16_t app_iso7816_init(app_iso7816_params_t *p_params, app_iso7816_evt_handler_t evt_handler);
288 uint16_t app_iso7816_deinit(
void);
300 uint16_t app_iso7816_receive_sync(uint16_t size, uint32_t timeout);
311 uint16_t app_iso7816_receive_async(uint16_t size);
323 uint16_t app_iso7816_transmit_sync(uint16_t size, uint32_t timeout);
334 uint16_t app_iso7816_transmit_async(uint16_t size);
347 uint16_t app_iso7816_transmit_receive_sync(uint16_t tx_size, uint16_t rx_size, uint32_t timeout);
359 uint16_t app_iso7816_transmit_receive_async(uint16_t tx_size, uint16_t rx_size);
375 uint16_t app_iso7816_set_action(uint32_t action);
395 uint32_t app_iso7816_get_power_states(
void);
405 uint16_t app_iso7816_set_etudiv(uint32_t divide);