10 #include <linux/can/raw.h>
12 #include <sys/ioctl.h>
33 bool b_result =
false;
34 struct sockaddr_can addr;
55 addr.can_family = AF_CAN;
60 addr.can_ifindex = ifr.ifr_ifindex;
70 if(bind(
can_socket_, (
struct sockaddr *) &addr,
sizeof(addr)) == 0)
102 ROS_ERROR_STREAM(
"[" << __func__ <<
"] There is an opened CAN socket already");
129 bool b_result =
false;
144 if (poll(&pfd, 1, 0) == 1)
147 if (pfd.revents == POLLIN)
164 bool b_result =
false;
173 ssize_t count = read(
can_socket_, &frame,
sizeof(can_frame));
175 if (count ==
sizeof(can_frame))
178 *size = frame.can_dlc;
179 memcpy(data, frame.data, frame.can_dlc);
184 ROS_ERROR_STREAM(
"[" << __func__ <<
"] Error: Incorrect size of CAN frame (size = " << count <<
")");
198 bool b_result =
false;
209 frame.can_dlc = size;
210 memcpy(frame.data, data, frame.can_dlc);
212 ssize_t count = write(
can_socket_, &frame,
sizeof(can_frame));
214 if (count ==
sizeof(can_frame))
220 ROS_ERROR_STREAM(
"[" << __func__ <<
"] Error: Incorrect size of CAN frame (size = " << count <<
")");