11 #include <librfid/rfid.h>
12 #include <librfid/rfid_scan.h>
13 #include <librfid/rfid_reader.h>
14 #include <librfid/rfid_layer2.h>
15 #include <librfid/rfid_protocol.h>
17 #include <librfid/rfid_protocol_mifare_classic.h>
18 #include <librfid/rfid_protocol_mifare_ul.h>
20 #include "librfid-tool.h"
24 hexdump(const void *data, unsigned int len)
26 static char string[1024];
27 unsigned char *d = (unsigned char *) data;
31 left = sizeof(string);
32 for (i = 0; len--; i += 3) {
33 if (i >= sizeof(string) -4)
35 snprintf(string+i, 4, " %02x", *d++);
40 static char parse_hexdigit(const char hexdigit)
42 if (hexdigit <= '9' && hexdigit >= '0')
43 return hexdigit - '0';
44 if (hexdigit <= 'f' && hexdigit >= 'a')
45 return 10 + (hexdigit - 'a');
46 if (hexdigit <= 'F' && hexdigit >= 'A')
47 return 10 + (hexdigit - 'A');
53 hexread(unsigned char *result, const unsigned char *in, unsigned int len)
55 const unsigned char *pos;
57 unsigned char *res = result;
59 for (pos = in; pos-in <= len-2; pos+=2) {
65 *res++ = parse_hexdigit(dig1) << 4 | parse_hexdigit(dig2);
68 return (res - result);
71 struct rfid_reader_handle *rh;
72 struct rfid_layer2_handle *l2h;
73 struct rfid_protocol_handle *ph;
77 printf("opening reader handle OpenPCD, CM5x21\n");
78 rh = rfid_reader_open(NULL, RFID_READER_OPENPCD);
80 fprintf(stderr, "No OpenPCD found\n");
81 rh = rfid_reader_open(NULL, RFID_READER_CM5121);
83 fprintf(stderr, "No Omnikey Cardman 5x21 found\n");
90 int l2_init(int layer2)
94 printf("opening layer2 handle\n");
95 l2h = rfid_layer2_init(rh, layer2);
97 fprintf(stderr, "error during layer2(%d)_init (0=14a,1=14b,3=15)\n",layer2);
101 printf("running layer2 anticol(_open)\n");
102 rc = rfid_layer2_open(l2h);
104 fprintf(stderr, "error during layer2_open\n");
111 int l3_init(int protocol)
113 printf("running layer3 (ats)\n");
114 ph = rfid_protocol_init(l2h, protocol);
116 fprintf(stderr, "error during protocol_init\n");
119 if (rfid_protocol_open(ph) < 0) {
120 fprintf(stderr, "error during protocol_open\n");
124 printf("we now have layer3 up and running\n");