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 
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 {
59 #ifdef MODULE_FDCAN
60  CANOPT_FD_BITTIMING,
61  CANOPT_FD_BITTIMING_CONST,
62 #endif
63 } canopt_t;
64 
70 typedef enum {
77 
81 typedef struct {
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,
102 #if defined(MODULE_CAN_TRX) || defined(DOXYGEN)
104 #endif
105  /* candev internal messages */
106  CAN_MSG_EVENT = 0x200,
115 #if defined(MODULE_CAN_PM) || defined(DOXYGEN)
117 #endif
118  /* isotp messages */
119 #if defined(MODULE_CAN_ISOTP) || defined(DOXYGEN)
122 #endif
123 };
124 
131 typedef struct can_rx_data {
132  struct iovec data;
133  void *arg;
135 
139 typedef enum {
141 #if defined(MODULE_CAN_MBOX) || defined(DOXYGEN)
143 #endif
145 
152 typedef struct can_reg_entry {
153  struct can_reg_entry *next;
154  int ifnum;
155  union {
157 #if defined(MODULE_CAN_MBOX) || defined(DOXYGEN)
159 #endif
160  } target;
161 #if defined(MODULE_CAN_MBOX) || defined(DOXYGEN)
163 #endif
165 
166 #ifdef __cplusplus
167 }
168 #endif
169 
int16_t kernel_pid_t
Unique process identifier.
Definition: sched.h:135
canopt_state_t
CAN state options.
Definition: common.h:70
canopt_t
CAN options.
Definition: common.h:50
struct can_rx_data can_rx_data_t
Received data structure.
can_msg
Messages which can be sent through the CAN stack.
Definition: common.h:91
can_reg_type_t
registry entry types
Definition: common.h:139
struct can_reg_entry can_reg_entry_t
registry entry
@ CANOPT_STATE_OFF
powered off
Definition: common.h:71
@ CANOPT_STATE_SLEEP
sleep mode
Definition: common.h:72
@ CANOPT_STATE_LOOPBACK
loopback mode
Definition: common.h:75
@ CANOPT_STATE_ON
power on, rx / tx mode
Definition: common.h:74
@ CANOPT_STATE_LISTEN_ONLY
listen only mode
Definition: common.h:73
@ CANOPT_STATE
set controller state canopt_state_t
Definition: common.h:58
@ CANOPT_RX_FILTERS
rx filters
Definition: common.h:52
@ CANOPT_LEC
Last Error Code.
Definition: common.h:55
@ CANOPT_BITTIMING_CONST
controller bittiming parameters
Definition: common.h:57
@ CANOPT_REC
Receive Error Counter.
Definition: common.h:54
@ CANOPT_TEC
Transmit Error Counter.
Definition: common.h:53
@ CANOPT_CLOCK
controller main clock
Definition: common.h:56
@ CANOPT_BITTIMING
bit timing parameter
Definition: common.h:51
@ CAN_MSG_SET_TRX
set a transceiver
Definition: common.h:103
@ CAN_MSG_POWER_UP
power up
Definition: common.h:100
@ CAN_MSG_ERROR_WARNING
driver reached error warning
Definition: common.h:114
@ CAN_MSG_ERROR_PASSIVE
driver switched in error passive
Definition: common.h:113
@ CAN_MSG_SET_FILTER
set a filter
Definition: common.h:98
@ CAN_MSG_POWER_DOWN
power down
Definition: common.h:101
@ CAN_MSG_BUS_OFF
bus-off detected
Definition: common.h:112
@ CAN_MSG_EVENT
driver event
Definition: common.h:106
@ CAN_MSG_ACK
acknowledgment
Definition: common.h:93
@ CAN_MSG_WAKE_UP
driver has been woken up by bus
Definition: common.h:107
@ CAN_MSG_TX_CONFIRMATION
a frame has been sent
Definition: common.h:108
@ CAN_MSG_RX_ERROR
there was an error when receiving
Definition: common.h:111
@ CAN_MSG_SEND_FRAME
send a frame
Definition: common.h:94
@ CAN_MSG_SET
set an option
Definition: common.h:96
@ CAN_MSG_ISOTP_RX_TIMEOUT
isotp rx timeout
Definition: common.h:120
@ CAN_MSG_RX_INDICATION
a frame has been received
Definition: common.h:109
@ CAN_MSG_ABORT_FRAME
abort a frame
Definition: common.h:95
@ CAN_MSG_REMOVE_FILTER
remove a filter
Definition: common.h:99
@ CAN_MSG_PM
power management event
Definition: common.h:116
@ CAN_MSG_GET
get an option
Definition: common.h:97
@ CAN_MSG_ISOTP_TX_TIMEOUT
isotp tx timeout
Definition: common.h:121
@ CAN_MSG_TX_ERROR
there was an error when transmitting
Definition: common.h:110
@ CAN_TYPE_DEFAULT
default entry (use msg)
Definition: common.h:140
@ CAN_TYPE_MBOX
mbox entry
Definition: common.h:142
Mailbox API.
Structure to pass a CAN option.
Definition: common.h:81
uint16_t context
(optional) context for that option
Definition: common.h:83
canopt_t opt
the option to get/set
Definition: common.h:82
void * data
data to set or buffer to read into
Definition: common.h:84
registry entry
Definition: common.h:152
union can_reg_entry::@332 target
entry target
mbox_t * mbox
mbox pointer
Definition: common.h:158
kernel_pid_t pid
pid of the thread when using msg
Definition: common.h:156
can_reg_type_t type
entry type
Definition: common.h:162
int ifnum
interface number for the entry
Definition: common.h:154
struct can_reg_entry * next
next for linked list
Definition: common.h:153
Received data structure.
Definition: common.h:131
void * arg
upper layer private param
Definition: common.h:133
struct iovec data
iovec containing received data
Definition: common.h:132
Structure for scatter/gather I/O.
Definition: uio.h:33
Mailbox struct definition.
Definition: mbox.h:37
Utility library for comparing and computing timestamps.
libc header for scatter/gather I/O