| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 
							- /** @file
 
-  * @brief Socket CAN definitions.
 
-  *
 
-  * Definitions for socket CAN support.
 
-  */
 
- /*
 
-  * Copyright (c) 2019 Intel Corporation
 
-  *
 
-  * SPDX-License-Identifier: Apache-2.0
 
-  */
 
- #ifndef ZEPHYR_INCLUDE_NET_SOCKET_CAN_H_
 
- #define ZEPHYR_INCLUDE_NET_SOCKET_CAN_H_
 
- #include <zephyr/types.h>
 
- #include <net/net_ip.h>
 
- #include <net/net_if.h>
 
- #include <drivers/can.h>
 
- #ifdef __cplusplus
 
- extern "C" {
 
- #endif
 
- /**
 
-  * @brief Socket CAN library
 
-  * @defgroup socket_can Network Core Library
 
-  * @ingroup networking
 
-  * @{
 
-  */
 
- /* Protocols of the protocol family PF_CAN */
 
- #define CAN_RAW 1
 
- /* Socket CAN options */
 
- #define SOL_CAN_BASE 100
 
- #define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW)
 
- enum {
 
- 	CAN_RAW_FILTER = 1,
 
- };
 
- /* Socket CAN MTU size */
 
- #define CAN_MTU		CAN_MAX_DLEN
 
- /**
 
-  * struct sockaddr_can - The sockaddr structure for CAN sockets
 
-  *
 
-  */
 
- struct sockaddr_can {
 
- 	sa_family_t can_family;
 
- 	int         can_ifindex;
 
- };
 
- /**
 
-  * CAN L2 driver API. Used by socket CAN.
 
-  */
 
- struct canbus_api {
 
- 	/**
 
- 	 * The net_if_api must be placed in first position in this
 
- 	 * struct so that we are compatible with network interface API.
 
- 	 */
 
- 	struct net_if_api iface_api;
 
- 	/** Send a CAN packet by socket */
 
- 	int (*send)(const struct device *dev, struct net_pkt *pkt);
 
- 	/** Close the related CAN socket */
 
- 	void (*close)(const struct device *dev, int filter_id);
 
- 	/** Set socket CAN option */
 
- 	int (*setsockopt)(const struct device *dev, void *obj, int level,
 
- 			  int optname,
 
- 			  const void *optval, socklen_t optlen);
 
- 	/** Get socket CAN option */
 
- 	int (*getsockopt)(const struct device *dev, void *obj, int level,
 
- 			  int optname,
 
- 			  const void *optval, socklen_t *optlen);
 
- };
 
- /* Make sure that the network interface API is properly setup inside
 
-  * CANBUS API struct (it is the first one).
 
-  */
 
- BUILD_ASSERT(offsetof(struct canbus_api, iface_api) == 0);
 
- /**
 
-  * @}
 
-  */
 
- #ifdef __cplusplus
 
- }
 
- #endif
 
- #endif /* ZEPHYR_INCLUDE_NET_SOCKET_CAN_H_ */
 
 
  |