6#include <linux/can/raw.h>
17 sockaddr_can destAddr;
18 destAddr.can_family = AF_CAN;
30 sockaddr_can clientAddr;
31 socklen_t addrLen =
sizeof(clientAddr);
37 interface = getInterfaceName(clientAddr);
45 poll.events = POLLIN | POLLPRI | POLLRDHUP;
49 if( ret == 0)
return 0;
52 if( poll.revents & POLLRDHUP)
55 if( poll.revents & POLLIN || poll.revents & POLLPRI)
66 (
const raw_type*)filter,
67 sizeof(filter) *
len) < 0)
76 (
const raw_type*)filter,
77 sizeof(filter) *
len) < 0)
83 int loopback = enable;
88 sizeof(loopback)) < 0)
94 int recv_own_msgs = enable;
97 CAN_RAW_RECV_OWN_MSGS,
98 (raw_type*)&recv_own_msgs,
99 sizeof(recv_own_msgs)) < 0)
#define TEMP_FAILURE_RETRY(expression)
Structure of id and mask used by filters.
void setErrorFilter(const can_filter *filters, size_t len)
void setLocalLoopback(bool enable)
int timedReceiveFrom(void *buffer, size_t len, std::string &interface, int timeout)
int receiveFrom(void *buffer, size_t len, std::string &interface)
void setReceiveFilter(const can_filter *filters, size_t len)
void sendTo(const void *buffer, size_t len, std::string_view interface)
void setReceiveOwnMessages(bool enable)
int getInterfaceIndex(std::string_view interface) const
get CAN interface index from interface name
CANSocket(int type, int protocol)
allows a subclass to create new socket
Signals a problem with the execution of a socket call.