- fprintf(stderr, "\n%s: generate random CAN frames\n\n", prg);
- fprintf(stderr, "Usage: %s [can-interface]\n", prg);
- fprintf(stderr, "Options: -g <ms> (gap in milli seconds) "
- "default: %d\n", DEFAULT_GAP);
- fprintf(stderr, " -e (extended frame mode) "
- "default: standard frame format \n");
- fprintf(stderr, " -I (fixed CAN ID) "
- "default: 0x123\n");
- fprintf(stderr, " -D (fixed CAN Data) "
- "default: 01 23 45 67 89 AB CD EF\n");
- fprintf(stderr, " -L (fixed CAN DLC) "
- "default: 8\n");
- fprintf(stderr, " -f <canframe> (other fixed CAN frame) "
- "default: 123#0123456789ABCDEF\n");
- fprintf(stderr, " -x (disable echo) "
- "default: standard echo\n");
- fprintf(stderr, " -v (verbose) "
- "default: don't print sent frames\n");
+ fprintf(stderr, "\n%s: generate CAN frames\n\n", prg);
+ fprintf(stderr, "Usage: %s [options] <CAN interface>\n", prg);
+ fprintf(stderr, "Options: -g <ms> (gap in milli seconds "
+ "- default: %d ms)\n", DEFAULT_GAP);
+ fprintf(stderr, " -e (generate extended frame mode "
+ "(EFF) CAN frames)\n");
+ fprintf(stderr, " -f (generate CAN FD CAN frames)\n");
+ fprintf(stderr, " -b (generate CAN FD CAN frames"
+ " with bitrate switch (BRS))\n");
+ fprintf(stderr, " -R (send RTR frame)\n");
+ fprintf(stderr, " -m (mix -e -f -b -R frames)\n");
+ fprintf(stderr, " -I <mode> (CAN ID"
+ " generation mode - see below)\n");
+ fprintf(stderr, " -L <mode> (CAN data length code (dlc)"
+ " generation mode - see below)\n");
+ fprintf(stderr, " -D <mode> (CAN data (payload)"
+ " 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 "
+ "generated CAN frames)\n");
+ fprintf(stderr, " -v (increment verbose level for "
+ "printing sent CAN frames)\n\n");
+ fprintf(stderr, "Generation modes:\n");
+ fprintf(stderr, "'r' => random values (default)\n");
+ fprintf(stderr, "'i' => increment values\n");
+ fprintf(stderr, "<hexvalue> => fix value using <hexvalue>\n\n");
+ fprintf(stderr, "When incrementing the CAN data the data length code "
+ "minimum is set to 1.\n");
+ fprintf(stderr, "CAN IDs and data content are given and expected in hexadecimal values.\n\n");
+ fprintf(stderr, "Examples:\n");
+ fprintf(stderr, "%s vcan0 -g 4 -I 42A -L 1 -D i -v -v ", prg);
+ fprintf(stderr, "(fixed CAN ID and length, inc. data)\n");
+ fprintf(stderr, "%s vcan0 -e -L i -v -v -v ", prg);
+ fprintf(stderr, "(generate EFF frames, incr. length)\n");
+ fprintf(stderr, "%s vcan0 -D 11223344DEADBEEF -L 8 ", prg);
+ fprintf(stderr, "(fixed CAN data payload and length)\n");
+ fprintf(stderr, "%s vcan0 -g 0 -i -x ", prg);
+ fprintf(stderr, "(full load test ignoring -ENOBUFS)\n");
+ fprintf(stderr, "%s vcan0 -g 0 -p 10 -x ", prg);
+ fprintf(stderr, "(full load test with polling, 10ms timeout)\n");
+ fprintf(stderr, "%s vcan0 ", prg);
+ fprintf(stderr, "(my favourite default :)\n\n");