From 199e94886ed64339c943737fbbd1fa1f3870975b Mon Sep 17 00:00:00 2001 From: Denis Date: Fri, 8 Dec 2023 18:59:33 +0100 Subject: [PATCH] dev_iio improvements --- dev_iio.c | 7 +++++-- dev_in.c | 22 ++++++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/dev_iio.c b/dev_iio.c index 0c4a510..4d81ef8 100644 --- a/dev_iio.c +++ b/dev_iio.c @@ -97,6 +97,7 @@ static int dev_iio_create(const char* path, dev_iio_t **const out_iio) { goto dev_iio_create_err; } + (*out_iio)->flags = 0x00000000U; (*out_iio)->anglvel_x_fd = NULL; (*out_iio)->anglvel_y_fd = NULL; (*out_iio)->anglvel_z_fd = NULL; @@ -172,6 +173,7 @@ static int dev_iio_create(const char* path, dev_iio_t **const out_iio) { char* const anglvel_scale = read_file((*out_iio)->path, scale_main_file); if (anglvel_scale != NULL) { + (*out_iio)->flags |= DEV_IIO_HAS_ANGLVEL; (*out_iio)->anglvel_scale_x = (*out_iio)->anglvel_scale_y = (*out_iio)->anglvel_scale_z = strtod(anglvel_scale, NULL); free((void*)anglvel_scale); @@ -199,6 +201,7 @@ static int dev_iio_create(const char* path, dev_iio_t **const out_iio) { char* const accel_scale = read_file((*out_iio)->path, scale_main_file); if (accel_scale != NULL) { + (*out_iio)->flags |= DEV_IIO_HAS_ACCEL; (*out_iio)->accel_scale_x = (*out_iio)->accel_scale_y = (*out_iio)->accel_scale_z = strtod(accel_scale, NULL); free((void*)accel_scale); @@ -296,6 +299,7 @@ static int dev_iio_create(const char* path, dev_iio_t **const out_iio) { free(tmp); +/* printf( "anglvel scale: x=%f, y=%f, z=%f | accel scale: x=%f, y=%f, z=%f\n", (*out_iio)->anglvel_scale_x, @@ -305,9 +309,8 @@ static int dev_iio_create(const char* path, dev_iio_t **const out_iio) { (*out_iio)->accel_scale_y, (*out_iio)->accel_scale_z ); +*/ - // give time to change the scale - sleep(4); res = 0; dev_iio_create_err: diff --git a/dev_in.c b/dev_in.c index 32f0b66..1bbdde6 100644 --- a/dev_in.c +++ b/dev_in.c @@ -107,6 +107,15 @@ int iio_open_device( goto iio_open_device_err; } + const char *const dev_name = dev_iio_get_name(out_dev->iiodev); + + printf( + "Opened iio device:\n name: %s has accel: %s\n has anglvel: %s\n", + (dev_name != NULL) ? dev_name : "NULL", + dev_iio_has_accel(out_dev->iiodev) ? "yes" : "no", + dev_iio_has_anglvel(out_dev->iiodev) ? "yes" : "no" + ); + iio_open_device_err: return res; } @@ -123,15 +132,17 @@ int evdev_open_device( out_dev->has_rumble_support = libevdev_has_event_type(out_dev->evdev, EV_FF) && libevdev_has_event_code(out_dev->evdev, EV_FF, FF_RUMBLE); + const char *const dev_name = libevdev_get_name(out_dev->evdev); + const int grab_res = libevdev_grab(out_dev->evdev, LIBEVDEV_GRAB); out_dev->grabbed = grab_res == 0; if (!out_dev->grabbed) { - fprintf(stderr, "Unable to grab the device (%s): %d.\n", libevdev_get_name(out_dev->evdev), grab_res); + fprintf(stderr, "Unable to grab the device (%s): %d.\n", dev_name != NULL ? "NULL" : dev_name, grab_res); } if (out_dev->has_rumble_support) { - printf("Opened device\n name: %s\n rumble: %s\n", - libevdev_get_name(out_dev->evdev), + printf("Opened ev device\n name: %s\n rumble: %s\n", + dev_name != NULL ? "NULL" : dev_name, libevdev_has_event_code(out_dev->evdev, EV_FF, FF_RUMBLE) ? "true" : "false" ); @@ -155,7 +166,7 @@ int evdev_open_device( } } else { printf("Opened device\n name: %s\n rumble: no force-feedback\n", - libevdev_get_name(out_dev->evdev) + dev_name != NULL ? "NULL" : dev_name ); } @@ -268,6 +279,9 @@ void* dev_in_thread_func(void *ptr) { fprintf(stderr, "Device (iio) %zu not found -- Attempt reconnection for device named %s\n", i, dev_in_data->input_dev_decl->dev[i]->filters.iio.name); const int open_res = iio_open_device(&dev_in_data->input_dev_decl->dev[i]->filters.iio, &devices[i].dev.iio); + if (open_res == 0) { + devices[i].type = DEV_IN_TYPE_IIO; + } } } }