Exemplo n.º 1
0
static int32_t pcsc_get_status(struct s_reader *reader, int32_t *in)
{
	struct pcsc_data *crdr_data = reader->crdr_data;
	int32_t ret = pcsc_check_card_inserted(reader);
	*in = crdr_data->pcsc_has_card;
	return ret;
}
Exemplo n.º 2
0
int32_t ICC_Async_GetStatus (struct s_reader *reader, int32_t * card)
{
	int32_t in=0;

	if (reader->crdr.active==1 && reader->crdr.get_status) {
		call(reader->crdr.get_status(reader, &in));

		if (in)
			*card = TRUE;
		else
			*card = FALSE;

		return OK;
	}

	switch(reader->typ) {
		case R_DB2COM1:
		case R_DB2COM2:
#if defined(TUXBOX) && defined(PPC)
			{
			uint16_t msr=1;
			IO_Serial_Ioctl_Lock(reader, 1);
			ioctl(reader->fdmc, GET_PCDAT, &msr);
			if (reader->typ == R_DB2COM2)
				in=(!(msr & 1));
			else
				in=((msr & 0x0f00) == 0x0f00);
			IO_Serial_Ioctl_Lock(reader, 0);
			}
			break;
#endif
		case R_SC8in1:
			cs_writelock(&sc8in1_lock);
			call (Sc8in1_GetStatus(reader, &in));
			cs_writeunlock(&sc8in1_lock);
			break;
		case R_MP35:
		case R_MOUSE:
			call (Phoenix_GetStatus(reader, &in));
			break;
#if defined(LIBUSB)
		case R_SMART:
			call (SR_GetStatus(reader, &in));
			break;
#endif
		case R_INTERNAL:
#if defined(SCI_DEV)
			call (Sci_GetStatus(reader, &in));
#elif defined(COOL)
			call (Cool_GetStatus(&in));
#elif defined(WITH_STAPI)
			call (STReader_GetStatus(reader->stsmart_handle, &in));
#elif defined(AZBOX)
			call(Azbox_GetStatus(reader, &in));
#endif
			break;
#ifdef HAVE_PCSC
		case R_PCSC:
			in =  pcsc_check_card_inserted(reader);
			break;
#endif
		default:
			cs_log("ERROR ICC_Get_Status: unknow reader type %i",reader->typ);
			return ERROR;
	}

  if (in)
		*card = TRUE;
	else
		*card = FALSE;

	return OK;
}
Exemplo n.º 3
0
static int32_t pcsc_get_status(struct s_reader *reader, int32_t *in) {
    int32_t ret = pcsc_check_card_inserted(reader);
    *in = reader->pcsc_has_card;
    return ret;
}