Lely core libraries  2.2.5
can.h
Go to the documentation of this file.
1 
34 #ifndef LELY_IO2_LINUX_CAN_H_
35 #define LELY_IO2_LINUX_CAN_H_
36 
37 #include <lely/io2/can.h>
38 #include <lely/io2/sys/io.h>
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 void *io_can_ctrl_alloc(void);
45 void io_can_ctrl_free(void *ptr);
46 io_can_ctrl_t *io_can_ctrl_init(
47  io_can_ctrl_t *ctrl, unsigned int index, size_t txlen);
48 void io_can_ctrl_fini(io_can_ctrl_t *ctrl);
49 
66 io_can_ctrl_t *io_can_ctrl_create_from_name(const char *name, size_t txlen);
67 
84 io_can_ctrl_t *io_can_ctrl_create_from_index(unsigned int index, size_t txlen);
85 
92 
94 const char *io_can_ctrl_get_name(const io_can_ctrl_t *ctrl);
95 
97 unsigned int io_can_ctrl_get_index(const io_can_ctrl_t *ctrl);
98 
105 int io_can_ctrl_get_flags(const io_can_ctrl_t *ctrl);
106 
107 void *io_can_chan_alloc(void);
108 void io_can_chan_free(void *ptr);
109 io_can_chan_t *io_can_chan_init(io_can_chan_t *chan, io_poll_t *poll,
110  ev_exec_t *exec, size_t rxlen);
111 void io_can_chan_fini(io_can_chan_t *chan);
112 
128  io_poll_t *poll, ev_exec_t *exec, size_t rxlen);
129 
132 
137 int io_can_chan_get_handle(const io_can_chan_t *chan);
138 
155 int io_can_chan_open(io_can_chan_t *chan, const io_can_ctrl_t *ctrl, int flags);
156 
172 int io_can_chan_assign(io_can_chan_t *chan, int fd);
173 
184 
189 int io_can_chan_is_open(const io_can_chan_t *chan);
190 
203 
204 #ifdef __cplusplus
205 }
206 #endif
207 
208 #endif // !LELY_IO2_LINUX_CAN_H_
const struct ev_exec_vtbl *const ev_exec_t
An abstract task executor.
Definition: ev.h:29
This header file is part of the I/O library; it contains the abstract CAN bus interface.
const struct io_can_chan_vtbl *const io_can_chan_t
An abstract CAN channel.
Definition: can.h:59
const struct io_can_ctrl_vtbl *const io_can_ctrl_t
An abstract CAN controller.
Definition: can.h:56
void io_can_chan_destroy(io_can_chan_t *chan)
Destroys a CAN channel.
Definition: can_chan.c:405
unsigned int io_can_ctrl_get_index(const io_can_ctrl_t *ctrl)
Returns the interface index of a CAN controller.
Definition: can_ctrl.c:182
int io_can_chan_get_handle(const io_can_chan_t *chan)
Returns the SocketCAN file descriptor associated with a CAN channel, or -1 if the channel is closed.
Definition: can_chan.c:414
int io_can_ctrl_get_flags(const io_can_ctrl_t *ctrl)
Returns the flags specifying which CAN bus features are enabled.
Definition: can_ctrl.c:190
int io_can_chan_close(io_can_chan_t *chan)
Closes the SocketCAN file descriptor associated with a CAN channel.
Definition: can_chan.c:571
io_can_ctrl_t * io_can_ctrl_create_from_index(unsigned int index, size_t txlen)
Creates a new CAN controller from an interface index.
Definition: can_ctrl.c:138
int io_can_chan_open(io_can_chan_t *chan, const io_can_ctrl_t *ctrl, int flags)
Opens a CAN channel.
Definition: can_chan.c:429
int io_can_chan_release(io_can_chan_t *chan)
Dissociates and returns the SocketCAN file descriptor from a CAN channel.
Definition: can_chan.c:557
int io_can_chan_assign(io_can_chan_t *chan, int fd)
Assigns an existing SocketCAN file descriptor to a CAN channel.
Definition: can_chan.c:499
io_can_chan_t * io_can_chan_create(io_poll_t *poll, ev_exec_t *exec, size_t rxlen)
Creates a new CAN channel.
Definition: can_chan.c:378
const char * io_can_ctrl_get_name(const io_can_ctrl_t *ctrl)
Returns the interface name of a CAN controller.
Definition: can_ctrl.c:174
int io_can_chan_is_open(const io_can_chan_t *chan)
Returns 1 if the CAN channel is open and 0 if not.
Definition: can_chan.c:565
io_can_ctrl_t * io_can_ctrl_create_from_name(const char *name, size_t txlen)
Creates a new CAN controller from an interface name.
Definition: can_ctrl.c:129
void io_can_ctrl_destroy(io_can_ctrl_t *ctrl)
Destroys a CAN controller.
Definition: can_ctrl.c:165
This header file is part of the I/O library; it contains system-dependent I/O initialization/finaliza...
An I/O polling interface.
Definition: poll.c:48