1 /**************************************************************/
2 /* CAN system calls example */
3 /* Author: Michal Sojka, Czech Technical University in Prague */
4 /* License: Public domain */
5 /**************************************************************/
10 #include <linux/can.h>
14 #define STRINGIFY(val) #val
15 #define TOSTRING(val) STRINGIFY(val)
18 * Evaluate expression cmd and if its value is -1, print an error
19 * message with perror().
21 * @return Result of cmd evaluation
23 #define CHECK(cmd) ({ int ret = (cmd); if (ret == -1) { perror(#cmd " line " TOSTRING(__LINE__)); exit(1); }; ret; })
24 #define CHECKPTR(cmd) ({ void *ptr = (cmd); if (ptr == (void*)-1) { perror(#cmd " line " TOSTRING(__LINE__)); exit(1); }; ptr; })
26 char *candump_parse_args(int argc, char *argv[])
29 fprintf(stderr, "Usage: %s <CAN interface>\n", argv[0]);
35 void print_can_frame(const struct can_frame *cf)
39 printf("%#010x [%d]", cf->can_id, cf->can_dlc);
40 for (i = 0; i < cf->can_dlc; i++)
41 printf(" %02x", cf->data[i]);