fix accept code
This commit is contained in:
parent
ca92513634
commit
80bc6c62c3
3 changed files with 41 additions and 69 deletions
57
dev_in.c
57
dev_in.c
|
|
@ -59,61 +59,16 @@ typedef struct dev_in {
|
|||
static int map_message_from_iio(dev_in_iio_t *const in_iio, in_message_t *const messages, size_t messages_len) {
|
||||
int res = -EIO;
|
||||
|
||||
/*
|
||||
* data layout is:
|
||||
* - [0][0...2] => [gyro][x...z]
|
||||
* - [1][0...2] => [acce][x...z]
|
||||
*
|
||||
*/
|
||||
uint16_t data[2][3];
|
||||
uint8_t data[32];
|
||||
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[0][0], sizeof(uint16_t));
|
||||
if (res != sizeof(uint16_t)) {
|
||||
fprintf(stderr, "Error reading from %s: %d\n", dev_iio_get_name(in_iio->iiodev), res);
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[0], sizeof(data));
|
||||
if (res == -1) {
|
||||
res = errno;
|
||||
res = res > 0 ? -1 * res : res;
|
||||
goto send_message_from_iio_err;
|
||||
} else {
|
||||
printf("OK\n");
|
||||
}
|
||||
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[0][1], sizeof(uint16_t));
|
||||
if (res != sizeof(uint16_t)) {
|
||||
fprintf(stderr, "Error reading from %s: %d\n", dev_iio_get_name(in_iio->iiodev), res);
|
||||
goto send_message_from_iio_err;
|
||||
} else {
|
||||
printf("OK\n");
|
||||
}
|
||||
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[0][2], sizeof(uint16_t));
|
||||
if (res != sizeof(uint16_t)) {
|
||||
fprintf(stderr, "Error reading from %s: %d\n", dev_iio_get_name(in_iio->iiodev), res);
|
||||
goto send_message_from_iio_err;
|
||||
} else {
|
||||
printf("OK\n");
|
||||
}
|
||||
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[1][0], sizeof(uint16_t));
|
||||
if (res != sizeof(uint16_t)) {
|
||||
fprintf(stderr, "Error reading from %s: %d\n", dev_iio_get_name(in_iio->iiodev), res);
|
||||
goto send_message_from_iio_err;
|
||||
} else {
|
||||
printf("OK\n");
|
||||
}
|
||||
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[1][1], sizeof(uint16_t));
|
||||
if (res != sizeof(uint16_t)) {
|
||||
fprintf(stderr, "Error reading from %s: %d\n", dev_iio_get_name(in_iio->iiodev), res);
|
||||
goto send_message_from_iio_err;
|
||||
} else {
|
||||
printf("OK\n");
|
||||
}
|
||||
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[1][2], sizeof(uint16_t));
|
||||
if (res != sizeof(uint16_t)) {
|
||||
fprintf(stderr, "Error reading from %s: %d\n", dev_iio_get_name(in_iio->iiodev), res);
|
||||
goto send_message_from_iio_err;
|
||||
} else {
|
||||
printf("OK\n");
|
||||
}
|
||||
res = 0;
|
||||
|
||||
send_message_from_iio_err:
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include <math.h>
|
||||
#include <termios.h>
|
||||
#include <dirent.h>
|
||||
#include <poll.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
|
|
@ -24,6 +25,7 @@
|
|||
#include <sys/select.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/signalfd.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
#include <linux/hidraw.h>
|
||||
|
|
|
|||
15
stray_ally.c
15
stray_ally.c
|
|
@ -59,6 +59,12 @@ int main(int argc, char ** argv) {
|
|||
goto main_err;
|
||||
}
|
||||
|
||||
const uint64_t timeout_ms = 1500;
|
||||
|
||||
struct pollfd poll_fds[2];
|
||||
poll_fds[0].fd = -1 /*signalfd(-1, )*/;
|
||||
poll_fds[0].events = POLL_IN;
|
||||
|
||||
int sd=-1;
|
||||
struct sockaddr_un serveraddr;
|
||||
do {
|
||||
|
|
@ -87,7 +93,15 @@ int main(int argc, char ** argv) {
|
|||
break;
|
||||
}
|
||||
|
||||
poll_fds[1].fd = sd;
|
||||
poll_fds[1].events = POLL_IN;
|
||||
|
||||
while (true) {
|
||||
const int poll_ret = poll(poll_fds, sizeof(poll_fds) / sizeof(poll_fds[0]), timeout_ms);
|
||||
|
||||
if (poll_fds[0].revents & POLLIN) {
|
||||
// TODO: read for signals
|
||||
} else if (poll_fds[1].revents & POLLIN) {
|
||||
const int client_fd = accept(sd, NULL, NULL);
|
||||
if (client_fd < 0) {
|
||||
fprintf(stderr, "Error in getting a client connected: %d\n", client_fd);
|
||||
|
|
@ -112,6 +126,7 @@ int main(int argc, char ** argv) {
|
|||
pthread_mutex_unlock(&dev_out_thread_data.communication.endpoint.ssocket.mutex);
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (false);
|
||||
|
||||
if (sd != -1) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue