Exemple #1
0
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;
}
Exemple #2
0
static int32_t stapi_close(struct s_reader *reader) {
    return STReader_Close(reader->stsmart_handle);
}