static void Cool_Print_Comm_Parameters(struct s_reader *reader) { struct cool_data *crdr_data = reader->crdr_data; uint16_t F; uint8_t D; int32_t ret = cnxt_smc_get_F_D_factors(crdr_data->handle, &F, &D); coolapi_check_error("cnxt_smc_get_F_D_factors", ret); char *protocol; CNXT_SMC_COMM comm; ret = cnxt_smc_get_comm_parameters(crdr_data->handle, &comm); coolapi_check_error("cnxt_smc_get_comm_parameters", ret); if(comm.protocol == 0x01) { protocol = "T0"; } else if(comm.protocol == 0x02) { protocol = "T1"; } else if(comm.protocol == 0x04) { protocol = "T14"; } else { protocol = "unknown"; } rdr_log(reader, "Driver Settings: Convention=%s, Protocol=%s, FI=%i, F=%i, N=%i, DI=%i, D=%i, PI1=%i, PI2=%i, II=%i, TXRetries=%i, RXRetries=%i, FilterProtocolBytes=%i", comm.convention ? "Inverse" : "Direct", protocol, comm.FI, F, comm.N, comm.DI, D, comm.PI1, comm.PI2, comm.II, comm.retries.TXRetries, comm.retries.RXRetries, comm.filterprotocolbytes); CNXT_SMC_TIMEOUT timeout; ret = cnxt_smc_get_config_timeout(crdr_data->handle, &timeout); coolapi_check_error("cnxt_smc_get_config_timeout", ret); rdr_log(reader, "Driver Timeouts: CardActTime=%i, CardDeactTime=%i, ATRSTime=%i, ATRDTime=%i, BLKTime=%i, CHTime=%i, CHGuardTime=%i, BKGuardTime=%i", timeout.CardActTime, timeout.CardDeactTime, timeout.ATRSTime, timeout.ATRDTime, timeout.BLKTime, timeout.CHTime, timeout.CHGuardTime, timeout.BKGuardTime); }
static int32_t Cool_WriteSettings (struct s_reader *reader, uint32_t UNUSED(BWT), uint32_t UNUSED(CWT), uint32_t UNUSED(EGT), uint32_t UNUSED(BGT)) { //first set freq back to reader->mhz if necessary uint32_t clk; int32_t ret = cnxt_smc_get_clock_freq (specdev()->handle, &clk); coolapi_check_error("cnxt_smc_get_clock_freq", ret); if (clk/10000 != (uint32_t)reader->mhz) { rdr_debug_mask(reader, D_DEVICE, "COOL: clock freq: %i, scheduling change to %i", clk, reader->mhz * 10000); call (Cool_SetClockrate(reader, reader->mhz)); } //driver sets values in ETU automatically (except read_write_transmit_timeout) //... but lets see what the driver did uint16_t F; uint8_t D; ret = cnxt_smc_get_F_D_factors(specdev()->handle, &F, &D); coolapi_check_error("cnxt_smc_get_F_D_factors", ret); char *protocol; CNXT_SMC_COMM comm; ret = cnxt_smc_get_comm_parameters(specdev()->handle, &comm); coolapi_check_error("cnxt_smc_get_comm_parameters", ret); if (comm.protocol==0x01) protocol = "T0"; else if (comm.protocol==0x02) protocol = "T1"; else if (comm.protocol==0x04) protocol = "T14"; else protocol = "unknown"; rdr_log(reader, "Driver Settings: Convention=%s, Protocol=%s, FI=%i, F=%i, N=%i, DI=%i, D=%i, PI1=%i, PI2=%i, II=%i, TXRetries=%i, RXRetries=%i, FilterProtocolBytes=%i", comm.convention ? "Inverse" : "Direct", protocol, comm.FI, F, comm.N, comm.DI, D, comm.PI1, comm.PI2, comm.II, comm.retries.TXRetries, comm.retries.RXRetries, comm.filterprotocolbytes); CNXT_SMC_TIMEOUT timeout; ret = cnxt_smc_get_config_timeout(specdev()->handle, &timeout); coolapi_check_error("cnxt_smc_get_config_timeout", ret); rdr_log(reader, "Driver Settings: CardActTime=%i, CardDeactTime=%i, ATRSTime=%i, ATRDTime=%i, BLKTime=%i, CHTime=%i, CHGuardTime=%i, BKGuardTime=%i", timeout.CardActTime, timeout.CardDeactTime, timeout.ATRSTime, timeout.ATRDTime, timeout.BLKTime, timeout.CHTime, timeout.CHGuardTime, timeout.BKGuardTime); return OK; }