From 386c98c3819ddce2bfcbe81907e9b1739907dcbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Wed, 11 Dec 2024 17:49:45 +0100 Subject: [PATCH] dev-vibra: Allow to set magnitude MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allows for more subtle feedback Signed-off-by: Guido Günther --- src/fbd-dev-vibra.c | 4 ++-- src/fbd-dev-vibra.h | 5 ++++- src/fbd-feedback-vibra-rumble.c | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/fbd-dev-vibra.c b/src/fbd-dev-vibra.c index 2e7584e..c99444f 100644 --- a/src/fbd-dev-vibra.c +++ b/src/fbd-dev-vibra.c @@ -233,7 +233,7 @@ fbd_dev_vibra_new (GUdevDevice *device, GError **error) } gboolean -fbd_dev_vibra_rumble (FbdDevVibra *self, guint duration, gboolean upload) +fbd_dev_vibra_rumble (FbdDevVibra *self, double magnitude, guint duration, gboolean upload) { struct input_event event = { 0 }; struct ff_effect effect = { 0 }; @@ -243,7 +243,7 @@ fbd_dev_vibra_rumble (FbdDevVibra *self, guint duration, gboolean upload) memset(&effect, 0, sizeof(effect)); effect.type = FF_RUMBLE; effect.id = -1; - effect.u.rumble.strong_magnitude = 0x8000; + effect.u.rumble.strong_magnitude = (0x8000 * magnitude); effect.u.rumble.weak_magnitude = 0; effect.replay.length = duration; effect.replay.delay = 0; diff --git a/src/fbd-dev-vibra.h b/src/fbd-dev-vibra.h index a653d63..ef5891b 100644 --- a/src/fbd-dev-vibra.h +++ b/src/fbd-dev-vibra.h @@ -15,7 +15,10 @@ G_BEGIN_DECLS G_DECLARE_FINAL_TYPE (FbdDevVibra, fbd_dev_vibra, FBD, DEV_VIBRA, GObject); FbdDevVibra *fbd_dev_vibra_new (GUdevDevice *device, GError **error); -gboolean fbd_dev_vibra_rumble (FbdDevVibra *device, guint duration, gboolean upload); +gboolean fbd_dev_vibra_rumble (FbdDevVibra *device, + double magnitude, + guint duration, + gboolean upload); gboolean fbd_dev_vibra_periodic (FbdDevVibra *self, guint duration, guint magnitude, guint fade_in_level, guint fade_in_time); gboolean fbd_dev_vibra_stop (FbdDevVibra *self); diff --git a/src/fbd-feedback-vibra-rumble.c b/src/fbd-feedback-vibra-rumble.c index 5aad9f5..534c9a1 100644 --- a/src/fbd-feedback-vibra-rumble.c +++ b/src/fbd-feedback-vibra-rumble.c @@ -92,7 +92,7 @@ on_period_ended (FbdFeedbackVibraRumble *self) g_return_val_if_fail (FBD_IS_FEEDBACK_VIBRA_RUMBLE (self), G_SOURCE_REMOVE); if (self->periods) { - fbd_dev_vibra_rumble (dev, self->rumble, FALSE); + fbd_dev_vibra_rumble (dev, 1.0, self->rumble, FALSE); self->periods--; return G_SOURCE_CONTINUE; } @@ -130,7 +130,7 @@ fbd_feedback_vibra_rumble_start_vibra (FbdFeedbackVibra *vibra) g_debug ("Rumble Vibra event: duration %d, rumble: %d, pause: %d, period: %d", duration, self->rumble, self->pause, period); - fbd_dev_vibra_rumble (dev, self->rumble, TRUE); + fbd_dev_vibra_rumble (dev, 1.0, self->rumble, TRUE); self->periods--; if (self->periods) { self->timer_id = g_timeout_add (period, (GSourceFunc) on_period_ended, self);