dev-vibra: Allow to set magnitude
Allows for more subtle feedback Signed-off-by: Guido Günther <agx@sigxcpu.org>
This commit is contained in:
+2
-2
@@ -233,7 +233,7 @@ fbd_dev_vibra_new (GUdevDevice *device, GError **error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
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 input_event event = { 0 };
|
||||||
struct ff_effect effect = { 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));
|
memset(&effect, 0, sizeof(effect));
|
||||||
effect.type = FF_RUMBLE;
|
effect.type = FF_RUMBLE;
|
||||||
effect.id = -1;
|
effect.id = -1;
|
||||||
effect.u.rumble.strong_magnitude = 0x8000;
|
effect.u.rumble.strong_magnitude = (0x8000 * magnitude);
|
||||||
effect.u.rumble.weak_magnitude = 0;
|
effect.u.rumble.weak_magnitude = 0;
|
||||||
effect.replay.length = duration;
|
effect.replay.length = duration;
|
||||||
effect.replay.delay = 0;
|
effect.replay.delay = 0;
|
||||||
|
|||||||
+4
-1
@@ -15,7 +15,10 @@ G_BEGIN_DECLS
|
|||||||
G_DECLARE_FINAL_TYPE (FbdDevVibra, fbd_dev_vibra, FBD, DEV_VIBRA, GObject);
|
G_DECLARE_FINAL_TYPE (FbdDevVibra, fbd_dev_vibra, FBD, DEV_VIBRA, GObject);
|
||||||
|
|
||||||
FbdDevVibra *fbd_dev_vibra_new (GUdevDevice *device, GError **error);
|
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,
|
gboolean fbd_dev_vibra_periodic (FbdDevVibra *self, guint duration, guint magnitude,
|
||||||
guint fade_in_level, guint fade_in_time);
|
guint fade_in_level, guint fade_in_time);
|
||||||
gboolean fbd_dev_vibra_stop (FbdDevVibra *self);
|
gboolean fbd_dev_vibra_stop (FbdDevVibra *self);
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ on_period_ended (FbdFeedbackVibraRumble *self)
|
|||||||
g_return_val_if_fail (FBD_IS_FEEDBACK_VIBRA_RUMBLE (self), G_SOURCE_REMOVE);
|
g_return_val_if_fail (FBD_IS_FEEDBACK_VIBRA_RUMBLE (self), G_SOURCE_REMOVE);
|
||||||
|
|
||||||
if (self->periods) {
|
if (self->periods) {
|
||||||
fbd_dev_vibra_rumble (dev, self->rumble, FALSE);
|
fbd_dev_vibra_rumble (dev, 1.0, self->rumble, FALSE);
|
||||||
self->periods--;
|
self->periods--;
|
||||||
return G_SOURCE_CONTINUE;
|
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",
|
g_debug ("Rumble Vibra event: duration %d, rumble: %d, pause: %d, period: %d",
|
||||||
duration, self->rumble, self->pause, period);
|
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--;
|
self->periods--;
|
||||||
if (self->periods) {
|
if (self->periods) {
|
||||||
self->timer_id = g_timeout_add (period, (GSourceFunc) on_period_ended, self);
|
self->timer_id = g_timeout_add (period, (GSourceFunc) on_period_ended, self);
|
||||||
|
|||||||
Reference in New Issue
Block a user