А я ещё удивляюсь, чего это у меня из SIM-карты ATR читается только один раз, а потом таймаутится, пока карту не передёрнешь.
/*
* Reset - nothing to be done?
* We should do something to make it come back with all state zapped
*/
static int starkey_card_reset(ifd_reader_t * reader, int slot, void *atr,
size_t size)
{
ifd_device_t *dev = reader->device;
unsigned char buffer[32];
int rc, atrlen;
ifd_usb_capture_t *cap;
rc = ifd_usb_begin_capture(dev,
IFD_USB_URB_TYPE_INTERRUPT, 0x81,
sizeof(buffer), &cap);
if (rc < 0)
return rc;
rc = ifd_usb_capture(dev, cap, buffer, sizeof(buffer), STARKEY_TIMEOUT);
if (rc <= 0) {
ct_error("starkey: failed to activate token");
return -1;
}
memcpy(atr, buffer, rc);
atrlen = rc;
return atrlen;
}