int32_t ICC_Async_Close (struct s_reader *reader) { cs_debug_mask (D_IFD, "IFD: Closing device %s", reader->device); if (reader->crdr.active && reader->crdr.close) { call(reader->crdr.close(reader)); cs_debug_mask (D_IFD, "IFD: Device %s succesfully closed", reader->device); return OK; } switch(reader->typ) { case R_MP35: call (MP35_Close(reader)); break; case R_DB2COM1: case R_DB2COM2: case R_SC8in1: case R_MOUSE: call (Phoenix_Close(reader)); break; #if defined(LIBUSB) case R_SMART: call (SR_Close(reader)); break; #endif case R_INTERNAL: #if defined(SCI_DEV) /* Dectivate ICC */ call (Sci_Deactivate(reader)); call (Phoenix_Close(reader)); #elif defined(WITH_STAPI) call(STReader_Close(reader->stsmart_handle)); #elif defined(COOL) call (Cool_Close()); #endif break; #ifdef HAVE_PCSC case R_PCSC: pcsc_close(reader); break; #endif default: cs_log("ERROR ICC_Async_Close: unknow reader type %i",reader->typ); return ERROR; } cs_debug_mask (D_IFD, "IFD: Device %s succesfully closed", reader->device); return OK; }
static int32_t stapi_close(struct s_reader *reader) { return STReader_Close(reader->stsmart_handle); }