From 35bbaa4f2dfc9168832e17f4bbccd29da0c2ede0 Mon Sep 17 00:00:00 2001 From: Denis Date: Mon, 15 Jan 2024 02:32:21 +0100 Subject: [PATCH] prepare to work in backward-comaptible mode --- dev_timer.c | 15 +++++++++++---- input_dev.h | 1 + rog_ally.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/dev_timer.c b/dev_timer.c index 6c6e2e3..bcbd23a 100644 --- a/dev_timer.c +++ b/dev_timer.c @@ -24,10 +24,17 @@ int dev_timer_open( } (*out_dev)->fd = fd; - (*out_dev)->timer_spec.it_value.tv_sec = in_filters->ticktime_ms / (__time_t)1000; - (*out_dev)->timer_spec.it_value.tv_nsec = (in_filters->ticktime_ms % (__syscall_slong_t)1000) * (__syscall_slong_t)1000000; - (*out_dev)->timer_spec.it_interval.tv_sec = in_filters->ticktime_ms / (__time_t)1000; - (*out_dev)->timer_spec.it_interval.tv_nsec = (in_filters->ticktime_ms % (__syscall_slong_t)1000) * (__syscall_slong_t)1000000; + if (in_filters->ticktime_ms != 0) { + (*out_dev)->timer_spec.it_value.tv_sec = in_filters->ticktime_ms / (__time_t)1000; + (*out_dev)->timer_spec.it_value.tv_nsec = (in_filters->ticktime_ms % (__syscall_slong_t)1000) * (__syscall_slong_t)1000000; + (*out_dev)->timer_spec.it_interval.tv_sec = in_filters->ticktime_ms / (__time_t)1000; + (*out_dev)->timer_spec.it_interval.tv_nsec = (in_filters->ticktime_ms % (__syscall_slong_t)1000) * (__syscall_slong_t)1000000; + } else { + (*out_dev)->timer_spec.it_value.tv_sec = 0; + (*out_dev)->timer_spec.it_value.tv_nsec = in_filters->ticktime_ns; + (*out_dev)->timer_spec.it_interval.tv_sec = 0; + (*out_dev)->timer_spec.it_interval.tv_nsec = in_filters->ticktime_ns; + } if (timerfd_settime((*out_dev)->fd, 0, &(*out_dev)->timer_spec, NULL) < 0) { res = errno < 0 ? errno : -1 * errno; diff --git a/input_dev.h b/input_dev.h index 788e17b..39d7e62 100644 --- a/input_dev.h +++ b/input_dev.h @@ -113,6 +113,7 @@ typedef struct ev_callbacks { typedef struct timer_filters { char name[128]; uint64_t ticktime_ms; + uint64_t ticktime_ns; } timer_filters_t; typedef struct input_dev { diff --git a/rog_ally.c b/rog_ally.c index 0f20bba..1b6cb37 100644 --- a/rog_ally.c +++ b/rog_ally.c @@ -1312,7 +1312,7 @@ static int rc71l_hidraw_set_leds(const dev_in_settings_t *const conf, int hidraw ) : 0; if (res != 0) { - sprintf(stderr, "Error setting leds: %d\n", res); + fprintf(stderr, "Error setting leds: %d\n", res); } return res; @@ -1357,7 +1357,7 @@ static void rc71l_hidraw_timer( ); if (leds_set != 0) { - sprintf(stderr, "Error setting leds to tell the user about the new profile: %d\n", leds_set); + fprintf(stderr, "Error setting leds to tell the user about the new profile: %d\n", leds_set); } } else { fprintf( @@ -1513,6 +1513,41 @@ input_dev_t timer_dev = { } }; +typedef struct bmc150_accel_user_data { + +} bmc150_accel_user_data_t; + +static bmc150_accel_user_data_t bmc15_timer_data = { + +}; + +int rc71l_bmc150_accel_timer_map(const dev_in_settings_t *const conf, int timer_fd, uint64_t expirations, in_message_t *const messages, size_t messages_len, void* user_data) { + bmc150_accel_user_data_t *const timer_data = (bmc150_accel_user_data_t*)user_data; + + if (timer_data == NULL) { + return 0; + } + + return 0; +} + +input_dev_t bmc150_timer_dev = { + .dev_type = input_dev_type_timer, + .filters = { + .timer = { + .name = "RC71L_bmc150-accel_timer", + .ticktime_ms = 0, + .ticktime_ns = 625000 + } + }, + .user_data = &bmc15_timer_data, + .map = { + .timer_callbacks = { + .map_fn = rc71l_bmc150_accel_timer_map, + } + } +}; + input_dev_composite_t rc71l_composite = { .dev = { &in_xbox_dev, @@ -1529,7 +1564,11 @@ input_dev_composite_t rc71l_composite = { input_dev_composite_t* rog_ally_device_def(const dev_in_settings_t *const conf) { if (conf->enable_imu) { - rc71l_composite.dev[rc71l_composite.dev_count++] = &in_iio_dev; + if (false) { + rc71l_composite.dev[rc71l_composite.dev_count++] = &bmc150_timer_dev; + } else { + rc71l_composite.dev[rc71l_composite.dev_count++] = &in_iio_dev; + } } if (conf->touchbar) {