]> rtime.felk.cvut.cz Git - can-benchmark.git/blobdiff - latester/latester.c
Dont print [ ] around frame
[can-benchmark.git] / latester / latester.c
index c94837c13f1cbc04428834b7c9b191b61dc93452..85288f75fec923477850ff012cc6ba7f9faecc09 100644 (file)
@@ -87,14 +87,32 @@ struct msg_info msg_infos[MAX_INFOS];
 
 struct histogram histogram;
 
-int can_frame_sprintf(char *buf, struct can_frame *frame)
-{
-       char datastr[17];
-       int i;
-       for (i=0; i<8; i++)
-               sprintf(&datastr[i*2], "%02x", frame->data[i]);
-       sprintf(buf, "id=0x%x, len=%d, data=%s",
-               frame->can_id, frame->can_dlc, datastr);
+void sprint_canframe(char *buf , struct can_frame *cf, int sep) {
+       /* documentation see lib.h */
+
+       int i,offset;
+       int dlc = (cf->can_dlc > 8)? 8 : cf->can_dlc;
+
+       if (cf->can_id & CAN_ERR_FLAG) {
+               sprintf(buf, "%08X#", cf->can_id & (CAN_ERR_MASK|CAN_ERR_FLAG));
+               offset = 9;
+       } else if (cf->can_id & CAN_EFF_FLAG) {
+               sprintf(buf, "%08X#", cf->can_id & CAN_EFF_MASK);
+               offset = 9;
+       } else {
+               sprintf(buf, "%03X#", cf->can_id & CAN_SFF_MASK);
+               offset = 4;
+       }
+
+       if (cf->can_id & CAN_RTR_FLAG) /* there are no ERR frames with RTR */
+               sprintf(buf+offset, "R");
+       else
+               for (i = 0; i < dlc; i++) {
+                       sprintf(buf+offset, "%02X", cf->data[i]);
+                       offset += 2;
+                       if (sep && (i+1 < dlc))
+                               sprintf(buf+offset++, ".");
+               }
 }
 
 static inline struct msg_info *frame2info(struct can_frame *frame)
@@ -124,19 +142,19 @@ void msg_info_print(FILE *f, struct msg_info *mi)
        static long num = 0;
        char sent[64], received[64];
 
-       can_frame_sprintf(sent, &mi->sent);
-       can_frame_sprintf(received, &mi->received);
+       sprint_canframe(sent, &mi->sent, true);
+       sprint_canframe(received, &mi->received, true);
 
 #define S(ts) tstamp_str(local, &ts)
 #define DIFF(a, b) (timespec_subtract(&diff, &b, &a), S(diff))
 
        if (num_interfaces == 2)
-               fprintf(f, "%ld: %s [%s] -> %s (%s) [%s] = %s (%s)\n",
+               fprintf(f, "%ld: %s %s -> %s (%s) %s = %s (%s)\n",
                        num, S(mi->ts_sent), sent, S(mi->ts_rx_final_kern), S(mi->ts_rx_final), received,
                       DIFF(mi->ts_sent, mi->ts_rx_final_kern),
                       DIFF(mi->ts_sent, mi->ts_rx_final));
        else
-               fprintf(f, "%ld: %s [%s] -> %s (%s) -> %s (%s) [%s] = %s (%s), %s (%s)\n",
+               fprintf(f, "%ld: %s %s -> %s (%s) -> %s (%s) %s = %s (%s), %s (%s)\n",
                        num, S(mi->ts_sent), sent,
                        S(mi->ts_rx_onwire_kern), S(mi->ts_rx_onwire),
                        S(mi->ts_rx_final_kern), S(mi->ts_rx_final), received,