From: Sven Schmitt Date: Sun, 11 Oct 2015 19:08:45 +0000 (+0200) Subject: cangen: added -b switch enabling bitrate switch in canfd frames. X-Git-Url: https://rtime.felk.cvut.cz/gitweb/can-utils.git/commitdiff_plain/4a154cf3c4cec70596f93aa5c5e36a37d0f66f07?ds=sidebyside cangen: added -b switch enabling bitrate switch in canfd frames. Signed-off-by: Sven Schmitt Acked-by: Oliver Hartkopp Signed-off-by: Marc Kleine-Budde --- diff --git a/cangen.c b/cangen.c index eb898f1..cd2228e 100644 --- a/cangen.c +++ b/cangen.c @@ -84,8 +84,10 @@ void print_usage(char *prg) 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 -R frames)\n"); + fprintf(stderr, " -m (mix -e -f -b -R frames)\n"); fprintf(stderr, " -I (CAN ID" " generation mode - see below)\n"); fprintf(stderr, " -L (CAN data length code (dlc)" @@ -136,6 +138,7 @@ int main(int argc, char **argv) unsigned char ignore_enobufs = 0; unsigned char extended = 0; unsigned char canfd = 0; + unsigned char brs = 0; unsigned char mix = 0; unsigned char id_mode = MODE_RANDOM; unsigned char data_mode = MODE_RANDOM; @@ -170,7 +173,7 @@ int main(int argc, char **argv) signal(SIGHUP, sigterm); signal(SIGINT, sigterm); - while ((opt = getopt(argc, argv, "ig:efmI:L:D:xp:n:vRh?")) != -1) { + while ((opt = getopt(argc, argv, "ig:ebfmI:L:D:xp:n:vRh?")) != -1) { switch (opt) { case 'i': @@ -189,6 +192,11 @@ int main(int argc, char **argv) canfd = 1; break; + case 'b': + brs = 1; /* bitrate switch implies CAN FD */ + canfd = 1; + break; + case 'm': mix = 1; canfd = 1; /* to switch the socket into CAN FD mode */ @@ -356,6 +364,8 @@ int main(int argc, char **argv) if (canfd){ mtu = CANFD_MTU; maxdlen = CANFD_MAX_DLEN; + if (brs) + frame.flags |= CANFD_BRS; } else { mtu = CAN_MTU; maxdlen = CAN_MAX_DLEN; @@ -476,7 +486,9 @@ resend: i = random(); extended = i&1; canfd = i&2; - rtr_frame = ((i&12) == 12); /* reduce RTR frames to 1/4 */ + if (canfd) + brs = i&4; + rtr_frame = ((i&24) == 24); /* reduce RTR frames to 1/4 */ } }