cangen: added optarg enabling bitrate switch in canfd frames (-f[b])

Signed-off-by: Sven Schmitt <sven.schmitt@gmx.net>
pull/8/head
Sven Schmitt 2015-10-06 17:32:42 +02:00
parent 0e3ff3b315
commit 04e4457aa9
1 changed files with 7 additions and 2 deletions

View File

@ -83,7 +83,7 @@ void print_usage(char *prg)
"- default: %d ms)\n", DEFAULT_GAP); "- default: %d ms)\n", DEFAULT_GAP);
fprintf(stderr, " -e (generate extended frame mode " fprintf(stderr, " -e (generate extended frame mode "
"(EFF) CAN frames)\n"); "(EFF) CAN frames)\n");
fprintf(stderr, " -f (generate CAN FD CAN frames)\n"); fprintf(stderr, " -f [b] (generate CAN FD CAN frames [with bitrate switch])\n");
fprintf(stderr, " -R (send RTR frame)\n"); fprintf(stderr, " -R (send RTR frame)\n");
fprintf(stderr, " -m (mix -e -f -R frames)\n"); fprintf(stderr, " -m (mix -e -f -R frames)\n");
fprintf(stderr, " -I <mode> (CAN ID" fprintf(stderr, " -I <mode> (CAN ID"
@ -136,6 +136,7 @@ int main(int argc, char **argv)
unsigned char ignore_enobufs = 0; unsigned char ignore_enobufs = 0;
unsigned char extended = 0; unsigned char extended = 0;
unsigned char canfd = 0; unsigned char canfd = 0;
unsigned char brs = 0;
unsigned char mix = 0; unsigned char mix = 0;
unsigned char id_mode = MODE_RANDOM; unsigned char id_mode = MODE_RANDOM;
unsigned char data_mode = MODE_RANDOM; unsigned char data_mode = MODE_RANDOM;
@ -170,7 +171,7 @@ int main(int argc, char **argv)
signal(SIGHUP, sigterm); signal(SIGHUP, sigterm);
signal(SIGINT, sigterm); signal(SIGINT, sigterm);
while ((opt = getopt(argc, argv, "ig:efmI:L:D:xp:n:vRh?")) != -1) { while ((opt = getopt(argc, argv, "ig:ef:mI:L:D:xp:n:vRh?")) != -1) {
switch (opt) { switch (opt) {
case 'i': case 'i':
@ -186,6 +187,8 @@ int main(int argc, char **argv)
break; break;
case 'f': case 'f':
if (optarg[0] == 'b') /* bitrate switch */
brs = 1;
canfd = 1; canfd = 1;
break; break;
@ -356,6 +359,8 @@ int main(int argc, char **argv)
if (canfd){ if (canfd){
mtu = CANFD_MTU; mtu = CANFD_MTU;
maxdlen = CANFD_MAX_DLEN; maxdlen = CANFD_MAX_DLEN;
if(brs)
frame.flags |= CANFD_BRS;
} else { } else {
mtu = CAN_MTU; mtu = CAN_MTU;
maxdlen = CAN_MAX_DLEN; maxdlen = CAN_MAX_DLEN;