Example #1
0
int rfid_execute(void *data, unsigned int isize, unsigned int osize)
{
	int res;

	if((res=rfid_write(data, isize))<0)
	    return res;
	else
	    return rfid_read(data, osize);
}
Example #2
0
void sysRfidread(char* id,int bloc)
{
#ifdef VSIMU
  VPUSH(NIL);
#endif
#ifdef VREAL
  char buf[4];
  int k=rfid_read(id,bloc,buf);
  if (k)
  {
    VPUSH(NIL);
    return;
  }
  VPUSH(PNTTOVAL(VMALLOCSTR(buf,4)));
#endif
}
Example #3
0
static int rfid_execute(void *data, unsigned int isize, unsigned int osize)
{
	int res;
	if (rfid_write(data, isize))
	{
		debug_printf("getting result\n");
		res = rfid_read(data, osize);
		if (res > 0)
			rfid_hexdump(data, res);
		else
			debug_printf("error: res=%i\n", res);
	}
	else
	{
		debug_printf("->NACK!\n");
		res = -1;
	}
	return res;
}
Example #4
0
int rfid_write(const void *data, int len)
{
	int i;
	static const unsigned char preamble[] =
	{ 0x01, 0x00, 0x00, 0xFF };
	const unsigned char *p = preamble;
	unsigned char tfi = 0xD4, c;

	if (!data)
		len = 0xFF;

	/* enable chip select */
	rfid_cs(0);

	p = preamble; /* Praeamble */
	for (i = 0; i < (int) sizeof(preamble); i++)
		rfid_tx(*p++);
	rfid_tx(len + 1); /* LEN */
	rfid_tx(0x100 - (len + 1)); /* LCS */
	rfid_tx(tfi); /* TFI */
	/* PDn */
	p = (const unsigned char *) data;
	while (len--)
	{
		c = *p++;
		rfid_tx(c);
		tfi += c;
	}
	rfid_tx(0x100 - tfi); /* DCS */
	rfid_rx(); /* Postamble */

	/* release chip select */
	rfid_cs(1);

	/* check for ack */
	return rfid_read(NULL, 0);
}