idx = idx2dindex(addr.can_ifindex, s[i]);
+ /* once we detected a EFF frame indent SFF frames accordingly */
+ if (frame.can_id & CAN_EFF_FLAG)
+ view |= CANLIB_VIEW_INDENT_SFF;
+
if (log) {
/* log CAN frame with absolute timestamp & device */
fprintf(logfile, "(%ld.%06ld) ", tv.tv_sec, tv.tv_usec);
printf("%s (%s) ", get_txname(device), device);
if (txmtu == CAN_MTU)
- fprint_long_canframe(stdout, &frame, "\n", 0, CAN_MAX_DLEN);
+ fprint_long_canframe(stdout, &frame, "\n", CANLIB_VIEW_INDENT_SFF, CAN_MAX_DLEN);
else
- fprint_long_canframe(stdout, &frame, "\n", 0, CANFD_MAX_DLEN);
+ fprint_long_canframe(stdout, &frame, "\n", CANLIB_VIEW_INDENT_SFF, CANFD_MAX_DLEN);
}
}
sprintf(buf, "%08X ", cf->can_id & CAN_EFF_MASK);
offset = 10;
} else {
- sprintf(buf, "%03X ", cf->can_id & CAN_SFF_MASK);
- offset = 5;
+ if (view & CANLIB_VIEW_INDENT_SFF) {
+ sprintf(buf, " %03X ", cf->can_id & CAN_SFF_MASK);
+ offset = 10;
+ } else {
+ sprintf(buf, "%03X ", cf->can_id & CAN_SFF_MASK);
+ offset = 5;
+ }
}
if (maxdlen == CAN_MAX_DLEN) {
#define CANLIB_VIEW_BINARY 0x2
#define CANLIB_VIEW_SWAP 0x4
#define CANLIB_VIEW_ERROR 0x8
+#define CANLIB_VIEW_INDENT_SFF 0x10
#define SWAP_DELIMITER '`'
* 20001111 [7] C6 23 7B 32 69 98 3C ERRORFRAME -> (CAN_ERR_FLAG set)
* 12345678 [03] 11 22 33 -> CAN FD with exended CAN-Id = 0x12345678, dlc = 3
*
+ * 123 [3] 11 22 33 -> CANLIB_VIEW_INDENT_SFF == 0
+ * 123 [3] 11 22 33 -> CANLIB_VIEW_INDENT_SFF == set
+ *
* Examples:
*
* // CAN FD frame with eol to STDOUT
}
sprint_long_canframe(ascframe, &cf,
- CANLIB_VIEW_ASCII,
+ (CANLIB_VIEW_INDENT_SFF | CANLIB_VIEW_ASCII),
maxdlen); /* with ASCII output */
printf("%s %s %s\n", timestamp, device, ascframe);