Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 30 additions & 17 deletions src/state_bcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ int sc = -1;
void state_bcm()
{
int i, j, ret;
unsigned long long sec, usec;
struct sockaddr_can caddr;
socklen_t caddrlen = sizeof(caddr);
struct ifreq ifr;
Expand Down Expand Up @@ -106,7 +107,8 @@ void state_bcm()
if (msg.frame.can_dlc != CAN_ERR_DLC) {
PRINT_ERROR("Error frame has a wrong DLC!\n");
} else {
snprintf(rxmsg, RXLEN, "< error %03X %ld.%06ld ", msg.msg_head.can_id, tv.tv_sec, tv.tv_usec);
snprintf(rxmsg, RXLEN, "< error %03X %lld.%06lld ", msg.msg_head.can_id,
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);

for (i = 0; i < msg.frame.can_dlc; i++)
snprintf(rxmsg + strlen(rxmsg), RXLEN - strlen(rxmsg), "%02X ",
Expand All @@ -118,11 +120,13 @@ void state_bcm()
}
} else {
if (msg.msg_head.can_id & CAN_EFF_FLAG) {
snprintf(rxmsg, RXLEN, "< frame %08X %ld.%06ld ",
msg.msg_head.can_id & CAN_EFF_MASK, tv.tv_sec, tv.tv_usec);
snprintf(rxmsg, RXLEN, "< frame %08X %lld.%06lld ",
msg.msg_head.can_id & CAN_EFF_MASK,
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
} else {
snprintf(rxmsg, RXLEN, "< frame %03X %ld.%06ld ",
msg.msg_head.can_id & CAN_SFF_MASK, tv.tv_sec, tv.tv_usec);
snprintf(rxmsg, RXLEN, "< frame %03X %lld.%06lld ",
msg.msg_head.can_id & CAN_SFF_MASK,
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
}

for (i = 0; i < msg.frame.can_dlc; i++)
Expand Down Expand Up @@ -203,11 +207,12 @@ void state_bcm()
}
/* Add a send job */
} else if (!strncmp("< add ", buf, 6)) {
items = sscanf(buf, "< %*s %lu %lu %x %hhu "

items = sscanf(buf, "< %*s %llu %llu %x %hhu "
"%hhx %hhx %hhx %hhx %hhx %hhx "
"%hhx %hhx >",
&msg.msg_head.ival2.tv_sec,
&msg.msg_head.ival2.tv_usec,
&sec,
&usec,
&msg.msg_head.can_id,
&msg.frame.can_dlc,
&msg.frame.data[0],
Expand All @@ -230,6 +235,8 @@ void state_bcm()
if (element_length(buf, 4) == 8)
msg.msg_head.can_id |= CAN_EFF_FLAG;

msg.msg_head.ival2.tv_sec = sec;
msg.msg_head.ival2.tv_usec = usec;
msg.msg_head.opcode = TX_SETUP;
msg.msg_head.flags |= SETTIMER | STARTTIMER;
msg.frame.can_id = msg.msg_head.can_id;
Expand Down Expand Up @@ -299,11 +306,11 @@ void state_bcm()
}
/* Receive CAN ID with content matching */
} else if (!strncmp("< filter ", buf, 9)) {
items = sscanf(buf, "< %*s %lu %lu %x %hhu "
items = sscanf(buf, "< %*s %llu %llu %x %hhu "
"%hhx %hhx %hhx %hhx %hhx %hhx "
"%hhx %hhx >",
&msg.msg_head.ival2.tv_sec,
&msg.msg_head.ival2.tv_usec,
&sec,
&usec,
&msg.msg_head.can_id,
&msg.frame.can_dlc,
&msg.frame.data[0],
Expand All @@ -326,6 +333,8 @@ void state_bcm()
if (element_length(buf, 4) == 8)
msg.msg_head.can_id |= CAN_EFF_FLAG;

msg.msg_head.ival2.tv_sec = sec;
msg.msg_head.ival2.tv_usec = usec;
msg.msg_head.opcode = RX_SETUP;
msg.msg_head.flags = SETTIMER;
msg.frame.can_id = msg.msg_head.can_id;
Expand All @@ -342,9 +351,9 @@ void state_bcm()

memset(&muxmsg, 0, sizeof(muxmsg));

items = sscanf(buf, "< %*s %lu %lu %x %u ",
&muxmsg.msg_head.ival2.tv_sec,
&muxmsg.msg_head.ival2.tv_usec,
items = sscanf(buf, "< %*s %llu %llu %x %u ",
&sec,
&usec,
&muxmsg.msg_head.can_id,
&muxmsg.msg_head.nframes);

Expand All @@ -359,6 +368,8 @@ void state_bcm()
if (element_length(buf, 4) == 8)
muxmsg.msg_head.can_id |= CAN_EFF_FLAG;

msg.msg_head.ival2.tv_sec = sec;
msg.msg_head.ival2.tv_usec = usec;
muxmsg.msg_head.opcode = RX_SETUP;
muxmsg.msg_head.flags = SETTIMER;

Expand Down Expand Up @@ -404,9 +415,9 @@ void state_bcm()
}
/* Add a filter */
} else if (!strncmp("< subscribe ", buf, 12)) {
items = sscanf(buf, "< %*s %lu %lu %x >",
&msg.msg_head.ival2.tv_sec,
&msg.msg_head.ival2.tv_usec,
items = sscanf(buf, "< %*s %llu %llu %x >",
&sec,
&usec,
&msg.msg_head.can_id);

if (items != 3) {
Expand All @@ -418,6 +429,8 @@ void state_bcm()
if (element_length(buf, 4) == 8)
msg.msg_head.can_id |= CAN_EFF_FLAG;

msg.msg_head.ival2.tv_sec = sec;
msg.msg_head.ival2.tv_usec = usec;
msg.msg_head.opcode = RX_SETUP;
msg.msg_head.flags = RX_FILTER_ID | SETTIMER;
msg.frame.can_id = msg.msg_head.can_id;
Expand Down
3 changes: 2 additions & 1 deletion src/state_isotp.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,8 @@ void state_isotp()
if (items > 0 && items <= ISOTPLEN) {
int startlen;

sprintf(rxmsg, "< pdu %ld.%06ld ", tv.tv_sec, tv.tv_usec);
sprintf(rxmsg, "< pdu %lld.%06lld ", (signed long long) tv.tv_sec,
(signed long long) tv.tv_usec);
startlen = strlen(rxmsg);

for (i = 0; i < items; i++)
Expand Down
9 changes: 6 additions & 3 deletions src/state_raw.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,16 +118,19 @@ void state_raw()

if (frame.can_id & CAN_ERR_FLAG) {
canid_t class = frame.can_id & CAN_EFF_MASK;
ret = sprintf(buf, "< error %03X %ld.%06ld >", class, tv.tv_sec, tv.tv_usec);
ret = sprintf(buf, "< error %03X %lld.%06lld >", class,
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
send(client_socket, buf, strlen(buf), 0);
tcp_quickack(client_socket);
} else if (frame.can_id & CAN_RTR_FLAG) {
/* TODO implement */
} else {
if (frame.can_id & CAN_EFF_FLAG) {
ret = sprintf(buf, "< frame %08X %ld.%06ld ", frame.can_id & CAN_EFF_MASK, tv.tv_sec, tv.tv_usec);
ret = sprintf(buf, "< frame %08X %lld.%06lld ", frame.can_id & CAN_EFF_MASK,
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
} else {
ret = sprintf(buf, "< frame %03X %ld.%06ld ", frame.can_id & CAN_SFF_MASK, tv.tv_sec, tv.tv_usec);
ret = sprintf(buf, "< frame %03X %lld.%06lld ", frame.can_id & CAN_SFF_MASK,
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
}
for (i = 0; i < frame.can_dlc; i++) {
ret += sprintf(buf + ret, "%02X", frame.data[i]);
Expand Down
Loading