]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
cangen: Added '-n <count>' commandline option analogue to candump tool.
authorhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Mon, 29 Nov 2010 18:58:12 +0000 (18:58 +0000)
committerhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Mon, 29 Nov 2010 18:58:12 +0000 (18:58 +0000)
Inspired by Uwe Bonnes.

git-svn-id: svn://svn.berlios.de//socketcan/trunk@1216 030b6a49-0b11-0410-94ab-b0dab22257f2

can-utils/cangen.c

index 898068b9829e4d1a9589f4639e5419be9bc29ec1..9009c0501701f9d55f861a35c984ff06bc8fb390 100644 (file)
@@ -95,6 +95,8 @@ void print_usage(char *prg)
                " generation mode - see below)\n");
        fprintf(stderr, "         -p <timeout>  (poll on -ENOBUFS to write frames"
                " with <timeout> ms)\n");
+       fprintf(stderr, "         -n <count>    (terminate after <count> 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();