diff options
Diffstat (limited to 'static/netbsd/man4/can.4')
| -rw-r--r-- | static/netbsd/man4/can.4 | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/static/netbsd/man4/can.4 b/static/netbsd/man4/can.4 new file mode 100644 index 00000000..af00d4ad --- /dev/null +++ b/static/netbsd/man4/can.4 @@ -0,0 +1,106 @@ +.\" $NetBSD: can.4,v 1.3 2017/05/29 08:41:57 wiz Exp $ +.\" +.\" Copyright (c) 2017 Manuel Bouyer. +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd May 18, 2017 +.Dt CAN 4 +.Os +.Sh NAME +.Nm CAN +.Nd CAN Protocol +.Sh SYNOPSIS +.In sys/socket.h +.In netcan/can.h +.Ft int +.Fn socket AF_CAN SOCK_RAW CAN_RAW +.Sh DESCRIPTION +.Nm +is the network layer protocol used on top of CAN bus networks. +At this time only the +.Dv SOCK_RAW +socket type is supported. +This protocol layer is intended to be compatible with the Linux SocketCAN implementation. +.Ss ADDRESSING +A CAN frame consists of a 11 bits (standard frame format) or 29 bits +(extended frame format) identifier, followed by up to 8 data bytes. +The interpretation of the identifier is application-dependent, the CAN +standard itself doesn't define an addressing. +.Pp +The +.Nm +layer uses a 32bits identifier. +The 3 upper bits are used as control flags. +The extended frame format is selected by setting the +.Dv CAN_EFF_FLAG +control bit. +.Pp +The socket address is defined as +.Bd -literal +struct sockaddr_can { + u_int8_t can_len; + sa_family_t can_family; + int can_ifindex; + union { + /* transport protocol class address information */ + struct { canid_t rx_id, tx_id; } tp; + /* reserved for future CAN protocols address information */ + } can_addr; +}; +.Ed +For CAN raw sockets, the 32bits identifier is part of the message data. +The can_addr field of the sockaddr structure is not used. +.Ss MESSAGE +Raw CAN sockets use fixed-length messages defined as follow: +.Bd -literal +struct can_frame { + canid_t can_id; /* ID + EFF/RTR/ERR flags */ + uint8_t can_dlc; /* frame payload length in byte (0 .. CAN_MAX_DLEN) */ + uint8_t __pad; + uint8_t __res0; + uint8_t __res1; + uint8_t data[CAN_MAX_DLEN] __aligned(8); +}; +.Ed +The lower 11 bits (for standard frames) or 29 bits (for extended frames) are +used as the on-wire identifier. +The +.Dv CAN_EFF_FLAG +bit is set in can_id for extended frames. +The +.Dv CAN_RTR_FLAG +bit is set in can_id for remote transmission request frames. +.Sh SEE ALSO +.Xr socket 2 , +.Xr canloop 4 , +.Xr netintro 4 , +.Xr canconfig 8 , +.Pa /usr/include/netcan/can.h +.Pp +.Lk https://en.wikipedia.org/wiki/SocketCAN "SocketCAN - Wikipedia" +.Lk https://www.kernel.org/doc/Documentation/networking/can.txt "Readme file for the Controller Area Network Protocol Family" +.Sh HISTORY +The +.Nm +protocol appeared in +.Nx 8.0 . +.Sh BUGS +.Dv CANFD +and error frames are not implemented. |
