11#ifndef ZEPHYR_INCLUDE_NET_CANBUS_H_
12#define ZEPHYR_INCLUDE_NET_CANBUS_H_
54BUILD_ASSERT(offsetof(
struct canbus_api, iface_api) == 0);
58struct z_net_canbus_context {
62struct z_net_canbus_config {
63 const struct device *can_dev;
66int z_net_canbus_init(
const struct device *dev);
68extern const struct canbus_api z_net_canbus_api;
74#define Z_NET_CANBUS_DEVICE_DT_DEFINE(node_id) \
75 static struct z_net_canbus_context z_net_canbus_ctx_##node_id; \
76 static const struct z_net_canbus_config z_net_canbus_cfg_##node_id = { \
77 .can_dev = DEVICE_DT_GET(node_id), \
79 NET_DEVICE_INIT(net_canbus_##node_id, DEVICE_DT_NAME(node_id), z_net_canbus_init, NULL, \
80 &z_net_canbus_ctx_##node_id, &z_net_canbus_cfg_##node_id, \
81 CONFIG_NET_CANBUS_INIT_PRIORITY, &z_net_canbus_api, CANBUS_RAW_L2, \
82 NET_L2_GET_CTX_TYPE(CANBUS_RAW_L2), CAN_MTU);
Header file for Controller Area Network (CAN) controller driver API.
uint32_t net_socklen_t
Length of a socket address.
Definition net_ip.h:172
Public API for network interface.
IPv6 and IPv4 definitions.
CAN L2 network driver API.
Definition canbus.h:27
int(* setsockopt)(const struct device *dev, void *obj, int level, int optname, const void *optval, net_socklen_t optlen)
Set socket CAN option.
Definition canbus.h:41
int(* send)(const struct device *dev, struct net_pkt *pkt)
Send a CAN packet by socket.
Definition canbus.h:35
void(* close)(const struct device *dev, int filter_id)
Close the related CAN socket.
Definition canbus.h:38
int(* getsockopt)(const struct device *dev, void *obj, int level, int optname, const void *optval, net_socklen_t *optlen)
Get socket CAN option.
Definition canbus.h:46
struct net_if_api iface_api
The net_if_api must be placed in first position in this struct so that we are compatible with network...
Definition canbus.h:32
Runtime device structure (in ROM) per driver instance.
Definition device.h:543
Network Interface structure.
Definition net_if.h:857
Network packet.
Definition net_pkt.h:119