8 #include <librfid/rfid.h>
9 #include <librfid/rfid_scan.h>
10 #include <librfid/rfid_reader.h>
11 #include <librfid/rfid_layer2.h>
12 #include <librfid/rfid_protocol.h>
14 #include <librfid/rfid_protocol_mifare_classic.h>
15 #include <librfid/rfid_protocol_mifare_ul.h>
17 #include "librfid-tool.h"
20 hexdump(const void *data, unsigned int len)
22 static char string[1024];
23 unsigned char *d = (unsigned char *) data;
27 left = sizeof(string);
28 for (i = 0; len--; i += 3) {
29 if (i >= sizeof(string) -4)
31 snprintf(string+i, 4, " %02x", *d++);
36 static char parse_hexdigit(const char hexdigit)
38 if (hexdigit <= '9' && hexdigit >= '0')
39 return hexdigit - '0';
40 if (hexdigit <= 'f' && hexdigit >= 'a')
41 return 10 + (hexdigit - 'a');
47 hexread(unsigned char *result, const unsigned char *in, unsigned int len)
49 const unsigned char *pos;
51 unsigned char *res = result;
53 for (pos = in; pos-in <= len-2; pos+=2) {
61 *res++ = parse_hexdigit(dig1) << 4 | parse_hexdigit(dig2);
64 return (res - result);
67 struct rfid_reader_handle *rh;
68 struct rfid_layer2_handle *l2h;
69 struct rfid_protocol_handle *ph;
73 printf("opening reader handle\n");
74 rh = rfid_reader_open(NULL, RFID_READER_CM5121);
76 fprintf(stderr, "No Omnikey Cardman 5121 found\n");
77 rh = rfid_reader_open(NULL, RFID_READER_OPENPCD);
79 fprintf(stderr, "No OpenPCD found either\n");
86 int l2_init(int layer2)
88 unsigned char buf[0x3f];
91 printf("opening layer2 handle\n");
92 l2h = rfid_layer2_init(rh, layer2);
94 fprintf(stderr, "error during iso14443a_init\n");
98 printf("running layer2 anticol\n");
99 rc = rfid_layer2_open(l2h);
101 fprintf(stderr, "error during layer2_open\n");
108 int l3_init(int protocol)
110 printf("running layer3 (ats)\n");
111 ph = rfid_protocol_init(l2h, protocol);
113 fprintf(stderr, "error during protocol_init\n");
116 if (rfid_protocol_open(ph) < 0) {
117 fprintf(stderr, "error during protocol_open\n");
121 printf("we now have layer3 up and running\n");