|
Xenomai API
2.6.3
|
Real-Time Driver Model for RT-Socket-CAN, CAN device profile header. More...

Go to the source code of this file.
Data Structures | |
| struct | can_bittime_std |
| Standard bit-time parameters according to Bosch. More... | |
| struct | can_bittime_btr |
| Hardware-specific BTR bit-times. More... | |
| struct | can_bittime |
| Custom CAN bit-time definition. More... | |
| struct | can_filter |
| Filter for reception of CAN messages. More... | |
| struct | sockaddr_can |
| Socket address structure for the CAN address family. More... | |
| struct | can_frame |
| Raw CAN frame. More... | |
Macros | |
| #define | AF_CAN 29 |
| CAN address family. | |
| #define | PF_CAN AF_CAN |
| CAN protocol family. | |
| #define | SOL_CAN_RAW 103 |
| CAN socket levels. | |
CAN ID masks | |
| #define | CAN_EFF_MASK 0x1FFFFFFF |
| Bit mask for extended CAN IDs. | |
| #define | CAN_SFF_MASK 0x000007FF |
| Bit mask for standard CAN IDs. | |
CAN ID flags | |
| #define | CAN_EFF_FLAG 0x80000000 |
| Extended frame. | |
| #define | CAN_RTR_FLAG 0x40000000 |
| Remote transmission frame. | |
| #define | CAN_ERR_FLAG 0x20000000 |
| Error frame (see Errors), not valid in struct can_filter. | |
| #define | CAN_INV_FILTER CAN_ERR_FLAG |
| Invert CAN filter definition, only valid in struct can_filter. | |
Particular CAN protocols | |
| #define | CAN_RAW 1 |
Raw protocol of PF_CAN, applicable to socket type SOCK_RAW. | |
CAN controller modes | |
| #define | CAN_CTRLMODE_LISTENONLY 0x1 |
| #define | CAN_CTRLMODE_LOOPBACK 0x2 |
| #define | CAN_CTRLMODE_3_SAMPLES 0x4 |
Timestamp switches | |
Arguments to pass to RTCAN_RTIOC_TAKE_TIMESTAMP | |
| #define | RTCAN_TAKE_NO_TIMESTAMPS 0 |
| Switch off taking timestamps. | |
| #define | RTCAN_TAKE_TIMESTAMPS 1 |
| Do take timestamps. | |
RAW socket options | |
| #define | CAN_RAW_FILTER 0x1 |
| CAN filter definition. | |
| #define | CAN_RAW_ERR_FILTER 0x2 |
| CAN error mask. | |
| #define | CAN_RAW_LOOPBACK 0x3 |
| CAN TX loopback. | |
| #define | CAN_RAW_RECV_OWN_MSGS 0x4 |
| CAN receive own messages. | |
IOCTLs | |
| #define | SIOCGIFINDEX defined_by_kernel_header_file |
| Get CAN interface index by name. | |
| #define | SIOCSCANBAUDRATE _IOW(RTIOC_TYPE_CAN, 0x01, struct ifreq) |
| Set baud rate. | |
| #define | SIOCGCANBAUDRATE _IOWR(RTIOC_TYPE_CAN, 0x02, struct ifreq) |
| Get baud rate. | |
| #define | SIOCSCANCUSTOMBITTIME _IOW(RTIOC_TYPE_CAN, 0x03, struct ifreq) |
| Set custom bit time parameter. | |
| #define | SIOCGCANCUSTOMBITTIME _IOWR(RTIOC_TYPE_CAN, 0x04, struct ifreq) |
| Get custum bit-time parameters. | |
| #define | SIOCSCANMODE _IOW(RTIOC_TYPE_CAN, 0x05, struct ifreq) |
| Set operation mode of CAN controller. | |
| #define | SIOCGCANSTATE _IOWR(RTIOC_TYPE_CAN, 0x06, struct ifreq) |
| Get current state of CAN controller. | |
| #define | SIOCSCANCTRLMODE _IOW(RTIOC_TYPE_CAN, 0x07, struct ifreq) |
| Set special controller modes. | |
| #define | SIOCGCANCTRLMODE _IOWR(RTIOC_TYPE_CAN, 0x08, struct ifreq) |
| Get special controller modes. | |
| #define | RTCAN_RTIOC_TAKE_TIMESTAMP _IOW(RTIOC_TYPE_CAN, 0x09, int) |
| Enable or disable storing a high precision timestamp upon reception of a CAN frame. | |
| #define | RTCAN_RTIOC_RCV_TIMEOUT _IOW(RTIOC_TYPE_CAN, 0x0A, nanosecs_rel_t) |
| Specify a reception timeout for a socket. | |
| #define | RTCAN_RTIOC_SND_TIMEOUT _IOW(RTIOC_TYPE_CAN, 0x0B, nanosecs_rel_t) |
| Specify a transmission timeout for a socket. | |
Error mask | |
Error class (mask) in Note: Error reporting is hardware dependent and most CAN controllers report less detailed error conditions than the SJA1000. Note: In case of a bus-off error condition (CAN_ERR_BUSOFF), the CAN controller is not restarted automatically. It is the application's responsibility to react appropriately, e.g. calling CAN_MODE_START. Note: Bus error interrupts (CAN_ERR_BUSERROR) are enabled when an application is calling a Recv function on a socket listening on bus errors (using CAN_RAW_ERR_FILTER). After one bus error has occured, the interrupt will be disabled to allow the application time for error processing and to efficiently avoid bus error interrupt flooding. | |
| #define | CAN_ERR_TX_TIMEOUT 0x00000001U |
| TX timeout (netdevice driver) | |
| #define | CAN_ERR_LOSTARB 0x00000002U |
| Lost arbitration (see data[0]) | |
| #define | CAN_ERR_CRTL 0x00000004U |
| Controller problems (see data[1]) | |
| #define | CAN_ERR_PROT 0x00000008U |
| Protocol violations (see data[2], data[3]) | |
| #define | CAN_ERR_TRX 0x00000010U |
| Transceiver status (see 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_MASK 0x1FFFFFFFU |
| Omit EFF, RTR, ERR flags. | |
Arbitration lost error | |
Error in the data[0] field of struct can_frame. | |
| #define | CAN_ERR_LOSTARB_UNSPEC 0x00 |
| unspecified | |
Controller problems | |
Error in the data[1] field of struct can_frame. | |
| #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 passive level for RX errors | |
| #define | CAN_ERR_CRTL_TX_PASSIVE 0x20 |
| reached passive level for TX errors | |
Protocol error type | |
Error in the data[2] field of struct can_frame. | |
| #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 occured on transmission | |
Protocol error location | |
Error in the data[4] field of struct can_frame. | |
| #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 | |
| #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 | |
Typedefs | |
| typedef uint32_t | can_id_t |
| Type of CAN id (see CAN_xxx_MASK and CAN_xxx_FLAG) | |
| typedef can_id_t | can_err_mask_t |
| Type of CAN error mask. | |
| typedef uint32_t | can_baudrate_t |
| Baudrate definition in bits per second. | |
| typedef enum CAN_BITTIME_TYPE | can_bittime_type_t |
| See CAN_BITTIME_TYPE. | |
| typedef enum CAN_MODE | can_mode_t |
| See CAN_MODE. | |
| typedef int | can_ctrlmode_t |
| See CAN_CTRLMODE. | |
| typedef enum CAN_STATE | can_state_t |
| See CAN_STATE. | |
| typedef struct can_filter | can_filter_t |
| Filter for reception of CAN messages. | |
| typedef struct can_frame | can_frame_t |
| Raw CAN frame. | |
Enumerations | |
| enum | CAN_BITTIME_TYPE { CAN_BITTIME_STD, CAN_BITTIME_BTR } |
| Supported CAN bit-time types. More... | |
CAN operation modes | |
| enum | CAN_MODE { CAN_MODE_STOP = 0, CAN_MODE_START, CAN_MODE_SLEEP } |
CAN controller states | |
| enum | CAN_STATE { CAN_STATE_ERROR_ACTIVE = 0 , CAN_STATE_ERROR_WARNING = 1 , CAN_STATE_ERROR_PASSIVE = 2 , CAN_STATE_BUS_OFF, CAN_STATE_SCANNING_BAUDRATE, CAN_STATE_STOPPED, CAN_STATE_SLEEPING } |
Real-Time Driver Model for RT-Socket-CAN, CAN device profile header.
This RTDM CAN device profile header is based on:
include/linux/can.h, include/linux/socket.h, net/can/pf_can.h in linux-can.patch, a CAN socket framework for Linux
Copyright (C) 2004, 2005, Robert Schwebel, Benedikt Spranger, Marc Kleine-Budde, Pengutronix
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
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.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.