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');
51 hexread(unsigned char *result, const unsigned char *in, unsigned int len)
53 const unsigned char *pos;
55 unsigned char *res = result;
57 for (pos = in; pos-in <= len-2; pos+=2) {
63 *res++ = parse_hexdigit(dig1) << 4 | parse_hexdigit(dig2);
66 return (res - result);
69 struct rfid_reader_handle *rh;
70 struct rfid_layer2_handle *l2h;
71 struct rfid_protocol_handle *ph;
75 printf("opening reader handle OpenPCD, CM5x21\n");
76 rh = rfid_reader_open(NULL, RFID_READER_OPENPCD);
78 fprintf(stderr, "No OpenPCD found\n");
79 rh = rfid_reader_open(NULL, RFID_READER_CM5121);
81 fprintf(stderr, "No Omnikey Cardman 5x21 found\n");
88 int l2_init(int layer2)
92 printf("opening layer2 handle\n");
93 l2h = rfid_layer2_init(rh, layer2);
95 fprintf(stderr, "error during layer2(%d)_init (0=14a,1=14b,3=15)\n",layer2);
99 printf("running layer2 anticol(_open)\n");
100 rc = rfid_layer2_open(l2h);
102 fprintf(stderr, "error during layer2_open\n");
109 int l3_init(int protocol)
111 printf("running layer3 (ats)\n");
112 ph = rfid_protocol_init(l2h, protocol);
114 fprintf(stderr, "error during protocol_init\n");
117 if (rfid_protocol_open(ph) < 0) {
118 fprintf(stderr, "error during protocol_open\n");
122 printf("we now have layer3 up and running\n");