report gyro & accel buffer to the output device
This commit is contained in:
parent
7985256277
commit
f87028f8f7
3 changed files with 60 additions and 3 deletions
28
dev_in.c
28
dev_in.c
|
|
@ -5,8 +5,6 @@
|
|||
#include "message.h"
|
||||
#include "dev_evdev.h"
|
||||
#include "dev_iio.h"
|
||||
#include <libevdev-1.0/libevdev/libevdev.h>
|
||||
#include <linux/input-event-codes.h>
|
||||
|
||||
typedef enum dev_in_type {
|
||||
DEV_IN_TYPE_NONE,
|
||||
|
|
@ -61,6 +59,9 @@ static int map_message_from_iio(dev_in_iio_t *const in_iio, in_message_t *const
|
|||
|
||||
uint8_t data[32];
|
||||
|
||||
struct timeval read_time;
|
||||
gettimeofday(&read_time, NULL);
|
||||
|
||||
res = read(dev_iio_get_buffer_fd(in_iio->iiodev), &data[0], sizeof(data));
|
||||
if (res == -1) {
|
||||
res = errno;
|
||||
|
|
@ -68,7 +69,28 @@ static int map_message_from_iio(dev_in_iio_t *const in_iio, in_message_t *const
|
|||
goto send_message_from_iio_err;
|
||||
}
|
||||
|
||||
res = 0;
|
||||
if (res != 24) {
|
||||
fprintf(stderr, "Invalid read lenght\n");
|
||||
res = -EIO;
|
||||
goto send_message_from_iio_err;
|
||||
}
|
||||
|
||||
uint16_t *const scan_elements = (uint16_t*)&data[0];
|
||||
|
||||
messages[0].data.gamepad_set.element = GAMEPAD_ACCELEROMETER;
|
||||
messages[0].data.gamepad_set.status.gyro.sample_time = read_time;
|
||||
messages[0].data.gamepad_set.status.accel.x = scan_elements[0];
|
||||
messages[0].data.gamepad_set.status.accel.y = scan_elements[1];
|
||||
messages[0].data.gamepad_set.status.accel.z = scan_elements[2];
|
||||
|
||||
messages[1].type = GAMEPAD_SET_ELEMENT;
|
||||
messages[1].data.gamepad_set.element = GAMEPAD_GYROSCOPE;
|
||||
messages[1].data.gamepad_set.status.gyro.sample_time = read_time;
|
||||
messages[1].data.gamepad_set.status.gyro.x = scan_elements[3];
|
||||
messages[1].data.gamepad_set.status.gyro.y = scan_elements[4];
|
||||
messages[1].data.gamepad_set.status.gyro.z = scan_elements[5];
|
||||
|
||||
res = 2;
|
||||
|
||||
send_message_from_iio_err:
|
||||
return res;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue