feedback: Change the vibration play function 23/41023/1
authorJiyoung Yun <jy910.yun@samsung.com>
Tue, 10 Mar 2015 06:39:56 +0000 (15:39 +0900)
committertaeyoung <ty317.kim@samsung.com>
Thu, 11 Jun 2015 04:00:14 +0000 (13:00 +0900)
Common profile does not support to play vibration buffer.
So to play vibration is failed.
Instead, feedback request to play monotone during some mseconds.

Change-Id: Id51e4e23168a28779741842f2165f596c1167ea1
Signed-off-by: Jiyoung Yun <jy910.yun@samsung.com>
Signed-off-by: taeyoung <ty317.kim@samsung.com>
CMakeLists.txt
src/vibrator.c

index 4aacbdb..a6ffd2f 100644 (file)
@@ -55,7 +55,6 @@ ENDFOREACH(flag)
 
 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -g")
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Werror")
 
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
 
index 3441fc4..b212597 100644 (file)
@@ -50,12 +50,15 @@ enum haptic_iteration
        HAPTIC_ITERATION_INFINITE = 256,
 };
 
-#define VIBRATION_XML                          "/usr/share/feedback/vibration.xml"
+#define VIBRATION_XML               "/usr/share/feedback/vibration.xml"
 
-#define METHOD_OPEN                                    "OpenDevice"
-#define METHOD_CLOSE                           "CloseDevice"
-#define METHOD_VIBRATE_BUFFER          "VibrateBuffer"
-#define METHOD_STOP                                    "StopDevice"
+#define METHOD_OPEN                 "OpenDevice"
+#define METHOD_CLOSE                "CloseDevice"
+#define METHOD_VIBRATE_BUFFER       "VibrateBuffer"
+#define METHOD_VIBRATE_MONOTONE     "VibrateMonotone"
+#define METHOD_STOP                 "StopDevice"
+
+#define DEFAULT_DURATION            100
 
 static int vibstatus;
 static int vib_level;
@@ -92,6 +95,31 @@ static int haptic_close(unsigned int handle)
                        "u", arr);
 }
 
+static int haptic_vibrate_monotone(unsigned int handle,
+                                                               int duration,
+                                                               int feedback,
+                                                               int priority)
+{
+       char *arr[4];
+       char buf_handle[32];
+       char buf_duration[32];
+       char buf_feedback[32];
+       char buf_priority[32];
+
+       snprintf(buf_handle, sizeof(buf_handle), "%u", handle);
+       arr[0] = buf_handle;
+       snprintf(buf_duration, sizeof(buf_duration), "%d", duration);
+       arr[1] = buf_duration;
+       snprintf(buf_feedback, sizeof(buf_feedback), "%d", feedback);
+       arr[2] = buf_feedback;
+       snprintf(buf_priority, sizeof(buf_priority), "%d", priority);
+       arr[3] = buf_priority;
+
+       return dbus_method_sync(DEVICED_BUS_NAME, DEVICED_PATH_HAPTIC,
+                       DEVICED_INTERFACE_HAPTIC, METHOD_VIBRATE_MONOTONE,
+                       "uiii", arr);
+}
+
 static int haptic_vibrate_buffer(unsigned int handle,
                                                                const unsigned char *buffer,
                                                                int size,
@@ -367,10 +395,7 @@ static void vibrator_exit(void)
 
 static int vibrator_play(feedback_pattern_e pattern)
 {
-       int ret, size;
-       struct xmlData *data;
-       char *path;
-       unsigned char *buf;
+       int ret;
 
        if (!v_handle || !v_doc) {
                _E("Not initialize");
@@ -392,54 +417,13 @@ static int vibrator_play(feedback_pattern_e pattern)
                return 0;
        }
 
-       /* if there is a file path user defined */
-       path = haptic_file[pattern];
-       if (*path) {
-               buf = convert_file_to_buffer(path, &size);
-               if (!buf) {
-                       _E("convert_file_to_buffer is failed");
-                       return -EPERM;
-               }
-
-               ret = haptic_vibrate_buffer(v_handle, buf, size, HAPTIC_ITERATION_ONCE,
-                               get_haptic_level(pattern), get_priority(pattern));
-               if (ret < 0) {
-                       _E("haptic_vibrate_buffer is failed");
-                       free(buf);
-                       return -EPERM;
-               }
-
-               free(buf);
-               return 0;
-       }
-
-       ret = get_xml_data(v_doc, pattern, &data);
-       if (ret == -ENOENT) {
-               _D("No vibration case(%s)", str_pattern[pattern]);
-               return 0;
-       }
-
-       if (ret < 0) {
-               _E("get_xml_data fail");
-               return -EPERM;
-       }
-
-       if (data->data == NULL) {
-               _D("No vibration case(%s)", str_pattern[pattern]);
-               release_xml_data(data);
-               return 0;
-       }
-
-       /* play haptic buffer */
-       ret = haptic_vibrate_buffer(v_handle, (unsigned char*)data->data, data->size, HAPTIC_ITERATION_ONCE,
-                                       get_haptic_level(pattern), get_priority(pattern));
+       ret = haptic_vibrate_monotone(v_handle, DEFAULT_DURATION,
+                       get_haptic_level(pattern), get_priority(pattern));
        if (ret < 0) {
-               _E("haptic_vibrate_buffer is failed");
-               release_xml_data(data);
+               _E("haptic_vibrate_monotone is failed");
                return -EPERM;
        }
 
-       release_xml_data(data);
        return 0;
 }