|
@@ -74,6 +74,8 @@ void nvcan::run()
|
|
fd_set rdfs;
|
|
fd_set rdfs;
|
|
int s[MAXSOCK];
|
|
int s[MAXSOCK];
|
|
int ret;
|
|
int ret;
|
|
|
|
+
|
|
|
|
+ int canfd_on = 1;
|
|
|
|
|
|
struct sockaddr_can addr;
|
|
struct sockaddr_can addr;
|
|
char ctrlmsg[CMSG_SPACE(sizeof(struct timeval) + 3*sizeof(struct timespec) + sizeof(__u32))];
|
|
char ctrlmsg[CMSG_SPACE(sizeof(struct timeval) + 3*sizeof(struct timespec) + sizeof(__u32))];
|
|
@@ -108,6 +110,9 @@ void nvcan::run()
|
|
}
|
|
}
|
|
addr.can_ifindex = ifr.ifr_ifindex;
|
|
addr.can_ifindex = ifr.ifr_ifindex;
|
|
|
|
|
|
|
|
+ //CANFD Support
|
|
|
|
+ setsockopt(s[i], SOL_CAN_RAW, CAN_RAW_FD_FRAMES, &canfd_on, sizeof(canfd_on));
|
|
|
|
+
|
|
if (bind(s[i], (struct sockaddr *)&addr, sizeof(addr)) < 0) {
|
|
if (bind(s[i], (struct sockaddr *)&addr, sizeof(addr)) < 0) {
|
|
mfault->SetFaultState(2,3,"bind error.");
|
|
mfault->SetFaultState(2,3,"bind error.");
|
|
emit SIG_CANOPENSTATE(false,-3,"bind error");
|
|
emit SIG_CANOPENSTATE(false,-3,"bind error");
|