Compare commits
1 Commits
a6f927d8d2
...
6245ad6de9
| Author | SHA1 | Date |
|---|---|---|
|
|
6245ad6de9 |
38
bcmserver.c
38
bcmserver.c
|
|
@ -153,7 +153,7 @@ int main(void)
|
||||||
|
|
||||||
char buf[MAXLEN];
|
char buf[MAXLEN];
|
||||||
char format[FORMATSZ];
|
char format[FORMATSZ];
|
||||||
char rxmsg[64];
|
char rxmsg[50];
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wpragmas"
|
#pragma GCC diagnostic ignored "-Wpragmas"
|
||||||
|
|
@ -234,7 +234,7 @@ int main(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
again:
|
|
||||||
FD_ZERO(&readfds);
|
FD_ZERO(&readfds);
|
||||||
FD_SET(sc, &readfds);
|
FD_SET(sc, &readfds);
|
||||||
FD_SET(sa, &readfds);
|
FD_SET(sa, &readfds);
|
||||||
|
|
@ -242,8 +242,6 @@ again:
|
||||||
select((sc > sa)?sc+1:sa+1, &readfds, NULL, NULL, NULL);
|
select((sc > sa)?sc+1:sa+1, &readfds, NULL, NULL, NULL);
|
||||||
|
|
||||||
if (FD_ISSET(sc, &readfds)) {
|
if (FD_ISSET(sc, &readfds)) {
|
||||||
size_t size = sizeof(rxmsg);
|
|
||||||
int len = 0, res;
|
|
||||||
|
|
||||||
recvfrom(sc, &msg, sizeof(msg), 0,
|
recvfrom(sc, &msg, sizeof(msg), 0,
|
||||||
(struct sockaddr*)&caddr, &caddrlen);
|
(struct sockaddr*)&caddr, &caddrlen);
|
||||||
|
|
@ -251,35 +249,17 @@ again:
|
||||||
ifr.ifr_ifindex = caddr.can_ifindex;
|
ifr.ifr_ifindex = caddr.can_ifindex;
|
||||||
ioctl(sc, SIOCGIFNAME, &ifr);
|
ioctl(sc, SIOCGIFNAME, &ifr);
|
||||||
|
|
||||||
res = snprintf(rxmsg, size, "< %s %03X %d ", ifr.ifr_name,
|
sprintf(rxmsg, "< %s %03X %d ", ifr.ifr_name,
|
||||||
msg.msg_head.can_id, msg.frame.can_dlc);
|
msg.msg_head.can_id, msg.frame.can_dlc);
|
||||||
if (res < 0 || (size_t)res >= size) {
|
|
||||||
printf("Error: rxmsg buffer (size %zu) too small for data.\n", size);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
len += res;
|
for ( i = 0; i < msg.frame.can_dlc; i++)
|
||||||
|
sprintf(rxmsg + strlen(rxmsg), "%02X ",
|
||||||
for (i = 0; i < msg.frame.can_dlc; i++) {
|
msg.frame.data[i]);
|
||||||
res = snprintf(rxmsg + len, size - len, "%02X ", msg.frame.data[i]);
|
|
||||||
if (res < 0 || (size_t)res >= (size - len)) {
|
|
||||||
printf("Error: rxmsg buffer (size %zu) too small for data.\n", size);
|
|
||||||
goto again;
|
|
||||||
}
|
|
||||||
|
|
||||||
len += res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* delimiter '\0' for Adobe(TM) Flash(TM) XML sockets */
|
/* delimiter '\0' for Adobe(TM) Flash(TM) XML sockets */
|
||||||
res = snprintf(rxmsg + len, size - len, ">");
|
strcat(rxmsg, ">\0");
|
||||||
if (res < 0 || (size_t)res >= (size - len)) {
|
|
||||||
printf("Error: rxmsg buffer (size %zu) too small for data.\n", size);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
len += res;
|
send(sa, rxmsg, strlen(rxmsg) + 1, 0);
|
||||||
|
|
||||||
send(sa, rxmsg, len + 1, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue