31 #ifndef __RTCAN_SOCKET_H_
32 #define __RTCAN_SOCKET_H_
41 #define RTCAN_RXBUF_SIZE CONFIG_XENO_DRIVERS_CAN_RXBUF_SIZE
44 #define RTCAN_TIMESTAMP_SIZE sizeof(nanosecs_abs_t)
48 #define RTCAN_HAS_TIMESTAMP 0x80
51 #define RTCAN_HAS_NO_TIMESTAMP 0x7F
53 #define RTCAN_SOCK_UNBOUND -1
54 #define RTCAN_FLIST_NO_FILTER (struct rtcan_filter_list *)-1
55 #define rtcan_flist_no_filter(f) ((f) == RTCAN_FLIST_NO_FILTER)
56 #define rtcan_sock_has_filter(s) ((s)->flistlen > 0)
57 #define rtcan_sock_is_bound(s) ((s)->flistlen >= 0)
68 struct rtcan_rb_frame {
74 unsigned char can_ifindex;
79 unsigned char can_dlc;
92 #define EMPTY_RB_FRAME_SIZE \
93 sizeof(struct rtcan_rb_frame) - 8 - RTCAN_TIMESTAMP_SIZE
107 size_t rb_frame_size;
109 struct rtcan_rb_frame rb_frame;
112 struct rtcan_filter_list {
125 struct rtcan_socket {
127 struct list_head socket_list;
151 unsigned char recv_buf[RTCAN_RXBUF_SIZE];
159 struct list_head tx_wait_head;
173 uint32_t rx_buf_full;
175 struct rtcan_filter_list *flist;
177 #ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
193 static inline struct rtdm_fd *rtcan_socket_to_fd(
struct rtcan_socket *sock)
201 extern struct list_head rtcan_socket_list;
203 extern void rtcan_socket_init(
struct rtdm_fd *fd);
204 extern void rtcan_socket_cleanup(
struct rtdm_fd *fd);
Real-Time Driver Model for Xenomai, driver API header.
static struct rtdm_fd * rtdm_private_to_fd(void *dev_private)
Locate a device file descriptor structure from its driver private area.
Definition: driver.h:174
static int __attribute__((cold))
Test if a mutex structure contains a valid autoinitializer.
Definition: mutex.c:176
ipipe_spinlock_t rtdm_lock_t
Lock variable.
Definition: driver.h:550
uint64_t nanosecs_abs_t
RTDM type for representing absolute dates.
Definition: rtdm.h:43
int64_t nanosecs_rel_t
RTDM type for representing relative intervals.
Definition: rtdm.h:49
Copyright © 2011 Gilles Chanteperdrix gilles.chanteperdrix@xenomai.org.
Definition: atomic.h:24
Filter for reception of CAN messages.
Definition: can.h:287