Loading...
Searching...
No Matches
can.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016 OTA keys S.A.
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser General
5 * Public License v2.1. See the file LICENSE in the top level directory for more
6 * details.
7 */
8
26#ifndef CAN_CAN_H
27#define CAN_CAN_H
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#include <stdint.h>
34
35#if defined(__linux__)
36
37#include <linux/can.h>
38#include <libsocketcan.h>
39
40#else
41
47#define CAN_MAX_DLEN (8)
48#define CANFD_MAX_DLEN (64)
55/* special address description flags for the CAN_ID */
56#define CAN_EFF_FLAG (0x80000000U)
57#define CAN_RTR_FLAG (0x40000000U)
58#define CAN_ERR_FLAG (0x20000000U)
60/* valid bits in CAN ID for frame formats */
61#define CAN_SFF_MASK (0x000007FFU)
62#define CAN_EFF_MASK (0x1FFFFFFFU)
63#define CAN_ERR_MASK (0x1FFFFFFFU)
70#define CANFD_BRS 0x01
71#define CANFD_ESI 0x02
72#define CANFD_FDF 0x04
87
96typedef uint32_t canid_t;
97
101struct can_frame {
103 union {
104 uint8_t len;
105 uint8_t can_dlc;
106 };
107 uint8_t __pad;
108 uint8_t __res0;
109 uint8_t __res1;
111 uint8_t data[CAN_MAX_DLEN] __attribute__((aligned(8)));
112};
113
114#ifdef MODULE_FDCAN
115struct canfd_frame {
116 canid_t can_id;
117 uint8_t len;
118 uint8_t flags;
119 uint8_t __res0;
120 uint8_t __res1;
122 uint8_t data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
123};
124#endif
125
132#if (MODULE_CAN_RX_MAILBOX)
133 uint8_t target_mailbox;
134#endif
135};
136
145 uint32_t bitrate;
146 uint32_t sample_point;
147 uint32_t tq;
148 uint32_t prop_seg;
149 uint32_t phase_seg1;
150 uint32_t phase_seg2;
151 uint32_t sjw;
152 uint32_t brp;
153};
154
161 uint32_t tseg1_min;
162 uint32_t tseg1_max;
163 uint32_t tseg2_min;
164 uint32_t tseg2_max;
165 uint32_t sjw_max;
166 uint32_t brp_min;
167 uint32_t brp_max;
168 uint32_t brp_inc;
169};
170
171#endif /* defined(__linux__) */
172
176#ifdef MODULE_FDCAN
177typedef struct canfd_frame can_frame_t;
178#else
179typedef struct can_frame can_frame_t;
180#endif
181
182#ifdef __cplusplus
183}
184#endif
185
186#endif /* CAN_CAN_H */
187
#define CANFD_MAX_DLEN
CAN FD maximum data length.
Definition can.h:48
can_state
CAN operational and error states.
Definition can.h:78
uint32_t canid_t
Controller Area Network Identifier structure.
Definition can.h:96
#define CAN_MAX_DLEN
Max data length for classic and FD CAN frames (compliant with libsocketcan macros)
Definition can.h:47
@ CAN_STATE_ERROR_ACTIVE
RX/TX error count < 96.
Definition can.h:79
@ CAN_STATE_ERROR_WARNING
RX/TX error count < 128.
Definition can.h:80
@ CAN_STATE_SLEEPING
Device is sleeping.
Definition can.h:84
@ CAN_STATE_STOPPED
Device is stopped.
Definition can.h:83
@ CAN_STATE_BUS_OFF
RX/TX error count >= 256.
Definition can.h:82
@ CAN_STATE_ERROR_PASSIVE
RX/TX error count < 256.
Definition can.h:81
CAN hardware-dependent bit-timing constant.
Definition can.h:160
uint32_t brp_min
Bit-rate prescaler, min value.
Definition can.h:166
uint32_t tseg1_min
Time segment 1 = prop_seg + phase_seg1, min value.
Definition can.h:161
uint32_t brp_max
Bit-rate prescaler, max value.
Definition can.h:167
uint32_t tseg1_max
Time segment 1, max value.
Definition can.h:162
uint32_t tseg2_min
Time segment 2 = phase_seg2, min value.
Definition can.h:163
uint32_t brp_inc
Bit-rate prescaler, increment.
Definition can.h:168
uint32_t tseg2_max
Time segment 2, max value.
Definition can.h:164
uint32_t sjw_max
Synchronisation jump width.
Definition can.h:165
CAN bit-timing parameters.
Definition can.h:144
uint32_t tq
Time quanta (TQ) in nanoseconds.
Definition can.h:147
uint32_t sample_point
Sample point in one-tenth of a percent.
Definition can.h:146
uint32_t phase_seg1
Phase buffer segment 1 in TQs.
Definition can.h:149
uint32_t bitrate
Bit-rate in bits/second.
Definition can.h:145
uint32_t brp
Bit-rate prescaler.
Definition can.h:152
uint32_t phase_seg2
Phase buffer segment 2 in TQs.
Definition can.h:150
uint32_t sjw
Synchronisation jump width in TQs.
Definition can.h:151
uint32_t prop_seg
Propagation segment in TQs.
Definition can.h:148
Controller Area Network filter.
Definition can.h:129
canid_t can_mask
Mask.
Definition can.h:131
canid_t can_id
CAN ID.
Definition can.h:130
Controller Area Network frame.
Definition can.h:101
uint8_t __pad
padding
Definition can.h:107
uint8_t len
frame payload length in byte (0 .
Definition can.h:104
uint8_t __res1
reserved / padding
Definition can.h:109
uint8_t can_dlc
deprecated - see SocketCAN documentation
Definition can.h:105
uint8_t __res0
reserved / padding
Definition can.h:108
uint8_t data[CAN_MAX_DLEN]
Frame data.
Definition can.h:111
canid_t can_id
32 bit CAN_ID + EFF/RTR/ERR flags
Definition can.h:102