Merge 0003cad81a into 41ea759237
commit
fabe75ab92
|
|
@ -321,7 +321,9 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
if ((s[i] = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) {
|
if ((s[i] = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) {
|
||||||
perror("socket");
|
perror("socket");
|
||||||
return 1;
|
while (--i > 0)
|
||||||
|
close(s[i]);
|
||||||
|
goto close_accsocket;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask[i] || value[i]) {
|
if (mask[i] || value[i]) {
|
||||||
|
|
@ -377,17 +379,32 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
|
|
||||||
FD_ZERO(&rdfs);
|
int maxfd = accsocket;
|
||||||
for (i=0; i<currmax; i++)
|
|
||||||
FD_SET(s[i], &rdfs);
|
|
||||||
|
|
||||||
if ((ret = select(s[currmax-1]+1, &rdfs, NULL, NULL, NULL)) < 0) {
|
FD_ZERO(&rdfs);
|
||||||
|
FD_SET(accsocket, &rdfs);
|
||||||
|
for (i=0; i<currmax; i++) {
|
||||||
|
maxfd = s[i] > maxfd ? s[i] : maxfd;
|
||||||
|
FD_SET(s[i], &rdfs);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((ret = select(maxfd + 1, &rdfs, NULL, NULL, NULL)) < 0) {
|
||||||
//perror("select");
|
//perror("select");
|
||||||
running = 0;
|
running = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=0; i<currmax; i++) { /* check all CAN RAW sockets */
|
for (i=0; i<currmax; i++) { /* check all CAN RAW sockets */
|
||||||
|
if (FD_ISSET(accsocket, &rdfs)) {
|
||||||
|
char unused[64];
|
||||||
|
|
||||||
|
nbytes = recv(accsocket, unused, sizeof(unused), 0);
|
||||||
|
if (nbytes <= 0) {
|
||||||
|
if (nbytes < 0)
|
||||||
|
perror("accsocket read");
|
||||||
|
goto close_can;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (FD_ISSET(s[i], &rdfs)) {
|
if (FD_ISSET(s[i], &rdfs)) {
|
||||||
|
|
||||||
|
|
@ -397,7 +414,7 @@ int main(int argc, char **argv)
|
||||||
if ((nbytes = recvfrom(s[i], &frame, CANFD_MTU, 0,
|
if ((nbytes = recvfrom(s[i], &frame, CANFD_MTU, 0,
|
||||||
(struct sockaddr*)&addr, &len)) < 0) {
|
(struct sockaddr*)&addr, &len)) < 0) {
|
||||||
perror("read");
|
perror("read");
|
||||||
return 1;
|
goto close_can;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((size_t)nbytes == CAN_MTU)
|
if ((size_t)nbytes == CAN_MTU)
|
||||||
|
|
@ -406,7 +423,7 @@ int main(int argc, char **argv)
|
||||||
maxdlen = CANFD_MAX_DLEN;
|
maxdlen = CANFD_MAX_DLEN;
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, "read: incomplete CAN frame\n");
|
fprintf(stderr, "read: incomplete CAN frame\n");
|
||||||
return 1;
|
goto close_can;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ioctl(s[i], SIOCGSTAMP, &tv) < 0)
|
if (ioctl(s[i], SIOCGSTAMP, &tv) < 0)
|
||||||
|
|
@ -422,7 +439,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
if (write(accsocket, temp, strlen(temp)) < 0) {
|
if (write(accsocket, temp, strlen(temp)) < 0) {
|
||||||
perror("writeaccsock");
|
perror("writeaccsock");
|
||||||
return 1;
|
goto close_can;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
@ -436,9 +453,11 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
close_can:
|
||||||
for (i=0; i<currmax; i++)
|
for (i=0; i<currmax; i++)
|
||||||
close(s[i]);
|
close(s[i]);
|
||||||
|
|
||||||
|
close_accsocket:
|
||||||
close(accsocket);
|
close(accsocket);
|
||||||
|
|
||||||
if (signal_num)
|
if (signal_num)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue