From: Oliver Hartkopp <socketcan@hartkopp.net>
To: Marc Kleine-Budde <mkl@pengutronix.de>,
Marek Vasut <marex@denx.de>,
netdev@vger.kernel.org
Cc: "David S. Miller" <davem@davemloft.net>,
Wolfgang Grandegger <wg@grandegger.com>,
Andrew Lunn <andrew@lunn.ch>,
Andrey Vostrikov <andrey.vostrikov@cogentembedded.com>
Subject: Re: [RFC][PATCH] net: arinc429: Add ARINC-429 stack
Date: Mon, 02 Nov 2015 12:14:27 +0100 [thread overview]
Message-ID: <56374593.6000200@hartkopp.net> (raw)
In-Reply-To: <56373140.6040003@pengutronix.de>
On 02.11.2015 10:47, Marc Kleine-Budde wrote:
> On 11/02/2015 12:16 AM, Marek Vasut wrote:
>> The ARINC-429 is a technical standard, which describes, among others,
>> a data bus used by airplanes. The standard contains much more, since
>> it is based off the ISO/OSI model, but this patch implements just the
>> data bus protocol.
>>
>> This stack is derived from the SocketCAN implementation, already present
>> in the kernel and thus behaves in a very similar fashion. Thus far, we
>> support sending RAW ARINC-429 datagrams, configuration of the RX and TX
>> clock speed and filtering.
>>
>> The ARINC-429 datagram is four-byte long. The first byte is always the
>> LABEL, the function of remaining three bytes can vary, so we handle it
>> as an opaque PAYLOAD. The userspace tools can send these datagrams via
>> a standard socket.
>>
>> A LABEL-based filtering can be configured on each socket separately in
>> a way comparable to CAN -- user uses setsockopt() to push a list of
>> label,mask tuples into the kernel and the kernel will deliver a datagram
>> to the socket if (<received_label> & mask) == (label & mask), otherwise
>> the datagram is not delivered.
>
> What's difference compared to CAN besides a different MTU? The CAN stack
> is already capable to handle CAN and CAN-FD frames. Would it make sense
> to integrate the ARINC-429 into the existing CAN stack?
That was my first impression too.
What about defining some overlay data structure to map ARINC-429 frames into
CAN frames?
E.g. we could write the ARINC 32 bit data completely into data[0..3] and
additionally copy the 8 bit label information (or should it better be 10 bit
including the Source/Destination Identifiers?) additionally into the can_id.
From what I can see the filtering by label is similar to filtering by can_id.
And you would be able to use the can-gw functionality too.
The only real difference is the bitrate configuration of the ARINC interface.
I wonder if a similar approach would fit here as we discussed with the
University of Prague for a LIN implementation using the PF_CAN infrastructure:
http://rtime.felk.cvut.cz/can/lin-bus/
It could probably boil down to a 'CAN interface' that is named arinc0 which
implements the serial driver like in slcan.c or sllin.c ...
Regards,
Oliver
next prev parent reply other threads:[~2015-11-02 11:14 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-01 23:16 [RFC][PATCH] net: arinc429: Add ARINC-429 stack Marek Vasut
2015-11-02 9:47 ` Marc Kleine-Budde
2015-11-02 11:14 ` Oliver Hartkopp [this message]
2015-11-02 18:16 ` Marek Vasut
2015-11-02 20:15 ` Vostrikov Andrey
2015-11-02 20:25 ` Marek Vasut
2015-11-03 10:36 ` Aleksander Morgado
2015-11-03 11:36 ` Marc Kleine-Budde
2015-11-03 15:06 ` Aleksander Morgado
2015-11-03 15:15 ` Marc Kleine-Budde
2015-11-03 16:10 ` Aleksander Morgado
2015-11-03 17:32 ` Oliver Hartkopp
2015-11-03 17:41 ` Marek Vasut
2015-11-03 18:03 ` Oliver Hartkopp
2015-11-03 19:19 ` Marek Vasut
2015-11-03 19:28 ` Oliver Hartkopp
2015-11-03 21:43 ` Marek Vasut
2015-11-04 9:34 ` Aleksander Morgado
2015-11-04 13:54 ` Marek Vasut
2015-11-04 15:03 ` Vostrikov Andrey
2015-11-04 15:07 ` Marek Vasut
2015-11-04 15:18 ` Vostrikov Andrey
2015-11-04 15:19 ` Aleksander Morgado
2015-11-04 15:33 ` Marek Vasut
2015-11-04 15:45 ` Aleksander Morgado
2015-11-10 16:15 ` Marek Vasut
2015-11-18 16:38 ` Aleksander Morgado
2015-11-18 16:41 ` Marek Vasut
2015-11-03 20:26 ` Vostrikov Andrey
2015-11-03 21:24 ` Oliver Hartkopp
2015-11-03 21:41 ` Marek Vasut
2015-11-04 10:44 ` Oliver Hartkopp
2015-11-03 21:52 ` Vostrikov Andrey
2015-11-03 15:19 ` Marek Vasut
2015-11-03 16:18 ` Aleksander Morgado
2015-11-03 16:56 ` Aleksander Morgado
2015-11-03 17:33 ` Marek Vasut
2015-11-03 20:15 ` Vostrikov Andrey
2015-11-04 9:31 ` Aleksander Morgado
2015-11-03 16:47 ` Aleksander Morgado
2015-11-03 17:37 ` Marek Vasut
2015-11-03 17:01 ` Oliver Hartkopp
2015-11-04 9:51 ` Aleksander Morgado
2015-11-03 21:44 ` Marek Vasut
2015-11-02 19:41 ` Aleksander Morgado
2015-11-02 19:55 ` Oliver Hartkopp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56374593.6000200@hartkopp.net \
--to=socketcan@hartkopp.net \
--cc=andrew@lunn.ch \
--cc=andrey.vostrikov@cogentembedded.com \
--cc=davem@davemloft.net \
--cc=marex@denx.de \
--cc=mkl@pengutronix.de \
--cc=netdev@vger.kernel.org \
--cc=wg@grandegger.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.