2 Commits
Author SHA1 Message Date
JamesandGitHub e467cb1c09 Merge 87cdf4dc84 into 95aae6bf83 2026-05-25 14:43:07 +08:00
James Browning 87cdf4dc84 Move 'gap' of canplayer between frames not logs.
For when -t was too fast, and sans -t, takes too long.
2026-03-03 16:43:52 -08:00
2 changed files with 13 additions and 19 deletions
+3 -3
View File
@@ -580,10 +580,10 @@ int main(int argc, char **argv)
last_log_tv = log_tv;
}
} /* while frames_to_send ... */
if (nanosleep(&sleep_ts, NULL))
return 1;
if (nanosleep(&sleep_ts, NULL))
return 1;
} /* while frames_to_send ... */
delay_loops++; /* private statistics */
gettimeofday(&today_tv, NULL);
+10 -16
View File
@@ -170,23 +170,21 @@ int parse_canframe(char *cs, union cfu *cu)
memset(cu, 0, sizeof(*cu)); /* init CAN CC/FD/XL frame, e.g. LEN = 0 */
if (len >= 4 && cs[3] == CANID_DELIM) { /* 3 digits SFF CAN ID */
if (len < 4)
return 0;
idx = 4; /* start of frame data */
if (cs[3] == CANID_DELIM) { /* 3 digits SFF */
/* get 3 digits SFF CAN ID value */
idx = 4;
for (i = 0; i < 3; i++) {
if ((tmp = asc2nibble(cs[i])) > 0x0F)
return 0;
cu->cc.can_id |= tmp << (2 - i) * 4;
}
} else if (len >= 21 && cs[5] == CANID_DELIM && cs[20] == CANID_DELIM) {
/* 5 digits CAN XL VCID/PRIO - but also check for 2nd '#' here */
} else if (cs[5] == CANID_DELIM) { /* 5 digits CAN XL VCID/PRIO*/
idx = 6; /* start of CAN XL frame extra content (AF, SDT, etc) */
/* get 5 digits CAN XL VCID/PRIO */
idx = 6;
for (i = 0; i < 5; i++) {
if ((tmp = asc2nibble(cs[i])) > 0x0F)
return 0;
@@ -198,11 +196,9 @@ int parse_canframe(char *cs, union cfu *cu)
cu->xl.prio &= CANXL_PRIO_MASK;
cu->xl.prio |= tmp;
} else if (len >= 9 && cs[8] == CANID_DELIM) { /* 8 digits EFF CAN ID */
} else if (cs[8] == CANID_DELIM) { /* 8 digits EFF */
idx = 9; /* start of frame data */
/* get 8 digits EFF CAN ID value */
idx = 9;
for (i = 0; i < 8; i++) {
if ((tmp = asc2nibble(cs[i])) > 0x0F)
return 0;
@@ -243,12 +239,11 @@ int parse_canframe(char *cs, union cfu *cu)
cu->fd.flags |= CANFD_FDF; /* dual-use */
idx += 2;
} else if (idx == 6) { /* CAN XL frame extra content '#80:00:11223344#' */
} else if (cs[idx + 14] == CANID_DELIM) { /* CAN XL frame '#80:00:11223344#' */
maxdlen = CANXL_MAX_DLEN;
mtu = CANXL_MTU;
data = cu->xl.data; /* overwrite pointer to CAN XL data */
data = cu->xl.data; /* fill CAN XL data */
/* get CAN XL frame extra content */
if ((cs[idx + 2] != XL_HDR_DELIM) || (cs[idx + 5] != XL_HDR_DELIM))
return 0;
@@ -282,7 +277,6 @@ int parse_canframe(char *cs, union cfu *cu)
idx++; /* skip CANID_DELIM */
}
/* copy CAN frame data content */
for (i = 0, dlen = 0; i < maxdlen; i++) {
if (cs[idx] == DATA_SEPERATOR) /* skip (optional) separator */
idx++;