Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
Loading...
Searching...
No Matches
common.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2016 OTA keys S.A.
3
* SPDX-License-Identifier: LGPL-2.1-only
4
*/
5
6
#pragma once
7
24
25
#ifdef __cplusplus
26
extern
"C"
{
27
#endif
28
29
#include <stdint.h>
30
#include <
sys/uio.h
>
31
32
#include "
timex.h
"
33
#include "thread.h"
34
#ifdef MODULE_CAN_MBOX
35
#include "
mbox.h
"
36
#endif
37
41
#ifdef MODULE_FDCAN
42
#define DEFAULT_CAN_MAX_DLEN CANFD_MAX_DLEN
43
#else
44
#define DEFAULT_CAN_MAX_DLEN CAN_MAX_DLEN
45
#endif
46
50
typedef
enum
{
51
CANOPT_BITTIMING
,
52
CANOPT_RX_FILTERS
,
53
CANOPT_TEC
,
54
CANOPT_REC
,
55
CANOPT_LEC
,
56
CANOPT_CLOCK
,
57
CANOPT_BITTIMING_CONST
,
58
CANOPT_STATE
,
59
#ifdef MODULE_FDCAN
60
CANOPT_FD_BITTIMING,
61
CANOPT_FD_BITTIMING_CONST,
62
#endif
63
}
canopt_t
;
64
70
typedef
enum
{
71
CANOPT_STATE_OFF
,
72
CANOPT_STATE_SLEEP
,
73
CANOPT_STATE_LISTEN_ONLY
,
74
CANOPT_STATE_ON
,
75
CANOPT_STATE_LOOPBACK
,
76
}
canopt_state_t
;
77
81
typedef
struct
{
82
canopt_t
opt
;
83
uint16_t
context
;
84
void
*
data
;
85
uint16_t
data_len
;
86
}
can_opt_t
;
87
91
enum
can_msg
{
92
/* High level messages */
93
CAN_MSG_ACK
= 0x100,
94
CAN_MSG_SEND_FRAME
,
95
CAN_MSG_ABORT_FRAME
,
96
CAN_MSG_SET
,
97
CAN_MSG_GET
,
98
CAN_MSG_SET_FILTER
,
99
CAN_MSG_REMOVE_FILTER
,
100
CAN_MSG_POWER_UP
,
101
CAN_MSG_POWER_DOWN
,
102
#if defined(MODULE_CAN_TRX) || defined(DOXYGEN)
103
CAN_MSG_SET_TRX
,
104
#endif
105
/* candev internal messages */
106
CAN_MSG_EVENT
= 0x200,
107
CAN_MSG_WAKE_UP
,
108
CAN_MSG_TX_CONFIRMATION
,
109
CAN_MSG_RX_INDICATION
,
110
CAN_MSG_TX_ERROR
,
111
CAN_MSG_RX_ERROR
,
112
CAN_MSG_BUS_OFF
,
113
CAN_MSG_ERROR_PASSIVE
,
114
CAN_MSG_ERROR_WARNING
,
115
#if defined(MODULE_CAN_PM) || defined(DOXYGEN)
116
CAN_MSG_PM
,
117
#endif
118
/* isotp messages */
119
#if defined(MODULE_CAN_ISOTP) || defined(DOXYGEN)
120
CAN_MSG_ISOTP_RX_TIMEOUT
= 0x400,
121
CAN_MSG_ISOTP_TX_TIMEOUT
,
122
#endif
123
};
124
131
typedef
struct
can_rx_data
{
132
struct
iovec
data
;
133
void
*
arg
;
134
}
can_rx_data_t
;
135
139
typedef
enum
{
140
CAN_TYPE_DEFAULT
= 0,
141
#if defined(MODULE_CAN_MBOX) || defined(DOXYGEN)
142
CAN_TYPE_MBOX
,
143
#endif
144
}
can_reg_type_t
;
145
152
typedef
struct
can_reg_entry
{
153
struct
can_reg_entry
*
next
;
154
int
ifnum
;
155
union
{
156
kernel_pid_t
pid
;
157
#if defined(MODULE_CAN_MBOX) || defined(DOXYGEN)
158
mbox_t
*
mbox
;
159
#endif
160
}
target
;
161
#if defined(MODULE_CAN_MBOX) || defined(DOXYGEN)
162
can_reg_type_t
type
;
163
#endif
164
}
can_reg_entry_t
;
165
166
#ifdef __cplusplus
167
}
168
#endif
169
kernel_pid_t
int16_t kernel_pid_t
Unique process identifier.
Definition
sched.h:134
canopt_state_t
canopt_state_t
CAN state options.
Definition
common.h:70
canopt_t
canopt_t
CAN options.
Definition
common.h:50
can_rx_data_t
struct can_rx_data can_rx_data_t
Received data structure.
can_msg
can_msg
Messages which can be sent through the CAN stack.
Definition
common.h:91
can_reg_type_t
can_reg_type_t
registry entry types
Definition
common.h:139
can_reg_entry_t
struct can_reg_entry can_reg_entry_t
registry entry
CANOPT_STATE_OFF
@ CANOPT_STATE_OFF
powered off
Definition
common.h:71
CANOPT_STATE_SLEEP
@ CANOPT_STATE_SLEEP
sleep mode
Definition
common.h:72
CANOPT_STATE_LOOPBACK
@ CANOPT_STATE_LOOPBACK
loopback mode
Definition
common.h:75
CANOPT_STATE_ON
@ CANOPT_STATE_ON
power on, rx / tx mode
Definition
common.h:74
CANOPT_STATE_LISTEN_ONLY
@ CANOPT_STATE_LISTEN_ONLY
listen only mode
Definition
common.h:73
CANOPT_STATE
@ CANOPT_STATE
set controller state canopt_state_t
Definition
common.h:58
CANOPT_RX_FILTERS
@ CANOPT_RX_FILTERS
rx filters
Definition
common.h:52
CANOPT_LEC
@ CANOPT_LEC
Last Error Code.
Definition
common.h:55
CANOPT_BITTIMING_CONST
@ CANOPT_BITTIMING_CONST
controller bittiming parameters
Definition
common.h:57
CANOPT_REC
@ CANOPT_REC
Receive Error Counter.
Definition
common.h:54
CANOPT_TEC
@ CANOPT_TEC
Transmit Error Counter.
Definition
common.h:53
CANOPT_CLOCK
@ CANOPT_CLOCK
controller main clock
Definition
common.h:56
CANOPT_BITTIMING
@ CANOPT_BITTIMING
bit timing parameter
Definition
common.h:51
CAN_MSG_SET_TRX
@ CAN_MSG_SET_TRX
set a transceiver
Definition
common.h:103
CAN_MSG_POWER_UP
@ CAN_MSG_POWER_UP
power up
Definition
common.h:100
CAN_MSG_ERROR_WARNING
@ CAN_MSG_ERROR_WARNING
driver reached error warning
Definition
common.h:114
CAN_MSG_ERROR_PASSIVE
@ CAN_MSG_ERROR_PASSIVE
driver switched in error passive
Definition
common.h:113
CAN_MSG_SET_FILTER
@ CAN_MSG_SET_FILTER
set a filter
Definition
common.h:98
CAN_MSG_POWER_DOWN
@ CAN_MSG_POWER_DOWN
power down
Definition
common.h:101
CAN_MSG_BUS_OFF
@ CAN_MSG_BUS_OFF
bus-off detected
Definition
common.h:112
CAN_MSG_EVENT
@ CAN_MSG_EVENT
driver event
Definition
common.h:106
CAN_MSG_ACK
@ CAN_MSG_ACK
acknowledgment
Definition
common.h:93
CAN_MSG_WAKE_UP
@ CAN_MSG_WAKE_UP
driver has been woken up by bus
Definition
common.h:107
CAN_MSG_TX_CONFIRMATION
@ CAN_MSG_TX_CONFIRMATION
a frame has been sent
Definition
common.h:108
CAN_MSG_RX_ERROR
@ CAN_MSG_RX_ERROR
there was an error when receiving
Definition
common.h:111
CAN_MSG_SEND_FRAME
@ CAN_MSG_SEND_FRAME
send a frame
Definition
common.h:94
CAN_MSG_SET
@ CAN_MSG_SET
set an option
Definition
common.h:96
CAN_MSG_ISOTP_RX_TIMEOUT
@ CAN_MSG_ISOTP_RX_TIMEOUT
isotp rx timeout
Definition
common.h:120
CAN_MSG_RX_INDICATION
@ CAN_MSG_RX_INDICATION
a frame has been received
Definition
common.h:109
CAN_MSG_ABORT_FRAME
@ CAN_MSG_ABORT_FRAME
abort a frame
Definition
common.h:95
CAN_MSG_REMOVE_FILTER
@ CAN_MSG_REMOVE_FILTER
remove a filter
Definition
common.h:99
CAN_MSG_PM
@ CAN_MSG_PM
power management event
Definition
common.h:116
CAN_MSG_GET
@ CAN_MSG_GET
get an option
Definition
common.h:97
CAN_MSG_ISOTP_TX_TIMEOUT
@ CAN_MSG_ISOTP_TX_TIMEOUT
isotp tx timeout
Definition
common.h:121
CAN_MSG_TX_ERROR
@ CAN_MSG_TX_ERROR
there was an error when transmitting
Definition
common.h:110
CAN_TYPE_DEFAULT
@ CAN_TYPE_DEFAULT
default entry (use msg)
Definition
common.h:140
CAN_TYPE_MBOX
@ CAN_TYPE_MBOX
mbox entry
Definition
common.h:142
mbox.h
Mailbox API.
can_opt_t
Structure to pass a CAN option.
Definition
common.h:81
can_opt_t::context
uint16_t context
(optional) context for that option
Definition
common.h:83
can_opt_t::data_len
uint16_t data_len
size of the data / the buffer
Definition
common.h:85
can_opt_t::opt
canopt_t opt
the option to get/set
Definition
common.h:82
can_opt_t::data
void * data
data to set or buffer to read into
Definition
common.h:84
can_reg_entry
registry entry
Definition
common.h:152
can_reg_entry::mbox
mbox_t * mbox
mbox pointer
Definition
common.h:158
can_reg_entry::pid
kernel_pid_t pid
pid of the thread when using msg
Definition
common.h:156
can_reg_entry::target
union can_reg_entry::@110065112330065052322137357235215311127371134047 target
entry target
can_reg_entry::type
can_reg_type_t type
entry type
Definition
common.h:162
can_reg_entry::ifnum
int ifnum
interface number for the entry
Definition
common.h:154
can_reg_entry::next
struct can_reg_entry * next
next for linked list
Definition
common.h:153
can_rx_data
Received data structure.
Definition
common.h:131
can_rx_data::arg
void * arg
upper layer private param
Definition
common.h:133
can_rx_data::data
struct iovec data
iovec containing received data
Definition
common.h:132
iovec
Structure for scatter/gather I/O.
Definition
uio.h:33
mbox_t
Mailbox struct definition.
Definition
mbox.h:38
timex.h
Utility library for comparing and computing timestamps.
uio.h
libc header for scatter/gather I/O
Generated on Sat Jul 25 2026 21:37:43 by
1.13.2