int32_t Cool_Reset (struct s_reader *reader, ATR * atr) { //set freq to reader->cardmhz if necessary uint32_t clk; int32_t ret; ret = cnxt_smc_get_clock_freq (specdev()->handle, &clk); check_error("cnxt_smc_get_clock_freq", ret); if (clk/10000 != reader->cardmhz) { cs_debug_mask(D_DEVICE,"COOL: %s clock freq: %i, scheduling change to %i for card reset", reader->label, clk, reader->cardmhz*10000); call (Cool_SetClockrate(reader, reader->cardmhz)); } //reset card ret = cnxt_smc_reset_card (specdev()->handle, ATR_TIMEOUT, NULL, NULL); check_error("cnxt_smc_reset_card", ret); cs_sleepms(50); int32_t n = 40; unsigned char buf[40]; ret = cnxt_smc_get_atr (specdev()->handle, buf, &n); check_error("cnxt_smc_get_atr", ret); call (!ATR_InitFromArray (atr, buf, n) == ATR_OK); { cs_sleepms(50); return OK; } }
int32_t Cool_FastReset () { int32_t n = 40; unsigned char buf[40]; //reset card call (cnxt_smc_reset_card (specdev()->handle, ATR_TIMEOUT, NULL, NULL)); cs_sleepms(50); call (cnxt_smc_get_atr (specdev()->handle, buf, &n)); return 0; }
static int32_t Cool_FastReset (struct s_reader *reader) { int32_t n = ATR_MAX_SIZE, ret; unsigned char buf[ATR_MAX_SIZE]; //reset card ret = cnxt_smc_reset_card (specdev()->handle, ATR_TIMEOUT, NULL, NULL); coolapi_check_error("cnxt_smc_reset_card", ret); cs_sleepms(50); ret = cnxt_smc_get_atr (specdev()->handle, buf, &n); coolapi_check_error("cnxt_smc_get_atr", ret); return OK; }
int32_t Cool_FastReset (struct s_reader *reader) { int32_t n = 40, ret; unsigned char buf[40]; //reset card ret = cnxt_smc_reset_card (specdev()->handle, ATR_TIMEOUT, NULL, NULL); check_error("cnxt_smc_reset_card", ret); cs_sleepms(50); ret = cnxt_smc_get_atr (specdev()->handle, buf, &n); check_error("cnxt_smc_get_atr", ret); return 0; }
int32_t Cool_FastReset_With_ATR (struct s_reader *reader, ATR * atr) { int32_t n = 40, ret; unsigned char buf[40]; //reset card ret = cnxt_smc_reset_card (specdev()->handle, ATR_TIMEOUT, NULL, NULL); check_error("cnxt_smc_reset_card", ret); cs_sleepms(50); ret = cnxt_smc_get_atr (specdev()->handle, buf, &n); check_error("cnxt_smc_get_atr", ret); call (!ATR_InitFromArray (atr, buf, n) == ATR_OK); { cs_sleepms(50); return OK; } }
int32_t Cool_Reset (ATR * atr) { call (Cool_SetClockrate(357)); //reset card int32_t timeout = 5000; // Timout in ms? call (cnxt_smc_reset_card (specdev()->handle, ATR_TIMEOUT, NULL, NULL)); cs_sleepms(50); int32_t n = 40; unsigned char buf[40]; call (cnxt_smc_get_atr (specdev()->handle, buf, &n)); call (!ATR_InitFromArray (atr, buf, n) == ATR_OK); { cs_sleepms(50); return OK; } }
static int32_t Cool_Reset(struct s_reader *reader, ATR *atr) { struct cool_data *crdr_data = reader->crdr_data; int32_t ret; if(!reader->ins7e11_fast_reset) { //set freq to reader->cardmhz if necessary uint32_t clk; ret = cnxt_smc_get_clock_freq(crdr_data->handle, &clk); coolapi_check_error("cnxt_smc_get_clock_freq", ret); if(clk / 10000 != (uint32_t)reader->cardmhz) { rdr_log_dbg(reader, D_DEVICE, "COOL: clock freq: %i, scheduling change to %i for card reset", clk, reader->cardmhz * 10000); call(Cool_SetClockrate(reader, reader->cardmhz)); } } else { rdr_log(reader, "Doing fast reset"); } //reset card ret = cnxt_smc_reset_card(crdr_data->handle, ATR_TIMEOUT, NULL, NULL); coolapi_check_error("cnxt_smc_reset_card", ret); cs_sleepms(50); int32_t n = ATR_MAX_SIZE; unsigned char buf[ATR_MAX_SIZE]; ret = cnxt_smc_get_atr(crdr_data->handle, buf, &n); coolapi_check_error("cnxt_smc_get_atr", ret); call(!ATR_InitFromArray(atr, buf, n) != ERROR); { cs_sleepms(50); return OK; } }
static int32_t Cool_Reset (struct s_reader *reader, ATR * atr) { int32_t ret; if (!reader->ins7e11_fast_reset) { //set freq to reader->cardmhz if necessary uint32_t clk; ret = cnxt_smc_get_clock_freq (specdev()->handle, &clk); coolapi_check_error("cnxt_smc_get_clock_freq", ret); if (clk/10000 != (uint32_t)reader->cardmhz) { rdr_debug_mask(reader, D_DEVICE, "COOL: clock freq: %i, scheduling change to %i for card reset", clk, reader->cardmhz*10000); call (Cool_SetClockrate(reader, reader->cardmhz)); } } else { rdr_debug_mask(reader, D_DEVICE, "fast reset needed, restoring transmit parameter for coolstream device %s", reader->device); call(Cool_Set_Transmit_Timeout(reader, 0)); rdr_log(reader, "Doing fast reset"); } //reset card ret = cnxt_smc_reset_card (specdev()->handle, ATR_TIMEOUT, NULL, NULL); coolapi_check_error("cnxt_smc_reset_card", ret); cs_sleepms(50); int32_t n = ATR_MAX_SIZE; unsigned char buf[ATR_MAX_SIZE]; ret = cnxt_smc_get_atr (specdev()->handle, buf, &n); coolapi_check_error("cnxt_smc_get_atr", ret); call (!ATR_InitFromArray (atr, buf, n) != ERROR); { cs_sleepms(50); return OK; } }