canbusload: count full payload for CANFD frames

Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
pull/301/head
Kurt Van Dijck 2021-06-24 05:17:32 +02:00
parent e9dd86fa5c
commit e319afb10f
1 changed files with 9 additions and 4 deletions

View File

@ -237,7 +237,7 @@ int main(int argc, char **argv)
int opt; int opt;
char *ptr, *nptr; char *ptr, *nptr;
struct sockaddr_can addr; struct sockaddr_can addr;
struct can_frame frame; struct canfd_frame frame;
int nbytes, i; int nbytes, i;
struct ifreq ifr; struct ifreq ifr;
sigset_t sigmask, savesigmask; sigset_t sigmask, savesigmask;
@ -351,6 +351,9 @@ int main(int argc, char **argv)
#ifdef DEBUG #ifdef DEBUG
printf("using interface name '%s'.\n", ifr.ifr_name); printf("using interface name '%s'.\n", ifr.ifr_name);
#endif #endif
/* try to switch the socket into CAN FD mode */
const int canfd_on = 1;
setsockopt(s[i], SOL_CAN_RAW, CAN_RAW_FD_FRAMES, &canfd_on, sizeof(canfd_on));
if (ioctl(s[i], SIOCGIFINDEX, &ifr) < 0) { if (ioctl(s[i], SIOCGIFINDEX, &ifr) < 0) {
perror("SIOCGIFINDEX"); perror("SIOCGIFINDEX");
@ -402,9 +405,11 @@ int main(int argc, char **argv)
} }
stat[i].recv_frames++; stat[i].recv_frames++;
stat[i].recv_bits_payload += frame.can_dlc*8; stat[i].recv_bits_payload += frame.len * 8;
stat[i].recv_bits_total += can_frame_length((struct canfd_frame*)&frame, stat[i].recv_bits_dbitrate += can_frame_dbitrate_length(
mode, sizeof(frame)); &frame, mode, sizeof(frame));
stat[i].recv_bits_total += can_frame_length(&frame,
mode, nbytes);
} }
} }
} }