From: Ben Deering <ben_deer...@swissmail.org>

FSO should be used for accessing devices instead of writing directly to
the device file.
Signed-off-by: Ben Deering <ben_deer...@swissmail.org>
---
 src/phoneui-utils-device.c | 42 ++++++++++++++++--------------------------
 1 file changed, 16 insertions(+), 26 deletions(-)

diff --git a/src/phoneui-utils-device.c b/src/phoneui-utils-device.c
index 06038f4..c06bfb4 100644
--- a/src/phoneui-utils-device.c
+++ b/src/phoneui-utils-device.c
@@ -30,10 +30,15 @@
 #include <errno.h>
 #include <string.h>
 #include <stdio.h>
+#include <poll.h>
 #include <glib.h>
+#include <freesmartphone.h>
+#include <fsoframework.h>
 #include <X11/Xlib.h>
 
-static const char *device_vibrator = NULL;
+
+
+#include "dbus.h"
 
 struct VibrationData {
        int fd;
@@ -43,6 +48,7 @@ struct VibrationData {
        char systring[5];
 };
 
+static FreeSmartphoneDeviceVibrator *fso_vibrator = NULL;
 
 static int
 _vibration_on(gpointer data);
@@ -52,15 +58,15 @@ _vibration_off(gpointer data);
 int
 phoneui_utils_device_init(GKeyFile *keyfile)
 {
-       const char *vibrator =
-               g_key_file_get_string(keyfile, "device", "vibrator", NULL);
-       if (vibrator) {
-               g_debug("using %s for vibration", vibrator);
-               device_vibrator = strdup(vibrator);
-       }
-       else {
+       fso_vibrator = (FreeSmartphoneDeviceVibrator *)_fso
+               (FREE_SMARTPHONE_DEVICE_TYPE_VIBRATOR_PROXY,
+                FSO_FRAMEWORK_DEVICE_ServiceDBusName,
+                FSO_FRAMEWORK_DEVICE_VibratorServicePath,
+                FSO_FRAMEWORK_DEVICE_VibratorServiceFace);
+       if (!fso_vibrator) {
                g_message("no vibrator configured - turning vibration off");
        }
+       g_key_file_free(keyfile);
        return 0;
 }
 
@@ -94,25 +100,9 @@ _vibration_off(gpointer data)
 void
 phoneui_utils_device_vibrate(int duration, int intensity, int repeat, int 
pause)
 {
-       int fd;
-
-       if (!device_vibrator)
-               return;
+       
 
-       fd = open(device_vibrator, O_WRONLY);
-       if (fd == -1) {
-               g_warning("vibrate error %d: %s", errno, strerror(errno));
-               return;
-       }
-       struct VibrationData *vdata = malloc(sizeof(struct VibrationData));
-       vdata->fd = fd;
-       vdata->duration = duration;
-       vdata->repeat = repeat;
-       vdata->pause = pause;
-       snprintf(vdata->systring, 4, "%d\n", intensity);
-       ssize_t len = write(fd, vdata->systring, strlen(vdata->systring));
-       g_return_if_fail(len != -1);
-       g_timeout_add(duration, _vibration_off, vdata);
+       free_smartphone_device_vibrator_vibrate_pattern(fso_vibrator, repeat, 
duration, pause, intensity, NULL, NULL);
 }
 
 
-- 
1.7.12

_______________________________________________
Shr-devel mailing list
Shr-devel@lists.shr-project.org
http://lists.shr-project.org/mailman/listinfo/shr-devel

Reply via email to