Skip to content

Commit 7b5e91e

Browse files
Merge pull request #68 from jhofstee/timevals
always use 64-bit for timevals
2 parents 51c4ad6 + f978443 commit 7b5e91e

File tree

3 files changed

+38
-21
lines changed

3 files changed

+38
-21
lines changed

src/state_bcm.c

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ int sc = -1;
3232
void state_bcm()
3333
{
3434
int i, j, ret;
35+
unsigned long long sec, usec;
3536
struct sockaddr_can caddr;
3637
socklen_t caddrlen = sizeof(caddr);
3738
struct ifreq ifr;
@@ -106,7 +107,8 @@ void state_bcm()
106107
if (msg.frame.can_dlc != CAN_ERR_DLC) {
107108
PRINT_ERROR("Error frame has a wrong DLC!\n");
108109
} else {
109-
snprintf(rxmsg, RXLEN, "< error %03X %ld.%06ld ", msg.msg_head.can_id, tv.tv_sec, tv.tv_usec);
110+
snprintf(rxmsg, RXLEN, "< error %03X %lld.%06lld ", msg.msg_head.can_id,
111+
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
110112

111113
for (i = 0; i < msg.frame.can_dlc; i++)
112114
snprintf(rxmsg + strlen(rxmsg), RXLEN - strlen(rxmsg), "%02X ",
@@ -118,11 +120,13 @@ void state_bcm()
118120
}
119121
} else {
120122
if (msg.msg_head.can_id & CAN_EFF_FLAG) {
121-
snprintf(rxmsg, RXLEN, "< frame %08X %ld.%06ld ",
122-
msg.msg_head.can_id & CAN_EFF_MASK, tv.tv_sec, tv.tv_usec);
123+
snprintf(rxmsg, RXLEN, "< frame %08X %lld.%06lld ",
124+
msg.msg_head.can_id & CAN_EFF_MASK,
125+
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
123126
} else {
124-
snprintf(rxmsg, RXLEN, "< frame %03X %ld.%06ld ",
125-
msg.msg_head.can_id & CAN_SFF_MASK, tv.tv_sec, tv.tv_usec);
127+
snprintf(rxmsg, RXLEN, "< frame %03X %lld.%06lld ",
128+
msg.msg_head.can_id & CAN_SFF_MASK,
129+
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
126130
}
127131

128132
for (i = 0; i < msg.frame.can_dlc; i++)
@@ -203,11 +207,12 @@ void state_bcm()
203207
}
204208
/* Add a send job */
205209
} else if (!strncmp("< add ", buf, 6)) {
206-
items = sscanf(buf, "< %*s %lu %lu %x %hhu "
210+
211+
items = sscanf(buf, "< %*s %llu %llu %x %hhu "
207212
"%hhx %hhx %hhx %hhx %hhx %hhx "
208213
"%hhx %hhx >",
209-
&msg.msg_head.ival2.tv_sec,
210-
&msg.msg_head.ival2.tv_usec,
214+
&sec,
215+
&usec,
211216
&msg.msg_head.can_id,
212217
&msg.frame.can_dlc,
213218
&msg.frame.data[0],
@@ -230,6 +235,8 @@ void state_bcm()
230235
if (element_length(buf, 4) == 8)
231236
msg.msg_head.can_id |= CAN_EFF_FLAG;
232237

238+
msg.msg_head.ival2.tv_sec = sec;
239+
msg.msg_head.ival2.tv_usec = usec;
233240
msg.msg_head.opcode = TX_SETUP;
234241
msg.msg_head.flags |= SETTIMER | STARTTIMER;
235242
msg.frame.can_id = msg.msg_head.can_id;
@@ -299,11 +306,11 @@ void state_bcm()
299306
}
300307
/* Receive CAN ID with content matching */
301308
} else if (!strncmp("< filter ", buf, 9)) {
302-
items = sscanf(buf, "< %*s %lu %lu %x %hhu "
309+
items = sscanf(buf, "< %*s %llu %llu %x %hhu "
303310
"%hhx %hhx %hhx %hhx %hhx %hhx "
304311
"%hhx %hhx >",
305-
&msg.msg_head.ival2.tv_sec,
306-
&msg.msg_head.ival2.tv_usec,
312+
&sec,
313+
&usec,
307314
&msg.msg_head.can_id,
308315
&msg.frame.can_dlc,
309316
&msg.frame.data[0],
@@ -326,6 +333,8 @@ void state_bcm()
326333
if (element_length(buf, 4) == 8)
327334
msg.msg_head.can_id |= CAN_EFF_FLAG;
328335

336+
msg.msg_head.ival2.tv_sec = sec;
337+
msg.msg_head.ival2.tv_usec = usec;
329338
msg.msg_head.opcode = RX_SETUP;
330339
msg.msg_head.flags = SETTIMER;
331340
msg.frame.can_id = msg.msg_head.can_id;
@@ -342,9 +351,9 @@ void state_bcm()
342351

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

345-
items = sscanf(buf, "< %*s %lu %lu %x %u ",
346-
&muxmsg.msg_head.ival2.tv_sec,
347-
&muxmsg.msg_head.ival2.tv_usec,
354+
items = sscanf(buf, "< %*s %llu %llu %x %u ",
355+
&sec,
356+
&usec,
348357
&muxmsg.msg_head.can_id,
349358
&muxmsg.msg_head.nframes);
350359

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

371+
msg.msg_head.ival2.tv_sec = sec;
372+
msg.msg_head.ival2.tv_usec = usec;
362373
muxmsg.msg_head.opcode = RX_SETUP;
363374
muxmsg.msg_head.flags = SETTIMER;
364375

@@ -404,9 +415,9 @@ void state_bcm()
404415
}
405416
/* Add a filter */
406417
} else if (!strncmp("< subscribe ", buf, 12)) {
407-
items = sscanf(buf, "< %*s %lu %lu %x >",
408-
&msg.msg_head.ival2.tv_sec,
409-
&msg.msg_head.ival2.tv_usec,
418+
items = sscanf(buf, "< %*s %llu %llu %x >",
419+
&sec,
420+
&usec,
410421
&msg.msg_head.can_id);
411422

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

432+
msg.msg_head.ival2.tv_sec = sec;
433+
msg.msg_head.ival2.tv_usec = usec;
421434
msg.msg_head.opcode = RX_SETUP;
422435
msg.msg_head.flags = RX_FILTER_ID | SETTIMER;
423436
msg.frame.can_id = msg.msg_head.can_id;

src/state_isotp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ void state_isotp()
175175
if (items > 0 && items <= ISOTPLEN) {
176176
int startlen;
177177

178-
sprintf(rxmsg, "< pdu %ld.%06ld ", tv.tv_sec, tv.tv_usec);
178+
sprintf(rxmsg, "< pdu %lld.%06lld ", (signed long long) tv.tv_sec,
179+
(signed long long) tv.tv_usec);
179180
startlen = strlen(rxmsg);
180181

181182
for (i = 0; i < items; i++)

src/state_raw.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,16 +128,19 @@ void state_raw()
128128

129129
if (frame.can_id & CAN_ERR_FLAG) {
130130
canid_t class = frame.can_id & CAN_EFF_MASK;
131-
ret = sprintf(buf, "< error %03X %ld.%06ld >", class, tv.tv_sec, tv.tv_usec);
131+
ret = sprintf(buf, "< error %03X %lld.%06lld >", class,
132+
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
132133
send(client_socket, buf, strlen(buf), 0);
133134
tcp_quickack(client_socket);
134135
} else if (frame.can_id & CAN_RTR_FLAG) {
135136
/* TODO implement */
136137
} else {
137138
if (frame.can_id & CAN_EFF_FLAG) {
138-
ret = sprintf(buf, "< frame %08X %ld.%06ld ", frame.can_id & CAN_EFF_MASK, tv.tv_sec, tv.tv_usec);
139+
ret = sprintf(buf, "< frame %08X %lld.%06lld ", frame.can_id & CAN_EFF_MASK,
140+
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
139141
} else {
140-
ret = sprintf(buf, "< frame %03X %ld.%06ld ", frame.can_id & CAN_SFF_MASK, tv.tv_sec, tv.tv_usec);
142+
ret = sprintf(buf, "< frame %03X %lld.%06lld ", frame.can_id & CAN_SFF_MASK,
143+
(signed long long) tv.tv_sec, (signed long long) tv.tv_usec);
141144
}
142145
for (i = 0; i < frame.can_dlc; i++) {
143146
ret += sprintf(buf + ret, "%02X", frame.data[i]);

0 commit comments

Comments
 (0)