jacd: print relevant API calls on verbose

The output is now comparable to testj1939's -v output.

Signed-off-by: Bastian Stender <bst@pengutronix.de>
pull/65/head
Bastian Stender 2018-01-22 11:44:24 +01:00
parent a7de2f68b7
commit 6133ac94f0
2 changed files with 20 additions and 1 deletions

View File

@ -86,6 +86,7 @@ canbusload.o: lib.h
log2long.o: lib.h log2long.o: lib.h
log2asc.o: lib.h log2asc.o: lib.h
asc2log.o: lib.h asc2log.o: lib.h
jacd.o: libj1939.h
jspy.o: libj1939.h jspy.o: libj1939.h
jsr.o: libj1939.h jsr.o: libj1939.h
testj1939.o: libj1939.h testj1939.o: libj1939.h
@ -100,7 +101,7 @@ log2long: log2long.o lib.o
log2asc: log2asc.o lib.o log2asc: log2asc.o lib.o
asc2log: asc2log.o lib.o asc2log: asc2log.o lib.o
canbusload: canbusload.o canframelen.o canbusload: canbusload.o canframelen.o
jacd: jacd.o libj1939.o
jspy: jspy.o libj1939.o jspy: jspy.o libj1939.o
jsr: jsr.o libj1939.o jsr: jsr.o libj1939.o
testj1939: testj1939.o libj1939.o testj1939: testj1939.o libj1939.o

18
jacd.c
View File

@ -25,6 +25,8 @@
#include <linux/can.h> #include <linux/can.h>
#include <linux/can/j1939.h> #include <linux/can/j1939.h>
#include "libj1939.h"
static const char help_msg[] = static const char help_msg[] =
"jacd: An SAE J1939 address claiming daemon" "\n" "jacd: An SAE J1939 address claiming daemon" "\n"
"Usage: jacd [options] NAME [INTF]" "\n" "Usage: jacd [options] NAME [INTF]" "\n"
@ -196,26 +198,36 @@ static int open_socket(const char *device, uint64_t name)
}, },
}; };
if (s.verbose)
fprintf(stderr, "- socket(PF_CAN, SOCK_DGRAM, CAN_J1939);\n");
sock = ret = socket(PF_CAN, SOCK_DGRAM, CAN_J1939); sock = ret = socket(PF_CAN, SOCK_DGRAM, CAN_J1939);
if (ret < 0) if (ret < 0)
error(1, errno, "socket(j1939)"); error(1, errno, "socket(j1939)");
if (s.verbose)
fprintf(stderr, "- setsockopt(, SOL_SOCKET, SO_BINDTODEVICE, %s, %zd);\n", device, strlen(device));
ret = setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, ret = setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE,
device, strlen(device)); device, strlen(device));
if (ret < 0) if (ret < 0)
error(1, errno, "bindtodevice %s", device); error(1, errno, "bindtodevice %s", device);
if (s.verbose)
fprintf(stderr, "- setsockopt(, SOL_CAN_J1939, SO_J1939_FILTER, <filter>, %zd);\n", sizeof(filt));
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_FILTER, ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_FILTER,
&filt, sizeof(filt)); &filt, sizeof(filt));
if (ret < 0) if (ret < 0)
error(1, errno, "setsockopt filter"); error(1, errno, "setsockopt filter");
value = 1; value = 1;
if (s.verbose)
fprintf(stderr, "- setsockopt(, SOL_CAN_J1939, SO_J1939_RECV_OWN, %d, %zd);\n", value, sizeof(value));
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_RECV_OWN, ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_RECV_OWN,
&value, sizeof(value)); &value, sizeof(value));
if (ret < 0) if (ret < 0)
error(1, errno, "setsockopt receive own msgs"); error(1, errno, "setsockopt receive own msgs");
if (s.verbose)
fprintf(stderr, "- bind(, %s, %zi);\n", libj1939_addr2str(&saddr), sizeof(saddr));
ret = bind(sock, (void *)&saddr, sizeof(saddr)); ret = bind(sock, (void *)&saddr, sizeof(saddr));
if (ret < 0) if (ret < 0)
error(1, errno, "bind()"); error(1, errno, "bind()");
@ -231,6 +243,8 @@ static int repeat_address(int sock, uint64_t name)
memcpy(dat, &name, 8); memcpy(dat, &name, 8);
if (!host_is_little_endian()) if (!host_is_little_endian())
bswap(dat, 8); bswap(dat, 8);
if (s.verbose)
fprintf(stderr, "- send(, %" PRId64 ", 8, 0);\n", name);
ret = send(sock, dat, 8, 0); ret = send(sock, dat, 8, 0);
if (must_warn(ret)) if (must_warn(ret))
error(1, errno, "send address claim for 0x%02x", s.last_sa); error(1, errno, "send address claim for 0x%02x", s.last_sa);
@ -248,6 +262,8 @@ static int claim_address(int sock, uint64_t name, int sa)
}, },
}; };
if (s.verbose)
fprintf(stderr, "- bind(, %s, %zi);\n", libj1939_addr2str(&saddr), sizeof(saddr));
ret = bind(sock, (void *)&saddr, sizeof(saddr)); ret = bind(sock, (void *)&saddr, sizeof(saddr));
if (ret < 0) if (ret < 0)
error(1, errno, "rebind with sa 0x%02x", sa); error(1, errno, "rebind with sa 0x%02x", sa);
@ -265,6 +281,8 @@ static int request_addresses(int sock)
.can_addr.j1939.addr = J1939_NO_ADDR, .can_addr.j1939.addr = J1939_NO_ADDR,
}; };
if (s.verbose)
fprintf(stderr, "- sendto(, { 0, 0xee, 0, }, %zi, 0, %s, %zi);\n", sizeof(dat), libj1939_addr2str(&saddr), sizeof(saddr));
ret = sendto(sock, dat, sizeof(dat), 0, (void *)&saddr, sizeof(saddr)); ret = sendto(sock, dat, sizeof(dat), 0, (void *)&saddr, sizeof(saddr));
if (must_warn(ret)) if (must_warn(ret))
error(1, errno, "send request for address claims"); error(1, errno, "send request for address claims");