add -E parameter to do an endless loop of enumeratiosn. The option has one
argument which specifies the delay in milliseconds between the enumeration rounds git-svn-id: https://svn.gnumonks.org/trunk/librfid@2089 e0336214-984f-0b4b-a45f-81c69e1f0ede
This commit is contained in:
parent
6e98a8dc0e
commit
ec2cf3b617
|
@ -456,6 +456,7 @@ static void do_enum(int layer2)
|
||||||
|
|
||||||
if (rh->reader->l2_supported & (1 << layer2)) {
|
if (rh->reader->l2_supported & (1 << layer2)) {
|
||||||
l2h = rfid_layer2_init(rh, layer2);
|
l2h = rfid_layer2_init(rh, layer2);
|
||||||
|
printf("Layer2 init ok\n");
|
||||||
rc = rfid_layer2_open(l2h);
|
rc = rfid_layer2_open(l2h);
|
||||||
} else {
|
} else {
|
||||||
printf("error during layer2_open\n");
|
printf("error during layer2_open\n");
|
||||||
|
@ -488,6 +489,29 @@ static void do_enum(int layer2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void do_enum_loop(int layer2, unsigned int delay)
|
||||||
|
{
|
||||||
|
while (1) {
|
||||||
|
do_enum(layer2);
|
||||||
|
{
|
||||||
|
unsigned int opt;
|
||||||
|
unsigned int optlen = sizeof(opt);
|
||||||
|
|
||||||
|
/* turn off RF */
|
||||||
|
opt = 1;
|
||||||
|
rfid_reader_setopt(rh, RFID_OPT_RDR_RF_KILL, &opt, optlen);
|
||||||
|
|
||||||
|
usleep(10 * 1000);
|
||||||
|
|
||||||
|
/* turn on RF */
|
||||||
|
opt = 0;
|
||||||
|
rfid_reader_setopt(rh, RFID_OPT_RDR_RF_KILL, &opt, optlen);
|
||||||
|
}
|
||||||
|
usleep(delay * 1000);
|
||||||
|
printf("--- next run ---\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define OPTION_OFFSET 256
|
#define OPTION_OFFSET 256
|
||||||
|
|
||||||
static struct option original_opts[] = {
|
static struct option original_opts[] = {
|
||||||
|
@ -498,6 +522,7 @@ static struct option original_opts[] = {
|
||||||
{ "scan-loop", 0, 0, 'S' },
|
{ "scan-loop", 0, 0, 'S' },
|
||||||
{ "dump", 0, 0, 'd' },
|
{ "dump", 0, 0, 'd' },
|
||||||
{ "enum", 0, 0, 'e' },
|
{ "enum", 0, 0, 'e' },
|
||||||
|
{ "enum-loop", 1, 0, 'E' },
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -574,6 +599,7 @@ static void help(void)
|
||||||
" -l --layer2 {iso14443a,iso14443b,iso15693,icode1}\n"
|
" -l --layer2 {iso14443a,iso14443b,iso15693,icode1}\n"
|
||||||
" -d --dump dump rc632 registers\n"
|
" -d --dump dump rc632 registers\n"
|
||||||
" -e --enum enumerate all tag's in field \n"
|
" -e --enum enumerate all tag's in field \n"
|
||||||
|
" -E --enum-loop <delay> (ms) enumerate endless\n"
|
||||||
" -h --help\n");
|
" -h --help\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -598,15 +624,27 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int c, option_index = 0;
|
int c, option_index = 0;
|
||||||
c = getopt_long(argc, argv, "hp:l:sSde", opts, &option_index);
|
c = getopt_long(argc, argv, "hp:l:sSdeE:", opts, &option_index);
|
||||||
if (c == -1)
|
if (c == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
case 'E':
|
||||||
|
i = strtol(optarg, NULL, 10);
|
||||||
|
|
||||||
|
if (reader_init() < 0)
|
||||||
|
exit(1);
|
||||||
|
if (layer2<0)
|
||||||
|
layer2 = RFID_LAYER2_ISO14443A;
|
||||||
|
|
||||||
|
do_enum_loop(layer2, i>1? i : 500);
|
||||||
|
rfid_reader_close(rh);
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
if (reader_init() < 0)
|
if (reader_init() < 0)
|
||||||
exit(1);
|
exit(1);
|
||||||
if (layer2==0)
|
if (layer2 < 0)
|
||||||
layer2 = RFID_LAYER2_ISO14443A;
|
layer2 = RFID_LAYER2_ISO14443A;
|
||||||
do_enum(layer2);
|
do_enum(layer2);
|
||||||
rfid_reader_close(rh);
|
rfid_reader_close(rh);
|
||||||
|
@ -647,10 +685,14 @@ int main(int argc, char **argv)
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
printf("unknown cmd: %c\n",c);
|
||||||
case 'h':
|
case 'h':
|
||||||
help();
|
help();
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
|
case '?':
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue