Commit Graph

470 Commits (d66295ee75c42a42119bb741676b5c77dbb4af6f)

Author SHA1 Message Date
Yegor Yefremov f0abaaacb0 Include linux/sockios.h to fix musl build
Including <sys/ioctl.h> and <net/if.h> is not sufficient
to musl to find SIOCSIFNAME, so <linux/sockios.h> must be
included too.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
2015-07-22 21:12:51 +02:00
Yegor Yefremov 48a0fdb941 log2asc: include sys/time.h
Without this patch compilation against musl C library
breaks, because struct timeval cannot be found.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
2015-07-22 21:12:44 +02:00
Marc Kleine-Budde 58716c1c29 can-calc-bit-timing: add some more timings for mscan and flexcan
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-06-30 21:04:13 +02:00
Sven Schmitt f5fb7317aa treewide: use if_nametoindex to avoid overflows
replaced strcpy(if_name, argv[x]) + ioctl by if_idx = if_nametoindex(argv[x])
to avoid overflows caused by long user input.

Signed-off-by: Sven Schmitt <sven.schmitt@gmx.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-06-30 21:00:04 +02:00
Oliver Hartkopp 8af831f377 cangw: introduce uid command line option
Similar to referencing iptables rules by their line number this UID allows to
reference created routing jobs, e.g. to alter configured data modifications.

The UID is an optional non-zero value which can be provided at routing job
creation time. When the UID is set the UID replaces the data modification
configuration as job identification attribute e.g. at job removal time.

The UID option is provided by mainline Linux 4.2+

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-06-11 20:48:43 +02:00
bombilee dc374b074b add 'v' command response
add v command response. Some software like USBtinViewer using v for software version.
Tested on USBtinViewer 1.0

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-05-08 13:00:15 +02:00
Yegor Yefremov 5846246ddd canplayer: convert skipgap to unsigned long
The result of (last_log_tv.tv_sec - log_tv.tv_sec) is
unsigned long, so use labs() in order not to trim the
value to int. Make skipgap to unsigned long for the same
reason.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-04-10 21:20:58 +02:00
Oliver Hartkopp 47fbe8fec2 candump: check for joined filter support at runtime
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-04-01 12:58:27 +02:00
Oliver Hartkopp 1a2467ed29 candump: support new raw socket option to join the given CAN filters
The CAN_RAW socket can set multiple CAN identifier specific filters that lead
to multiple filters in the af_can.c filter processing. These filters are
indenpendent from each other which leads to logical OR'ed filters when applied.

This socket option joines the given CAN filters in the way that only CAN frames
are passed to user space that matched *all* given CAN filters. The semantic for
the applied filters is therefore changed to a logical AND.

This is useful especially when the filterset is a combination of filters where
the CAN_INV_FILTER flag is set in order to notch single CAN IDs or CAN ID
ranges from the incoming traffic.

Example:
	candump can0,100~7FF,200~7FF,400~7FF	(logical OR'ed filters)
	candump can0,100~7FF,200~7FF,400~7FF,J	(logical AND'ed filters)

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-03-17 20:30:54 +01:00
Yegor Yefremov 0eb1e3db2e autotools: define N_SLCAN, if not already declared
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-03-08 18:39:19 +01:00
Robert Schwebel 6fa3473c74 gitignore: add isotpperf
Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-03-06 10:02:35 +01:00
Robert Schwebel b9f211319d janitorial: log2asc: properly close infile and outfile
Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-03-06 10:02:35 +01:00
Robert Schwebel dfabea6120 janitorial: asc2log: properly close infile
outfile is closed as well, so do this symmetrically for infile.

Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-03-06 10:02:35 +01:00
Marc Kleine-Budde ef968b91b3 configure: switch to new libtool-2.0 macro
It's been out for a while now.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-03-04 21:09:39 +01:00
Marc Kleine-Budde 002f8eba87 isotp: fix printf warning on 32 bit systems
Use "z" modifier to print sizeof() values.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-03-03 08:29:36 +01:00
Oliver Hartkopp e71816295b isotpperf: print link layer data length of measured PDU
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-02-23 10:37:13 +01:00
Oliver Hartkopp 7e1b18f756 isotpperf: display bitrate setting status in summary
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-02-23 10:22:59 +01:00
Oliver Hartkopp 97f64049ac isotpperf: fix printed FC STMin value
Additionally remove the already removed -f option from the help text.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-02-23 10:03:12 +01:00
Oliver Hartkopp c1ac5613fd can-utils: added isotpperf tool for performance measurements
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2015-02-04 10:17:38 +01:00
Jeremiah Mahler ca79909197 use line discipline number from linux/tty.h
The line discipline number is provided in include/linux/tty.h.
Use that instead of a #define in each program.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-12-23 18:03:09 +01:00
Jeremiah Mahler d93ef0e372 slcand: consistent use of exit(EXIT_FAILURE)
Some places used exit(1) and others used exit(EXIT_FAILURE).
Be consistent and use exit(EXIT_FAILURE) for all of these instances.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-12-23 18:02:52 +01:00
Jeremiah Mahler d62a9f148d slcand: remove #define EXIT_FAILURE, EXIT_SUCCESS
slcand has #defines for EXIT_FAILURE and EXIT_SUCCESS but this is
unnecessary since they are already provided by stdlib.h.  Remove them.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-12-23 18:02:18 +01:00
Jeremiah Mahler 86023b8640 slcand: improve usage examples
The examples in the usage of slcand use a 'ttyslcan0' device which
is an uncommon name.  Use a more common ttyUSB0 name which is seen
with CANUSB devices.  Also, add an example showing that /dev/ttyUSB0
can be use as well.

Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-12-23 18:02:03 +01:00
Andri Yngvason 7492b1c873 lib: Update error messages according to new state change handling
This patch updates the error messages for the reworked state change handling
from Andri Yngvason you find in mainline Linux 3.19+

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-12-18 14:40:42 +01:00
Oliver Hartkopp dabe592f45 isotp[server|tun]: update padding and CAN FD features
Update padding and CAN FD features according to the latest isotpsend and
isotprecv changes.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-11-23 12:15:57 +01:00
Oliver Hartkopp a51be177d8 isotp[send|recv]: change command line option for padding bytes
Allow to specify the TX and RX padding content separately.
Due to the optional values it is possible to provide either TX or RX values
which enables and set the given values.

-p 55:AA => TX padding 0x55, RX padding 0xAA
-p 55    => TX padding 0x55
-p 55:   => TX padding 0x55
-p :AA   => RX padding 0xAA

Additionally the comment for the -P <mode> option was updated to point out the
checking mode of the padding in the received PDUs (rx padding).

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-11-20 23:13:37 +01:00
Oliver Hartkopp 523f3d8fc0 isotp[send|recv]: change command line option for extended addressing
Enable to pass the optional second extended address with the '-x' option and
do not pollute the command line options with just another '-X' option.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-11-19 20:44:41 +01:00
Oliver Hartkopp 8150e21a11 isotp: add tool support for ISO 15765-2:2015 with CAN FD
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-11-16 22:24:04 +01:00
Oliver Hartkopp 61a9b8d98e isotpdump: add support for FF_DL escape sequence for 32 bit PDU length
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-11-16 22:14:02 +01:00
Oliver Hartkopp 4ffb7fe5c7 isotp: added support for separate extended address in rx path
As requested by Laurent Vaudoit the extended address can be different in the
tx and he rx path:

(..) how can i have a segmented transfer like this:
0x6a7  0x55 0x10 0x08 ........
0x687  0xAA 0x30 0x00 0x00
0x6a7  0x55 0x21 .....

The connection i need is between two ECU, using IDs 0x6a7/687 and one has
adress extension 0x55, the other 0xAA (this adressing method is used on some
FIAT ECUs for example).

http://marc.info/?l=linux-can&m=140354647413513&w=2

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-11-16 20:38:31 +01:00
Oliver Hartkopp c517af5a0b isotpsend: add option to automatically create test data with specifc length
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-10-24 21:05:52 +02:00
Oliver Hartkopp 2fa9b0005b isotp[send|recv]: support PDU sizes greater than 4095
Allow PDU sizes greater than 4095 to be able to check the correct
implementation of the kernel socket API error handlings.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-10-24 20:41:11 +02:00
Urs Thuermann 0c61f2ac4c candump: fix off-by-one error in dropcount calculation
Calculations using unsigned integer types are done modulo U*INT_MAX+1,
so you get the correct difference of two values by simply subtracting.
No special handling for overflow is neccessary.

Signed-off-by: Urs Thuermann <urs@isnogud.escape.de>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-10-23 19:27:09 +02:00
Oliver Hartkopp 9c5bfab229 isotp: fix copy paste error for isotp padding config
Thanks for the anonymous hint, Mr X ;-)

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-10-23 19:07:54 +02:00
Alexander Stein 518faef3ac Add missing header canframelen.h to noinst_HEADERS
This is necessary so this header gets included when running make dist.

Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-07-08 09:18:12 +02:00
Andre Naujoks 7f24d6adf7 do not use --symlink for autoreconf
When packaging the can-utils, I understand, that the generation step for
autoconf should be done beforehand. However using the --symlink option in the
autoreconf step installs links instead of the actual files, which leads to a
build failure when trying to build on another host with different autotools
installed.

Signed-off-by: Andre Naujoks <nautsch2@gmail.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-07-02 16:03:34 +02:00
Marc Kleine-Budde 18f8416a40 cansniffer: increase resolution for timeout values
As requested by Felix Seitz the timeout for screen updates should be
configurable to values smaller than 100ms. Marc Kleine-Budde provided the
original patch to increase the resolution of the timing relevant variables.

The rotating animation was replaced by a rolling screen update counter.
Additionally the CAN-ID is now printed in the same ASCII hex representation
as the CAN data.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-06-24 21:36:55 +02:00
Oliver Hartkopp 53779e43eb candump: use UINT32_MAX define from stdint.h
Use the UINT32_MAX define from stdint.h instead of writing it into a comment.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-05-24 21:44:51 +02:00
Oliver Hartkopp 4a68366bac lib: optimize sprint_[long_]canframe()
Inspired by the SLCAN rework from Andre Naujoks this patch replaces the
extensive use of sprintf() with simple and efficient ASCII helpers.

valgrind/kcachegrind reported a cyle estimation of about 5.3 million cycles
before and about 1.5 million cycles after the rework (factor 3.55) for the
logging of the exact same CAN content.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-05-05 22:13:38 +02:00
Oliver Hartkopp 31ccf45dc4 candump: reduce printf calls for logfile format
The creation of the logfile format was using fprint_canframe() and two other
fprintf() calls to produce a single logfile format line. Instead of using
fprint_canframe() use sprint_canframe() directly and reduce the printf() calls
from three to one.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-05-05 21:29:56 +02:00
Wolfgang Grandegger 67a2bdcd33 can-calc-bit-timing: add a proper GNU license agreement
Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-02-27 22:08:04 +01:00
Marc Kleine-Budde 7720e304fb configure: add checks for large file support (LFS)
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-02-26 19:49:15 +01:00
Oliver Hartkopp 57d9fcbf81 Makefile: add large file support (LFS)
Large file support (LFS) in recent C libraries allows 32 bit applications to
create large files with file length values > 0x7FFFFFFF when the filesystem
supports it.

This patch adds large file support to the Makefile, if you don't want LFS use
the autotools version and call configure like this:

    ./configure --disable-largefile

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-02-26 19:49:08 +01:00
Marc Kleine-Budde 733192a3d0 Makefile: move cpp related flags from CFLAGS to CPPFLAGS
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-02-26 19:25:11 +01:00
Oliver Hartkopp 110af11db1 canbusload: print bitstuffing mode when showing current time is enabled
When printing the current time on the first line the bitstuffing mode is
displayed depending on the command line settings.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2014-02-01 21:30:12 +01:00
Yegor Yefremov e4aac687eb slcand: include <sys/socket.h>
Linux build compiles without errors, but Android build
complains about undefined routines and macros.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-01-31 12:00:19 +01:00
Marc Kleine-Budde 02d32df1dc Android.mk: canbusload: fix compilation, make use of libcan
In commit

    2206f92 canbusload: Add exact CAN frame length calculation (including bitstuffing)

the function to calculate the can_frame_length was moved into a seperate file
(canframelen.c). This patch for the Android makefile adds canframelen.c to the
lib, too and lets canbusload link against the lib.

Tested-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-01-31 11:52:20 +01:00
Michal Sojka f878a5fa2c Add license to canframelen.h
Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-01-31 11:52:15 +01:00
Michal Sojka d6b576c012 canbusload: Fix worst-case frame length estimation
The Tindell's method used previously is incorrect. It does not account for
the fact that the stuffed bits are themselves also subject to bit stuffing.

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-01-30 16:23:32 +01:00
Michal Sojka 2206f92de7 canbusload: Add exact CAN frame length calculation (including bitstuffing)
This adds an algorithm for calculating the exact number of bits a CAN
frame occupies on the bus and uses this algorithm in canbusload. It
also moves the other methods for CAN frame length calculation, already
present in canbusload, to the new file.

The added algorithm calculates the exact number of stuffed bit in a
CAN frame. Note that in order to calculate that correctly, we must
also know the frame's CRC. Hence, the algorithm also includes CRC
calculation routine.

The correctness of the algorithm was verified on an oscilloscope for
several different SFF and EFF frames.

Currently only CAN frames are supported. For CANFD frames, a different
algorithm is needed. CANFD uses different CRC polynomials and
calculates the CRC from the staffed bit-stream (CAN calculates CRC
from de-stuffed bit-stream).

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-01-30 16:23:25 +01:00