From: hartkopp Date: Mon, 29 Nov 2010 18:58:12 +0000 (+0000) Subject: cangen: Added '-n ' commandline option analogue to candump tool. X-Git-Url: https://rtime.felk.cvut.cz/gitweb/socketcan-devel.git/commitdiff_plain/92864c3c8efc225491b563b808204d2a0536755b cangen: Added '-n ' commandline option analogue to candump tool. Inspired by Uwe Bonnes. git-svn-id: svn://svn.berlios.de//socketcan/trunk@1216 030b6a49-0b11-0410-94ab-b0dab22257f2 --- diff --git a/can-utils/cangen.c b/can-utils/cangen.c index 898068b..9009c05 100644 --- a/can-utils/cangen.c +++ b/can-utils/cangen.c @@ -95,6 +95,8 @@ void print_usage(char *prg) " generation mode - see below)\n"); fprintf(stderr, " -p (poll on -ENOBUFS to write frames" " with ms)\n"); + fprintf(stderr, " -n (terminate after CAN frames " + "- default infinite)\n"); fprintf(stderr, " -i (ignore -ENOBUFS return values on" " write() syscalls)\n"); fprintf(stderr, " -x (disable local loopback of " @@ -139,6 +141,7 @@ int main(int argc, char **argv) unsigned char dlc_mode = MODE_RANDOM; unsigned char loopback_disable = 0; unsigned char verbose = 0; + int count = 0; uint64_t incdata = 0; int opt; @@ -157,7 +160,7 @@ int main(int argc, char **argv) signal(SIGHUP, sigterm); signal(SIGINT, sigterm); - while ((opt = getopt(argc, argv, "ig:eI:L:D:xp:vh?")) != -1) { + while ((opt = getopt(argc, argv, "ig:eI:L:D:xp:n:vh?")) != -1) { switch (opt) { case 'i': @@ -220,6 +223,14 @@ int main(int argc, char **argv) polltimeout = strtoul(optarg, NULL, 10); break; + case 'n': + count = atoi(optarg); + if (count < 1) { + print_usage(basename(argv[0])); + return 1; + } + break; + case '?': case 'h': default: @@ -302,6 +313,9 @@ int main(int argc, char **argv) while (running) { + if (count && (--count == 0)) + running = 0; + if (id_mode == MODE_RANDOM) { frame.can_id = random();