Xenomai
3.0.5
|
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... | |
struct | can_ifreq |
CAN interface request descriptor. 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. More... | |
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. More... | |
#define | CAN_RAW_ERR_FILTER 0x2 |
CAN error mask. More... | |
#define | CAN_RAW_LOOPBACK 0x3 |
CAN TX loopback. More... | |
#define | CAN_RAW_RECV_OWN_MSGS 0x4 |
CAN receive own messages. More... | |
IOCTLs | |
| |
#define | SIOCGIFINDEX defined_by_kernel_header_file |
Get CAN interface index by name. More... | |
#define | SIOCSCANBAUDRATE _IOW(RTIOC_TYPE_CAN, 0x01, struct can_ifreq) |
Set baud rate. More... | |
#define | SIOCGCANBAUDRATE _IOWR(RTIOC_TYPE_CAN, 0x02, struct can_ifreq) |
Get baud rate. More... | |
#define | SIOCSCANCUSTOMBITTIME _IOW(RTIOC_TYPE_CAN, 0x03, struct can_ifreq) |
Set custom bit time parameter. More... | |
#define | SIOCGCANCUSTOMBITTIME _IOWR(RTIOC_TYPE_CAN, 0x04, struct can_ifreq) |
Get custom bit-time parameters. More... | |
#define | SIOCSCANMODE _IOW(RTIOC_TYPE_CAN, 0x05, struct can_ifreq) |
Set operation mode of CAN controller. More... | |
#define | SIOCGCANSTATE _IOWR(RTIOC_TYPE_CAN, 0x06, struct can_ifreq) |
Get current state of CAN controller. More... | |
#define | SIOCSCANCTRLMODE _IOW(RTIOC_TYPE_CAN, 0x07, struct can_ifreq) |
Set special controller modes. More... | |
#define | SIOCGCANCTRLMODE _IOWR(RTIOC_TYPE_CAN, 0x08, struct can_ifreq) |
Get special controller modes. More... | |
#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. More... | |
#define | RTCAN_RTIOC_RCV_TIMEOUT _IOW(RTIOC_TYPE_CAN, 0x0A, nanosecs_rel_t) |
Specify a reception timeout for a socket. More... | |
#define | RTCAN_RTIOC_SND_TIMEOUT _IOW(RTIOC_TYPE_CAN, 0x0B, nanosecs_rel_t) |
Specify a transmission timeout for a socket. More... | |
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 More... | |
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. More... | |
typedef struct can_frame | can_frame_t |
Raw CAN frame. More... | |
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_ACTIVE = 0, CAN_STATE_ERROR_WARNING = 1, CAN_STATE_BUS_WARNING = 1, CAN_STATE_ERROR_PASSIVE = 2, CAN_STATE_BUS_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.