?????????? ????????? - ??????????????? - /home/agenciai/public_html/cd38d8/can.zip
???????
PK �N�[�"�N N isotp.hnu �[��� /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ /* * linux/can/isotp.h * * Definitions for isotp CAN sockets (ISO 15765-2:2016) * * Copyright (c) 2020 Volkswagen Group Electronic Research * All rights reserved. * * 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. * 3. Neither the name of Volkswagen nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * Alternatively, provided that this notice is retained in full, this * software may be distributed under the terms of the GNU General * Public License ("GPL") version 2, in which case the provisions of the * GPL apply INSTEAD OF those given above. * * The provided data structures and external interfaces from this code * are not restricted to be used by modules with a GPL compatible license. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 COPYRIGHT * OWNER OR CONTRIBUTORS 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. */ #ifndef _CAN_ISOTP_H #define _CAN_ISOTP_H #include <linux/types.h> #include <linux/can.h> #define SOL_CAN_ISOTP (SOL_CAN_BASE + CAN_ISOTP) /* for socket options affecting the socket (not the global system) */ #define CAN_ISOTP_OPTS 1 /* pass struct can_isotp_options */ #define CAN_ISOTP_RECV_FC 2 /* pass struct can_isotp_fc_options */ /* sockopts to force stmin timer values for protocol regression tests */ #define CAN_ISOTP_TX_STMIN 3 /* pass __u32 value in nano secs */ /* use this time instead of value */ /* provided in FC from the receiver */ #define CAN_ISOTP_RX_STMIN 4 /* pass __u32 value in nano secs */ /* ignore received CF frames which */ /* timestamps differ less than val */ #define CAN_ISOTP_LL_OPTS 5 /* pass struct can_isotp_ll_options */ struct can_isotp_options { __u32 flags; /* set flags for isotp behaviour. */ /* __u32 value : flags see below */ __u32 frame_txtime; /* frame transmission time (N_As/N_Ar) */ /* __u32 value : time in nano secs */ __u8 ext_address; /* set address for extended addressing */ /* __u8 value : extended address */ __u8 txpad_content; /* set content of padding byte (tx) */ /* __u8 value : content on tx path */ __u8 rxpad_content; /* set content of padding byte (rx) */ /* __u8 value : content on rx path */ __u8 rx_ext_address; /* set address for extended addressing */ /* __u8 value : extended address (rx) */ }; struct can_isotp_fc_options { __u8 bs; /* blocksize provided in FC frame */ /* __u8 value : blocksize. 0 = off */ __u8 stmin; /* separation time provided in FC frame */ /* __u8 value : */ /* 0x00 - 0x7F : 0 - 127 ms */ /* 0x80 - 0xF0 : reserved */ /* 0xF1 - 0xF9 : 100 us - 900 us */ /* 0xFA - 0xFF : reserved */ __u8 wftmax; /* max. number of wait frame transmiss. */ /* __u8 value : 0 = omit FC N_PDU WT */ }; struct can_isotp_ll_options { __u8 mtu; /* generated & accepted CAN frame type */ /* __u8 value : */ /* CAN_MTU (16) -> standard CAN 2.0 */ /* CANFD_MTU (72) -> CAN FD frame */ __u8 tx_dl; /* tx link layer data length in bytes */ /* (configured maximum payload length) */ /* __u8 value : 8,12,16,20,24,32,48,64 */ /* => rx path supports all LL_DL values */ __u8 tx_flags; /* set into struct canfd_frame.flags */ /* at frame creation: e.g. CANFD_BRS */ /* Obsolete when the BRS flag is fixed */ /* by the CAN netdriver configuration */ }; /* flags for isotp behaviour */ #define CAN_ISOTP_LISTEN_MODE 0x0001 /* listen only (do not send FC) */ #define CAN_ISOTP_EXTEND_ADDR 0x0002 /* enable extended addressing */ #define CAN_ISOTP_TX_PADDING 0x0004 /* enable CAN frame padding tx path */ #define CAN_ISOTP_RX_PADDING 0x0008 /* enable CAN frame padding rx path */ #define CAN_ISOTP_CHK_PAD_LEN 0x0010 /* check received CAN frame padding */ #define CAN_ISOTP_CHK_PAD_DATA 0x0020 /* check received CAN frame padding */ #define CAN_ISOTP_HALF_DUPLEX 0x0040 /* half duplex error state handling */ #define CAN_ISOTP_FORCE_TXSTMIN 0x0080 /* ignore stmin from received FC */ #define CAN_ISOTP_FORCE_RXSTMIN 0x0100 /* ignore CFs depending on rx stmin */ #define CAN_ISOTP_RX_EXT_ADDR 0x0200 /* different rx extended addressing */ #define CAN_ISOTP_WAIT_TX_DONE 0x0400 /* wait for tx completion */ #define CAN_ISOTP_SF_BROADCAST 0x0800 /* 1-to-N functional addressing */ #define CAN_ISOTP_CF_BROADCAST 0x1000 /* 1-to-N transmission w/o FC */ #define CAN_ISOTP_DYN_FC_PARMS 0x2000 /* dynamic FC parameters BS/STmin */ /* protocol machine default values */ #define CAN_ISOTP_DEFAULT_FLAGS 0 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC /* prevent bit-stuffing */ #define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000 /* 50 micro seconds */ #define CAN_ISOTP_DEFAULT_RECV_BS 0 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0 /* * Remark on CAN_ISOTP_DEFAULT_RECV_* values: * * We can strongly assume, that the Linux Kernel implementation of * CAN_ISOTP is capable to run with BS=0, STmin=0 and WFTmax=0. * But as we like to be able to behave as a commonly available ECU, * these default settings can be changed via sockopts. * For that reason the STmin value is intentionally _not_ checked for * consistency and copied directly into the flow control (FC) frame. */ /* link layer default values => make use of Classical CAN frames */ #define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU #define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN #define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0 /* * The CAN_ISOTP_DEFAULT_FRAME_TXTIME has become a non-zero value as * it only makes sense for isotp implementation tests to run without * a N_As value. As user space applications usually do not set the * frame_txtime element of struct can_isotp_options the new in-kernel * default is very likely overwritten with zero when the sockopt() * CAN_ISOTP_OPTS is invoked. * To make sure that a N_As value of zero is only set intentional the * value '0' is now interpreted as 'do not change the current value'. * When a frame_txtime of zero is required for testing purposes this * CAN_ISOTP_FRAME_TXTIME_ZERO u32 value has to be set in frame_txtime. */ #define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF #endif /* !_UAPI_CAN_ISOTP_H */ PK �N�[�x netlink.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * linux/can/netlink.h * * Definitions for the CAN netlink interface * * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the version 2 of the GNU General Public License * as published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _CAN_NETLINK_H #define _CAN_NETLINK_H #include <linux/types.h> /* * CAN bit-timing parameters * * For further information, please read chapter "8 BIT TIMING * REQUIREMENTS" of the "Bosch CAN Specification version 2.0" * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf. */ struct can_bittiming { __u32 bitrate; /* Bit-rate in bits/second */ __u32 sample_point; /* Sample point in one-tenth of a percent */ __u32 tq; /* Time quanta (TQ) in nanoseconds */ __u32 prop_seg; /* Propagation segment in TQs */ __u32 phase_seg1; /* Phase buffer segment 1 in TQs */ __u32 phase_seg2; /* Phase buffer segment 2 in TQs */ __u32 sjw; /* Synchronisation jump width in TQs */ __u32 brp; /* Bit-rate prescaler */ }; /* * CAN hardware-dependent bit-timing constant * * Used for calculating and checking bit-timing parameters */ struct can_bittiming_const { char name[16]; /* Name of the CAN controller hardware */ __u32 tseg1_min; /* Time segment 1 = prop_seg + phase_seg1 */ __u32 tseg1_max; __u32 tseg2_min; /* Time segment 2 = phase_seg2 */ __u32 tseg2_max; __u32 sjw_max; /* Synchronisation jump width */ __u32 brp_min; /* Bit-rate prescaler */ __u32 brp_max; __u32 brp_inc; }; /* * CAN clock parameters */ struct can_clock { __u32 freq; /* CAN system clock frequency in Hz */ }; /* * CAN operational and error states */ enum can_state { CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */ CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */ CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */ CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */ CAN_STATE_STOPPED, /* Device is stopped */ CAN_STATE_SLEEPING, /* Device is sleeping */ CAN_STATE_MAX }; /* * CAN bus error counters */ struct can_berr_counter { __u16 txerr; __u16 rxerr; }; /* * CAN controller mode */ struct can_ctrlmode { __u32 mask; __u32 flags; }; #define CAN_CTRLMODE_LOOPBACK 0x01 /* Loopback mode */ #define CAN_CTRLMODE_LISTENONLY 0x02 /* Listen-only mode */ #define CAN_CTRLMODE_3_SAMPLES 0x04 /* Triple sampling mode */ #define CAN_CTRLMODE_ONE_SHOT 0x08 /* One-Shot mode */ #define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */ #define CAN_CTRLMODE_FD 0x20 /* CAN FD mode */ #define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */ #define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */ #define CAN_CTRLMODE_CC_LEN8_DLC 0x100 /* Classic CAN DLC option */ #define CAN_CTRLMODE_TDC_AUTO 0x200 /* CAN transiver automatically calculates TDCV */ #define CAN_CTRLMODE_TDC_MANUAL 0x400 /* TDCV is manually set up by user */ /* * CAN device statistics */ struct can_device_stats { __u32 bus_error; /* Bus errors */ __u32 error_warning; /* Changes to error warning state */ __u32 error_passive; /* Changes to error passive state */ __u32 bus_off; /* Changes to bus off state */ __u32 arbitration_lost; /* Arbitration lost errors */ __u32 restarts; /* CAN controller re-starts */ }; /* * CAN netlink interface */ enum { IFLA_CAN_UNSPEC, IFLA_CAN_BITTIMING, IFLA_CAN_BITTIMING_CONST, IFLA_CAN_CLOCK, IFLA_CAN_STATE, IFLA_CAN_CTRLMODE, IFLA_CAN_RESTART_MS, IFLA_CAN_RESTART, IFLA_CAN_BERR_COUNTER, IFLA_CAN_DATA_BITTIMING, IFLA_CAN_DATA_BITTIMING_CONST, IFLA_CAN_TERMINATION, IFLA_CAN_TERMINATION_CONST, IFLA_CAN_BITRATE_CONST, IFLA_CAN_DATA_BITRATE_CONST, IFLA_CAN_BITRATE_MAX, IFLA_CAN_TDC, IFLA_CAN_CTRLMODE_EXT, /* add new constants above here */ __IFLA_CAN_MAX, IFLA_CAN_MAX = __IFLA_CAN_MAX - 1 }; /* * CAN FD Transmitter Delay Compensation (TDC) * * Please refer to struct can_tdc_const and can_tdc in * include/linux/can/bittiming.h for further details. */ enum { IFLA_CAN_TDC_UNSPEC, IFLA_CAN_TDC_TDCV_MIN, /* u32 */ IFLA_CAN_TDC_TDCV_MAX, /* u32 */ IFLA_CAN_TDC_TDCO_MIN, /* u32 */ IFLA_CAN_TDC_TDCO_MAX, /* u32 */ IFLA_CAN_TDC_TDCF_MIN, /* u32 */ IFLA_CAN_TDC_TDCF_MAX, /* u32 */ IFLA_CAN_TDC_TDCV, /* u32 */ IFLA_CAN_TDC_TDCO, /* u32 */ IFLA_CAN_TDC_TDCF, /* u32 */ /* add new constants above here */ __IFLA_CAN_TDC, IFLA_CAN_TDC_MAX = __IFLA_CAN_TDC - 1 }; /* * IFLA_CAN_CTRLMODE_EXT nest: controller mode extended parameters */ enum { IFLA_CAN_CTRLMODE_UNSPEC, IFLA_CAN_CTRLMODE_SUPPORTED, /* u32 */ /* add new constants above here */ __IFLA_CAN_CTRLMODE, IFLA_CAN_CTRLMODE_MAX = __IFLA_CAN_CTRLMODE - 1 }; /* u16 termination range: 1..65535 Ohms */ #define CAN_TERMINATION_DISABLED 0 #endif /* !_UAPI_CAN_NETLINK_H */ PK �N�[�/#�Z Z gw.hnu �[��� /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ /* * linux/can/gw.h * * Definitions for CAN frame Gateway/Router/Bridge * * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de> * Copyright (c) 2011 Volkswagen Group Electronic Research * All rights reserved. * * 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. * 3. Neither the name of Volkswagen nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * Alternatively, provided that this notice is retained in full, this * software may be distributed under the terms of the GNU General * Public License ("GPL") version 2, in which case the provisions of the * GPL apply INSTEAD OF those given above. * * The provided data structures and external interfaces from this code * are not restricted to be used by modules with a GPL compatible license. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 COPYRIGHT * OWNER OR CONTRIBUTORS 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. */ #ifndef _CAN_GW_H #define _CAN_GW_H #include <linux/types.h> #include <linux/can.h> struct rtcanmsg { __u8 can_family; __u8 gwtype; __u16 flags; }; /* CAN gateway types */ enum { CGW_TYPE_UNSPEC, CGW_TYPE_CAN_CAN, /* CAN->CAN routing */ __CGW_TYPE_MAX }; #define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1) /* CAN rtnetlink attribute definitions */ enum { CGW_UNSPEC, CGW_MOD_AND, /* CAN frame modification binary AND */ CGW_MOD_OR, /* CAN frame modification binary OR */ CGW_MOD_XOR, /* CAN frame modification binary XOR */ CGW_MOD_SET, /* CAN frame modification set alternate values */ CGW_CS_XOR, /* set data[] XOR checksum into data[index] */ CGW_CS_CRC8, /* set data[] CRC8 checksum into data[index] */ CGW_HANDLED, /* number of handled CAN frames */ CGW_DROPPED, /* number of dropped CAN frames */ CGW_SRC_IF, /* ifindex of source network interface */ CGW_DST_IF, /* ifindex of destination network interface */ CGW_FILTER, /* specify struct can_filter on source CAN device */ CGW_DELETED, /* number of deleted CAN frames (see max_hops param) */ CGW_LIM_HOPS, /* limit the number of hops of this specific rule */ CGW_MOD_UID, /* user defined identifier for modification updates */ CGW_FDMOD_AND, /* CAN FD frame modification binary AND */ CGW_FDMOD_OR, /* CAN FD frame modification binary OR */ CGW_FDMOD_XOR, /* CAN FD frame modification binary XOR */ CGW_FDMOD_SET, /* CAN FD frame modification set alternate values */ __CGW_MAX }; #define CGW_MAX (__CGW_MAX - 1) #define CGW_FLAGS_CAN_ECHO 0x01 #define CGW_FLAGS_CAN_SRC_TSTAMP 0x02 #define CGW_FLAGS_CAN_IIF_TX_OK 0x04 #define CGW_FLAGS_CAN_FD 0x08 #define CGW_MOD_FUNCS 4 /* AND OR XOR SET */ /* CAN frame elements that are affected by curr. 3 CAN frame modifications */ #define CGW_MOD_ID 0x01 #define CGW_MOD_DLC 0x02 /* Classical CAN data length code */ #define CGW_MOD_LEN CGW_MOD_DLC /* CAN FD (plain) data length */ #define CGW_MOD_DATA 0x04 #define CGW_MOD_FLAGS 0x08 /* CAN FD flags */ #define CGW_FRAME_MODS 4 /* ID DLC/LEN DATA FLAGS */ #define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS) struct cgw_frame_mod { struct can_frame cf; __u8 modtype; } __attribute__((packed)); struct cgw_fdframe_mod { struct canfd_frame cf; __u8 modtype; } __attribute__((packed)); #define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod) #define CGW_FDMODATTR_LEN sizeof(struct cgw_fdframe_mod) struct cgw_csum_xor { __s8 from_idx; __s8 to_idx; __s8 result_idx; __u8 init_xor_val; } __attribute__((packed)); struct cgw_csum_crc8 { __s8 from_idx; __s8 to_idx; __s8 result_idx; __u8 init_crc_val; __u8 final_xor_val; __u8 crctab[256]; __u8 profile; __u8 profile_data[20]; } __attribute__((packed)); /* length of checksum operation parameters. idx = index in CAN frame data[] */ #define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor) #define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8) /* CRC8 profiles (compute CRC for additional data elements - see below) */ enum { CGW_CRC8PRF_UNSPEC, CGW_CRC8PRF_1U8, /* compute one additional u8 value */ CGW_CRC8PRF_16U8, /* u8 value table indexed by data[1] & 0xF */ CGW_CRC8PRF_SFFID_XOR, /* (can_id & 0xFF) ^ (can_id >> 8 & 0xFF) */ __CGW_CRC8PRF_MAX }; #define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1) /* * CAN rtnetlink attribute contents in detail * * CGW_XXX_IF (length 4 bytes): * Sets an interface index for source/destination network interfaces. * For the CAN->CAN gwtype the indices of _two_ CAN interfaces are mandatory. * * CGW_FILTER (length 8 bytes): * Sets a CAN receive filter for the gateway job specified by the * struct can_filter described in include/linux/can.h * * CGW_MOD_(AND|OR|XOR|SET) (length 17 bytes): * Specifies a modification that's done to a received CAN frame before it is * send out to the destination interface. * * <struct can_frame> data used as operator * <u8> affected CAN frame elements * * CGW_LIM_HOPS (length 1 byte): * Limit the number of hops of this specific rule. Usually the received CAN * frame can be processed as much as 'max_hops' times (which is given at module * load time of the can-gw module). This value is used to reduce the number of * possible hops for this gateway rule to a value smaller then max_hops. * * CGW_MOD_UID (length 4 bytes): * Optional non-zero user defined routing job identifier to alter existing * modification settings at runtime. * * CGW_CS_XOR (length 4 bytes): * Set a simple XOR checksum starting with an initial value into * data[result-idx] using data[start-idx] .. data[end-idx] * * The XOR checksum is calculated like this: * * xor = init_xor_val * * for (i = from_idx .. to_idx) * xor ^= can_frame.data[i] * * can_frame.data[ result_idx ] = xor * * CGW_CS_CRC8 (length 282 bytes): * Set a CRC8 value into data[result-idx] using a given 256 byte CRC8 table, * a given initial value and a defined input data[start-idx] .. data[end-idx]. * Finally the result value is XOR'ed with the final_xor_val. * * The CRC8 checksum is calculated like this: * * crc = init_crc_val * * for (i = from_idx .. to_idx) * crc = crctab[ crc ^ can_frame.data[i] ] * * can_frame.data[ result_idx ] = crc ^ final_xor_val * * The calculated CRC may contain additional source data elements that can be * defined in the handling of 'checksum profiles' e.g. shown in AUTOSAR specs * like http://www.autosar.org/download/R4.0/AUTOSAR_SWS_E2ELibrary.pdf * E.g. the profile_data[] may contain additional u8 values (called DATA_IDs) * that are used depending on counter values inside the CAN frame data[]. * So far only three profiles have been implemented for illustration. * * Remark: In general the attribute data is a linear buffer. * Beware of sending unpacked or aligned structs! */ #endif /* !_UAPI_CAN_GW_H */ PK �N�[��c c j1939.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * j1939.h * * Copyright (c) 2010-2011 EIA Electronics * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef _CAN_J1939_H_ #define _CAN_J1939_H_ #include <linux/types.h> #include <linux/socket.h> #include <linux/can.h> #define J1939_MAX_UNICAST_ADDR 0xfd #define J1939_IDLE_ADDR 0xfe #define J1939_NO_ADDR 0xff /* == broadcast or no addr */ #define J1939_NO_NAME 0 #define J1939_PGN_REQUEST 0x0ea00 /* Request PG */ #define J1939_PGN_ADDRESS_CLAIMED 0x0ee00 /* Address Claimed */ #define J1939_PGN_ADDRESS_COMMANDED 0x0fed8 /* Commanded Address */ #define J1939_PGN_PDU1_MAX 0x3ff00 #define J1939_PGN_MAX 0x3ffff #define J1939_NO_PGN 0x40000 /* J1939 Parameter Group Number * * bit 0-7 : PDU Specific (PS) * bit 8-15 : PDU Format (PF) * bit 16 : Data Page (DP) * bit 17 : Reserved (R) * bit 19-31 : set to zero */ typedef __u32 pgn_t; /* J1939 Priority * * bit 0-2 : Priority (P) * bit 3-7 : set to zero */ typedef __u8 priority_t; /* J1939 NAME * * bit 0-20 : Identity Number * bit 21-31 : Manufacturer Code * bit 32-34 : ECU Instance * bit 35-39 : Function Instance * bit 40-47 : Function * bit 48 : Reserved * bit 49-55 : Vehicle System * bit 56-59 : Vehicle System Instance * bit 60-62 : Industry Group * bit 63 : Arbitrary Address Capable */ typedef __u64 name_t; /* J1939 socket options */ #define SOL_CAN_J1939 (SOL_CAN_BASE + CAN_J1939) enum { SO_J1939_FILTER = 1, /* set filters */ SO_J1939_PROMISC = 2, /* set/clr promiscuous mode */ SO_J1939_SEND_PRIO = 3, SO_J1939_ERRQUEUE = 4, }; enum { SCM_J1939_DEST_ADDR = 1, SCM_J1939_DEST_NAME = 2, SCM_J1939_PRIO = 3, SCM_J1939_ERRQUEUE = 4, }; enum { J1939_NLA_PAD, J1939_NLA_BYTES_ACKED, J1939_NLA_TOTAL_SIZE, J1939_NLA_PGN, J1939_NLA_SRC_NAME, J1939_NLA_DEST_NAME, J1939_NLA_SRC_ADDR, J1939_NLA_DEST_ADDR, }; enum { J1939_EE_INFO_NONE, J1939_EE_INFO_TX_ABORT, J1939_EE_INFO_RX_RTS, J1939_EE_INFO_RX_DPO, J1939_EE_INFO_RX_ABORT, }; struct j1939_filter { name_t name; name_t name_mask; pgn_t pgn; pgn_t pgn_mask; __u8 addr; __u8 addr_mask; }; #define J1939_FILTER_MAX 512 /* maximum number of j1939_filter set via setsockopt() */ #endif /* !_UAPI_CAN_J1939_H_ */ PK �N�[�<h� � error.hnu �[��� /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ /* * linux/can/error.h * * Definitions of the CAN error messages to be filtered and passed to the user. * * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de> * Copyright (c) 2002-2007 Volkswagen Group Electronic Research * All rights reserved. * * 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. * 3. Neither the name of Volkswagen nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * Alternatively, provided that this notice is retained in full, this * software may be distributed under the terms of the GNU General * Public License ("GPL") version 2, in which case the provisions of the * GPL apply INSTEAD OF those given above. * * The provided data structures and external interfaces from this code * are not restricted to be used by modules with a GPL compatible license. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 COPYRIGHT * OWNER OR CONTRIBUTORS 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. */ #ifndef _CAN_ERROR_H #define _CAN_ERROR_H #define CAN_ERR_DLC 8 /* dlc for error message frames */ /* error class (mask) in can_id */ #define CAN_ERR_TX_TIMEOUT 0x00000001U /* TX timeout (by netdevice driver) */ #define CAN_ERR_LOSTARB 0x00000002U /* lost arbitration / data[0] */ #define CAN_ERR_CRTL 0x00000004U /* controller problems / data[1] */ #define CAN_ERR_PROT 0x00000008U /* protocol violations / data[2..3] */ #define CAN_ERR_TRX 0x00000010U /* transceiver status / data[4] */ #define CAN_ERR_ACK 0x00000020U /* received no ACK on transmission */ #define CAN_ERR_BUSOFF 0x00000040U /* bus off */ #define CAN_ERR_BUSERROR 0x00000080U /* bus error (may flood!) */ #define CAN_ERR_RESTARTED 0x00000100U /* controller restarted */ #define CAN_ERR_CNT 0x00000200U /* TX error counter / data[6] */ /* RX error counter / data[7] */ /* arbitration lost in bit ... / data[0] */ #define CAN_ERR_LOSTARB_UNSPEC 0x00 /* unspecified */ /* else bit number in bitstream */ /* error status of CAN-controller / data[1] */ #define CAN_ERR_CRTL_UNSPEC 0x00 /* unspecified */ #define CAN_ERR_CRTL_RX_OVERFLOW 0x01 /* RX buffer overflow */ #define CAN_ERR_CRTL_TX_OVERFLOW 0x02 /* TX buffer overflow */ #define CAN_ERR_CRTL_RX_WARNING 0x04 /* reached warning level for RX errors */ #define CAN_ERR_CRTL_TX_WARNING 0x08 /* reached warning level for TX errors */ #define CAN_ERR_CRTL_RX_PASSIVE 0x10 /* reached error passive status RX */ #define CAN_ERR_CRTL_TX_PASSIVE 0x20 /* reached error passive status TX */ /* (at least one error counter exceeds */ /* the protocol-defined level of 127) */ #define CAN_ERR_CRTL_ACTIVE 0x40 /* recovered to error active state */ /* error in CAN protocol (type) / data[2] */ #define CAN_ERR_PROT_UNSPEC 0x00 /* unspecified */ #define CAN_ERR_PROT_BIT 0x01 /* single bit error */ #define CAN_ERR_PROT_FORM 0x02 /* frame format error */ #define CAN_ERR_PROT_STUFF 0x04 /* bit stuffing error */ #define CAN_ERR_PROT_BIT0 0x08 /* unable to send dominant bit */ #define CAN_ERR_PROT_BIT1 0x10 /* unable to send recessive bit */ #define CAN_ERR_PROT_OVERLOAD 0x20 /* bus overload */ #define CAN_ERR_PROT_ACTIVE 0x40 /* active error announcement */ #define CAN_ERR_PROT_TX 0x80 /* error occurred on transmission */ /* error in CAN protocol (location) / data[3] */ #define CAN_ERR_PROT_LOC_UNSPEC 0x00 /* unspecified */ #define CAN_ERR_PROT_LOC_SOF 0x03 /* start of frame */ #define CAN_ERR_PROT_LOC_ID28_21 0x02 /* ID bits 28 - 21 (SFF: 10 - 3) */ #define CAN_ERR_PROT_LOC_ID20_18 0x06 /* ID bits 20 - 18 (SFF: 2 - 0 )*/ #define CAN_ERR_PROT_LOC_SRTR 0x04 /* substitute RTR (SFF: RTR) */ #define CAN_ERR_PROT_LOC_IDE 0x05 /* identifier extension */ #define CAN_ERR_PROT_LOC_ID17_13 0x07 /* ID bits 17-13 */ #define CAN_ERR_PROT_LOC_ID12_05 0x0F /* ID bits 12-5 */ #define CAN_ERR_PROT_LOC_ID04_00 0x0E /* ID bits 4-0 */ #define CAN_ERR_PROT_LOC_RTR 0x0C /* RTR */ #define CAN_ERR_PROT_LOC_RES1 0x0D /* reserved bit 1 */ #define CAN_ERR_PROT_LOC_RES0 0x09 /* reserved bit 0 */ #define CAN_ERR_PROT_LOC_DLC 0x0B /* data length code */ #define CAN_ERR_PROT_LOC_DATA 0x0A /* data section */ #define CAN_ERR_PROT_LOC_CRC_SEQ 0x08 /* CRC sequence */ #define CAN_ERR_PROT_LOC_CRC_DEL 0x18 /* CRC delimiter */ #define CAN_ERR_PROT_LOC_ACK 0x19 /* ACK slot */ #define CAN_ERR_PROT_LOC_ACK_DEL 0x1B /* ACK delimiter */ #define CAN_ERR_PROT_LOC_EOF 0x1A /* end of frame */ #define CAN_ERR_PROT_LOC_INTERM 0x12 /* intermission */ /* error status of CAN-transceiver / data[4] */ /* CANH CANL */ #define CAN_ERR_TRX_UNSPEC 0x00 /* 0000 0000 */ #define CAN_ERR_TRX_CANH_NO_WIRE 0x04 /* 0000 0100 */ #define CAN_ERR_TRX_CANH_SHORT_TO_BAT 0x05 /* 0000 0101 */ #define CAN_ERR_TRX_CANH_SHORT_TO_VCC 0x06 /* 0000 0110 */ #define CAN_ERR_TRX_CANH_SHORT_TO_GND 0x07 /* 0000 0111 */ #define CAN_ERR_TRX_CANL_NO_WIRE 0x40 /* 0100 0000 */ #define CAN_ERR_TRX_CANL_SHORT_TO_BAT 0x50 /* 0101 0000 */ #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60 /* 0110 0000 */ #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70 /* 0111 0000 */ #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80 /* 1000 0000 */ /* data[5] is reserved (do not use) */ /* TX error counter / data[6] */ /* RX error counter / data[7] */ /* CAN state thresholds * * Error counter Error state * ----------------------------------- * 0 - 95 Error-active * 96 - 127 Error-warning * 128 - 255 Error-passive * 256 and greater Bus-off */ #define CAN_ERROR_WARNING_THRESHOLD 96 #define CAN_ERROR_PASSIVE_THRESHOLD 128 #define CAN_BUS_OFF_THRESHOLD 256 #endif /* _CAN_ERROR_H */ PK �N�[Pg�! ! raw.hnu �[��� /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ /* * linux/can/raw.h * * Definitions for raw CAN sockets * * Authors: Oliver Hartkopp <oliver.hartkopp@volkswagen.de> * Urs Thuermann <urs.thuermann@volkswagen.de> * Copyright (c) 2002-2007 Volkswagen Group Electronic Research * All rights reserved. * * 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. * 3. Neither the name of Volkswagen nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * Alternatively, provided that this notice is retained in full, this * software may be distributed under the terms of the GNU General * Public License ("GPL") version 2, in which case the provisions of the * GPL apply INSTEAD OF those given above. * * The provided data structures and external interfaces from this code * are not restricted to be used by modules with a GPL compatible license. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 COPYRIGHT * OWNER OR CONTRIBUTORS 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. */ #ifndef _CAN_RAW_H #define _CAN_RAW_H #include <linux/can.h> #define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW) #define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */ enum { SCM_CAN_RAW_ERRQUEUE = 1, }; /* for socket options affecting the socket (not the global system) */ enum { CAN_RAW_FILTER = 1, /* set 0 .. n can_filter(s) */ CAN_RAW_ERR_FILTER, /* set filter for error frames */ CAN_RAW_LOOPBACK, /* local loopback (default:on) */ CAN_RAW_RECV_OWN_MSGS, /* receive my own msgs (default:off) */ CAN_RAW_FD_FRAMES, /* allow CAN FD frames (default:off) */ CAN_RAW_JOIN_FILTERS, /* all filters must match to trigger */ CAN_RAW_XL_FRAMES, /* allow CAN XL frames (default:off) */ CAN_RAW_XL_VCID_OPTS, /* CAN XL VCID configuration options */ }; /* configuration for CAN XL virtual CAN identifier (VCID) handling */ struct can_raw_vcid_options { __u8 flags; /* flags for vcid (filter) behaviour */ __u8 tx_vcid; /* VCID value set into canxl_frame.prio */ __u8 rx_vcid; /* VCID value for VCID filter */ __u8 rx_vcid_mask; /* VCID mask for VCID filter */ }; /* can_raw_vcid_options.flags for CAN XL virtual CAN identifier handling */ #define CAN_RAW_XL_VCID_TX_SET 0x01 #define CAN_RAW_XL_VCID_TX_PASS 0x02 #define CAN_RAW_XL_VCID_RX_FILTER 0x04 #endif /* !_UAPI_CAN_RAW_H */ PK �N�[��3� bcm.hnu �[��� /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ /* * linux/can/bcm.h * * Definitions for CAN Broadcast Manager (BCM) * * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de> * Copyright (c) 2002-2007 Volkswagen Group Electronic Research * All rights reserved. * * 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. * 3. Neither the name of Volkswagen nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * Alternatively, provided that this notice is retained in full, this * software may be distributed under the terms of the GNU General * Public License ("GPL") version 2, in which case the provisions of the * GPL apply INSTEAD OF those given above. * * The provided data structures and external interfaces from this code * are not restricted to be used by modules with a GPL compatible license. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 COPYRIGHT * OWNER OR CONTRIBUTORS 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. */ #ifndef _CAN_BCM_H #define _CAN_BCM_H #include <linux/types.h> #include <linux/can.h> struct bcm_timeval { long tv_sec; long tv_usec; }; /** * struct bcm_msg_head - head of messages to/from the broadcast manager * @opcode: opcode, see enum below. * @flags: special flags, see below. * @count: number of frames to send before changing interval. * @ival1: interval for the first @count frames. * @ival2: interval for the following frames. * @can_id: CAN ID of frames to be sent or received. * @nframes: number of frames appended to the message head. * @frames: array of CAN frames. */ struct bcm_msg_head { __u32 opcode; __u32 flags; __u32 count; struct bcm_timeval ival1, ival2; canid_t can_id; __u32 nframes; struct can_frame frames[0]; }; enum { TX_SETUP = 1, /* create (cyclic) transmission task */ TX_DELETE, /* remove (cyclic) transmission task */ TX_READ, /* read properties of (cyclic) transmission task */ TX_SEND, /* send one CAN frame */ RX_SETUP, /* create RX content filter subscription */ RX_DELETE, /* remove RX content filter subscription */ RX_READ, /* read properties of RX content filter subscription */ TX_STATUS, /* reply to TX_READ request */ TX_EXPIRED, /* notification on performed transmissions (count=0) */ RX_STATUS, /* reply to RX_READ request */ RX_TIMEOUT, /* cyclic message is absent */ RX_CHANGED /* updated CAN frame (detected content change) */ }; #define SETTIMER 0x0001 #define STARTTIMER 0x0002 #define TX_COUNTEVT 0x0004 #define TX_ANNOUNCE 0x0008 #define TX_CP_CAN_ID 0x0010 #define RX_FILTER_ID 0x0020 #define RX_CHECK_DLC 0x0040 #define RX_NO_AUTOTIMER 0x0080 #define RX_ANNOUNCE_RESUME 0x0100 #define TX_RESET_MULTI_IDX 0x0200 #define RX_RTR_FRAME 0x0400 #define CAN_FD_FRAME 0x0800 #endif /* !_UAPI_CAN_BCM_H */ PK �N�[4&�� � vxcan.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ #ifndef _CAN_VXCAN_H #define _CAN_VXCAN_H enum { VXCAN_INFO_UNSPEC, VXCAN_INFO_PEER, __VXCAN_INFO_MAX #define VXCAN_INFO_MAX (__VXCAN_INFO_MAX - 1) }; #endif PK �N�[�"�N N isotp.hnu �[��� PK �N�[�x � netlink.hnu �[��� PK �N�[�/#�Z Z �1 gw.hnu �[��� PK �N�[��c c `Q j1939.hnu �[��� PK �N�[�<h� � �Z error.hnu �[��� PK �N�[Pg�! ! �v raw.hnu �[��� PK �N�[��3� 6� bcm.hnu �[��� PK �N�[4&�� � � vxcan.hnu �[��� PK 3 ��
| ver. 1.6 |
Github
|
.
| PHP 8.2.30 | ??????????? ?????????: 0 |
proxy
|
phpinfo
|
???????????