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)) {
|
||||
l2h = rfid_layer2_init(rh, layer2);
|
||||
printf("Layer2 init ok\n");
|
||||
rc = rfid_layer2_open(l2h);
|
||||
} else {
|
||||
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
|
||||
|
||||
static struct option original_opts[] = {
|
||||
|
@ -498,6 +522,7 @@ static struct option original_opts[] = {
|
|||
{ "scan-loop", 0, 0, 'S' },
|
||||
{ "dump", 0, 0, 'd' },
|
||||
{ "enum", 0, 0, 'e' },
|
||||
{ "enum-loop", 1, 0, 'E' },
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -574,6 +599,7 @@ static void help(void)
|
|||
" -l --layer2 {iso14443a,iso14443b,iso15693,icode1}\n"
|
||||
" -d --dump dump rc632 registers\n"
|
||||
" -e --enum enumerate all tag's in field \n"
|
||||
" -E --enum-loop <delay> (ms) enumerate endless\n"
|
||||
" -h --help\n");
|
||||
}
|
||||
|
||||
|
@ -598,15 +624,27 @@ int main(int argc, char **argv)
|
|||
|
||||
while (1) {
|
||||
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)
|
||||
break;
|
||||
|
||||
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':
|
||||
if (reader_init() < 0)
|
||||
exit(1);
|
||||
if (layer2==0)
|
||||
if (layer2 < 0)
|
||||
layer2 = RFID_LAYER2_ISO14443A;
|
||||
do_enum(layer2);
|
||||
rfid_reader_close(rh);
|
||||
|
@ -647,10 +685,14 @@ int main(int argc, char **argv)
|
|||
exit(2);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
printf("unknown cmd: %c\n",c);
|
||||
case 'h':
|
||||
help();
|
||||
exit(0);
|
||||
break;
|
||||
case '?':
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue