dbus: replace old dbus api with GVariant support api 53/221853/4 accepted/tizen/unified/20200216.215217 submit/tizen/20200214.104642
authorsanghyeok.oh <sanghyeok.oh@samsung.com>
Wed, 8 Jan 2020 05:30:35 +0000 (14:30 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Tue, 11 Feb 2020 09:17:46 +0000 (09:17 +0000)
Change-Id: Id813b8518a2e44b4426efdeb153ed77243a1b80f
Signed-off-by: sanghyeok.oh <sanghyeok.oh@samsung.com>
src/dbus.c
src/dbus.h
src/vibrator.c

index d5f493c..ff20c1b 100644 (file)
@@ -75,7 +75,7 @@ static int g_dbus_error_to_errno(int code)
        return -ECOMM;
 }
 
-static GVariant *append_g_variant(const char *sig, char *param[])
+static GVariant *append_g_variant(const char *sig, const char *param[])
 {
        GVariantBuilder builder;
        char *ch;
@@ -266,9 +266,8 @@ static GDBusProxy *get_proxy_from_proxy_pool(const char *dest,
        return proxy;
 }
 
-int dbus_method_sync(const char *dest, const char *path,
-               const char *interface, const char *method,
-               const char *sig, char *param[])
+int dbus_method_sync_var(const char *dest, const char *path,
+               const char *interface, const char *method, GVariant *param)
 {
        GDBusProxy *proxy;
        GError *err = NULL;
@@ -281,6 +280,7 @@ int dbus_method_sync(const char *dest, const char *path,
 
        pthread_mutex_lock(&dmutex);
        proxy = get_proxy_from_proxy_pool(dest, path, interface, &err);
+//LCOV_EXCL_START System Error
        if (!proxy) {
                pthread_mutex_unlock(&dmutex);
                _E("fail to get proxy from proxy pool : %s-%s (%d-%s)",
@@ -289,30 +289,29 @@ int dbus_method_sync(const char *dest, const char *path,
                g_clear_error(&err);
                return result;
        }
-
+//LCOV_EXCL_STOP
        output = g_dbus_proxy_call_sync(proxy,
                        method,                       /* method name */
-                       append_g_variant(sig, param), /* parameters */
+                       param, /* parameters */
                        G_DBUS_CALL_FLAGS_NONE,
                        DBUS_REPLY_TIMEOUT,           /* timeout */
                        NULL,                         /* GCancellable */
                        &err);
        pthread_mutex_unlock(&dmutex);
 
+//LCOV_EXCL_START System Error
        if (!output) {
-               //LCOV_EXCL_START System Error
-               if (err) {
-                       _E("g_dbus_proxy_call_sync error : %s-%s (%d-%s)",
-                                       interface, method, err->code, err->message);
-                       result = g_dbus_error_to_errno(err->code);
-                       g_clear_error(&err);
-               } else {
+               if (!err) {
                        _E("g_dbus_proxy_call_sync error : %s-%s",
                                        interface, method);
-                       result = -ECOMM;
+                       return -EPERM;
                }
+               _E("g_dbus_proxy_call_sync error : %s-%s (%d-%s)",
+                               interface, method, err->code, err->message);
+               result = g_dbus_error_to_errno(err->code);
+               g_clear_error(&err);
                return result;
-               //LCOV_EXCL_STOP
+//LCOV_EXCL_STOP
        }
 
        /* get output value */
@@ -323,6 +322,17 @@ int dbus_method_sync(const char *dest, const char *path,
        return result;
 }
 
+int dbus_method_sync(const char *dest, const char *path,
+               const char *interface, const char *method,
+               const char *sig, const char *param[])
+{
+       return dbus_method_sync_var(dest,
+                       path,
+                       interface,
+                       method,
+                       append_g_variant(sig, param));
+}
+
 //LCOV_EXCL_START Not called Callback
 static void feedback_signal_callback(GDBusConnection *conn,
                const gchar *sender,
index 7d7d9f7..d714ba0 100644 (file)
@@ -44,9 +44,11 @@ struct dbus_byte {
        int size;
 };
 
+int dbus_method_sync_var(const char *dest, const char *path,
+               const char *interface, const char *method, GVariant *param);
 int dbus_method_sync(const char *dest, const char *path,
                const char *interface, const char *method,
-               const char *sig, char *param[]);
+               const char *sig, const char *param[]);
 
 /**
  * If result is NULL, err is set.
index 942cca8..15cd741 100644 (file)
@@ -78,75 +78,40 @@ inline int is_vibration_mode(void)
 
 static int haptic_open(void)
 {
-       char *arr[1];
-       char buf_index[32];
-
-       snprintf(buf_index, sizeof(buf_index), "%d", HAPTIC_DEVICE);
-       arr[0] = buf_index;
-
-       return dbus_method_sync(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
+       return dbus_method_sync_var(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
                        VIBRATOR_INTERFACE_HAPTIC, METHOD_OPEN,
-                       "i", arr);
+                       g_variant_new("(i)", HAPTIC_DEVICE));
 }
 
 static int haptic_close(unsigned int handle)
 {
-       char *arr[1];
-       char buf_handle[32];
-
-       snprintf(buf_handle, sizeof(buf_handle), "%u", handle);
-       arr[0] = buf_handle;
-
-       return dbus_method_sync(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
+       return dbus_method_sync_var(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
                        VIBRATOR_INTERFACE_HAPTIC, METHOD_CLOSE,
-                       "u", arr);
+                       g_variant_new("(u)", handle));
 }
 
-static int haptic_is_supported(char *pattern)
+static int haptic_is_supported(const char *pattern)
 {
-       char *arr[1];
-
-       arr[0] = pattern;
-
-       return dbus_method_sync(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
+       return dbus_method_sync_var(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
                        VIBRATOR_INTERFACE_HAPTIC, METHOD_IS_SUPPORTED,
-                       "s", arr);
+                       g_variant_new("(s)", pattern));
 }
 
 static int haptic_vibrate_effect(unsigned int handle,
-                                                               char *pattern,
+                                                               const char *pattern,
                                                                int feedback,
                                                                int priority)
 {
-       char *arr[4];
-       char buf_handle[32];
-       char buf_feedback[32];
-       char buf_priority[32];
-
-       snprintf(buf_handle, sizeof(buf_handle), "%u", handle);
-       arr[0] = buf_handle;
-       arr[1] = pattern;
-       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(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
+       return dbus_method_sync_var(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
                        VIBRATOR_INTERFACE_HAPTIC, METHOD_VIBRATE_PATTERN,
-                       "usii", arr);
+                       g_variant_new("(usii)", handle, pattern, feedback, priority));
 }
 
 static int haptic_vibrate_stop(unsigned int handle)
 {
-       char *arr[1];
-       char buf_handle[32];
-
-       snprintf(buf_handle, sizeof(buf_handle), "%u", handle);
-       arr[0] = buf_handle;
-
-       return dbus_method_sync(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
+       return dbus_method_sync_var(VIBRATOR_BUS_NAME, VIBRATOR_PATH_HAPTIC,
                        VIBRATOR_INTERFACE_HAPTIC, METHOD_STOP,
-                       "u", arr);
+                       g_variant_new("(u)", handle));
 }
 
 static int get_priority(feedback_pattern_e pattern)