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)
68struct rtcan_rb_frame {
74 unsigned char can_ifindex;
80 unsigned char can_dlc;
91} __attribute__ ((packed));
95#define EMPTY_RB_FRAME_SIZE \
96 sizeof(struct rtcan_rb_frame) - 8 - RTCAN_TIMESTAMP_SIZE
110 size_t rb_frame_size;
112 struct rtcan_rb_frame rb_frame;
115struct rtcan_filter_list {
130 struct list_head socket_list;
154 unsigned char recv_buf[RTCAN_RXBUF_SIZE];
162 struct list_head tx_wait_head;
176 uint32_t rx_buf_full;
178 struct rtcan_filter_list *flist;
180#ifdef CONFIG_XENO_DRIVERS_CAN_LOOPBACK
196static inline struct rtdm_fd *rtcan_socket_to_fd(
struct rtcan_socket *sock)
204extern struct list_head rtcan_socket_list;
206extern void rtcan_socket_init(
struct rtdm_fd *fd);
207extern 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:176
pipeline_spinlock_t rtdm_lock_t
Lock variable.
Definition driver.h:552
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