cangen: added -b switch enabling bitrate switch in canfd frames.
Signed-off-by: Sven Schmitt <sven.schmitt@gmx.net> Acked-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>pull/16/head
parent
3f04e8a1fe
commit
4a154cf3c4
18
cangen.c
18
cangen.c
|
|
@ -84,8 +84,10 @@ void print_usage(char *prg)
|
||||||
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 (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, " -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 <mode> (CAN ID"
|
fprintf(stderr, " -I <mode> (CAN ID"
|
||||||
" generation mode - see below)\n");
|
" generation mode - see below)\n");
|
||||||
fprintf(stderr, " -L <mode> (CAN data length code (dlc)"
|
fprintf(stderr, " -L <mode> (CAN data length code (dlc)"
|
||||||
|
|
@ -136,6 +138,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 +173,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:ebfmI:L:D:xp:n:vRh?")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
|
|
||||||
case 'i':
|
case 'i':
|
||||||
|
|
@ -189,6 +192,11 @@ int main(int argc, char **argv)
|
||||||
canfd = 1;
|
canfd = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'b':
|
||||||
|
brs = 1; /* bitrate switch implies CAN FD */
|
||||||
|
canfd = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
mix = 1;
|
mix = 1;
|
||||||
canfd = 1; /* to switch the socket into CAN FD mode */
|
canfd = 1; /* to switch the socket into CAN FD mode */
|
||||||
|
|
@ -356,6 +364,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;
|
||||||
|
|
@ -476,7 +486,9 @@ resend:
|
||||||
i = random();
|
i = random();
|
||||||
extended = i&1;
|
extended = i&1;
|
||||||
canfd = i&2;
|
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 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue