32 Commits
Author SHA1 Message Date
Oleksij RempelandOleksij Rempel 42edaeaf52 Implement ISOBUS File Server (FS) Interface as a Personal Project
Introduce the ISOBUS File Server (FS) interface, compatible with ISO
11783-13. The implementation utilizes the kernel's existing CAN J1939
socket support.

For testing following setup can be used:
ip link add type vcan
ip l s dev vcan0 up

j1939acd -r 64-95 -c /tmp/1122334455667788.jacd 1122334455667788 vcan0 &
j1939acd -r 96-127 -c /tmp/1122334455667789.jacd 1122334455667789 vcan0 &

sleep 1

isobusfs-srv -i vcan0 -n 1122334455667788 -v vol1:/path/to/export/
isobusfs-cli -i vcan0 -n 0x1122334455667789 -m 0x1122334455667788 -I

Interactive mode currently support following commands:
exit - exit interactive mode
quit - exit interactive mode
help - show this help
dmesg - show log buffer
selftest - run selftest
ls - list directory
ll - list directory with long listing format
cd - change directory
pwd - print name of current/working directory
get - get file

Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
2024-02-02 13:44:07 +01:00
Oleksij Rempel cc155d2f63 j1939cat: make use of new RX UAPI
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2021-08-20 13:38:42 +02:00
Oleksij Rempel 0107f07d83 include: import j1939.h from kernel v5.14-rc5+netdev-next
Import latest j1939.h to provide support for the RX state notifications

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2021-08-20 10:21:20 +02:00
Oleksij RempelandOliver Hartkopp ea844bdc5e Document J1939 commands
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2020-08-21 16:11:41 +02:00
Oleksij Rempel c912d6f8d5 testj1939: print proper offset in the data damp
without this patch we will always print "0008" on each line

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2020-08-07 15:01:43 +02:00
Oleksij Rempel 327587b2c8 j1939cat: add broadcast support
Allow to use j1939cat to send and receive broadcast (TP.BAM) messages.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2020-08-07 14:14:38 +02:00
Oleksij Rempel 1f5c9638ab j1939acd: unify debug messages
Most of verbose messages are already stderr, make sure, rest of them do
the same.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2020-06-12 14:37:22 +02:00
Oleksij Rempel 1d3125bef2 j1939acd: do not exit on debug messages
Some debug messages were implemented using err(), which does not return,
but exit the program. This patches replaces the debug messages by
fprintf(stdout, ).

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2020-06-12 14:24:58 +02:00
Oleksij Rempel a8456276df jacd: remove SO_BINDTODEVICE setsockopt call
This was used in the non mainline stack version.
Removing this call allows to use jacd without root permissions.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-12-06 11:24:44 +01:00
Oleksij Rempel 153501c0ab can-j1939-kickstart: remove "Use source address" example
This example do not really demonstrate UAPI or testj1939 functionality.
So, remove it.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-12-02 08:29:45 +01:00
Oleksij Rempel 8cf6353039 can-j1939-kickstart: update documentation for testj1939
testj1939 need to use -B (broadcast) flag to be able to send or receive
broadcast packages.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-11-29 14:16:04 +01:00
Oleksij Rempel 5d3f8073b2 testj1939: add optional promiscuous mode and boradcast support
Upstream version of J1939 stack has different UAPI. To make documented
testj1939 examples work again we need at least boradcast flag.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-11-29 13:53:55 +01:00
Oleksij Rempel 7337cb12de j1939: drop SO_J1939_RECV_OWN support
SO_J1939_RECV_OWN is no longer supported by the kernel. So, sync the
headers and rework jacd.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-08-26 11:03:36 +02:00
Oleksij Rempel d5ba0e2d23 can/j1939.h: sync with latest kernel state
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-08-26 11:03:36 +02:00
Oleksij Rempel c4e68aff78 jcat: get status for all queued messages
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-06-25 07:36:36 +02:00
Oleksij Rempel 0e542c8dba jcat: make sure we can use decimal numbers for repeat parameter
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-06-24 13:53:31 +02:00
Oleksij RempelandMarc Kleine-Budde 25025d05ae jcat: add repeat support
Add option to resend same data without closing the socket.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-05-09 14:40:16 +02:00
Oleksij RempelandMarc Kleine-Budde edcce70373 jcat: provide errqueue support
The J1939 errqueue is a feedback interface to notify userspace
applications about actual transfer status. For now we can get
information about amount of data already send to the peer and errors
if session was aborted.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-05-09 14:40:16 +02:00
Oleksij RempelandMarc Kleine-Budde 05368ef1ae jcat: rework poller
Make poller to be a main part of the send loop. It should make
application more understandable.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-05-09 14:40:16 +02:00
Oleksij RempelandMarc Kleine-Budde 05a66d63fa jcat: enable polling by default
and set more or less meaningful default value.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-05-09 14:40:16 +02:00
Oleksij RempelandMarc Kleine-Budde 9ff370ea82 include: add errqueue.h, net_tstamp.h, netlink.h
this headers are take from kernel v5.0 and needed for
error queue support.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-05-09 14:36:53 +02:00
Oleksij Rempel 5e342e3c50 libj1939: fix name parsing
name is 8 byte long.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-05-09 12:09:11 +02:00
Oleksij Rempel 38fa644069 include: import header files from linux-5.0 (including new j1939 filter struct)
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-05-08 10:53:00 +02:00
Oleksij RempelandMarc Kleine-Budde b931fb514c jcat: add missing close of outfile and j1939 socket
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2019-04-04 10:45:33 +02:00
Oleksij RempelandMarc Kleine-Budde 7192b0b9d7 jacd: set SO_BROADCAST
with latest UAPI version we should set this flag to be allowed to send
broadcast frames with broadcast destination address. Even if on CAN
every thing is a broadcast...

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2019-04-04 10:37:52 +02:00
Oleksij RempelandMarc Kleine-Budde b8a2fa319a jacd: use sendto instead of send
Accordint to the new UAPI version, bind() with PGN set, should not be used
for destination PGN.

This change should work with new and old version of UAPI.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2019-04-04 10:37:49 +02:00
Oleksij RempelandMarc Kleine-Budde 314f8a92ae j1939: use defines instead of magic values
for now cover most of PGN values.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2019-04-04 10:37:39 +02:00
Oleksij Rempel 5551de5e56 testj1939: split output string in to 8 byte strings
Currently if we send lots of bytes, test1939 output will get unreadable.
Make it easier to read by splitting output dump.
New format will looks as following example:
root@DistroKit:~ testj1939 can0:0x90 -r
80 12300: 01 23 45 67 89 ab cd ef
00008     01 23 45 67 89 ab cd ef
00010     01 23 45 67 89 ab cd ef
00018     01 23 45 67 89 ab cd ef
00020     01 23 45 67 89 ab cd ef
00028     01 23 45 67 89 ab cd ef
00030     01 23 45 67 89 ab cd ef
00038     01 23 45 67 89 ab cd ef
00040     01 23 45 67 89 ab cd ef
00048     01 23 45 67 89 ab cd ef
00050     01 23 45 67 89 ab cd ef
00058     01 23 45 67 89 ab cd ef
00060     01 23 45 67 89 ab cd ef
00068     01 23 45 67 89 ab cd ef
00070     01 23 45 67 89 ab cd ef
00078     01 23 45 67 89 ab cd ef

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-01-14 09:19:51 +01:00
Oleksij Rempel ed5b495da6 testj1939: fail if we use unsupported size
Currently if we set size which is more then 128 byte
will silently ignore provided value and send only maximal
supported size.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-01-14 09:16:05 +01:00
Oleksij Rempel 5b68a2cef1 jcat: inverse if logic
it was if(offset != NULL), so it should be if(offset)

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-01-04 14:40:07 +01:00
Oleksij Rempel 23e5e227ac add jcat
jcat is kind of netcat for j1939
for example:
jcat can0:0x90 -r > /tmp/some_file

jcat -i some_file_to_send can0:0x80 :0x90,0x12300

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-01-04 13:01:11 +01:00
Oleksij Rempel e649b6ee2a libj1939: add libj1939_parse_canaddr and reuse it by testj1939
this function will be needed jcat

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
2019-01-04 13:00:33 +01:00