From 9d746f09254610c7fa7c7111b5a36a385d522c18 Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Wed, 8 Jan 2020 14:30:35 +0900 Subject: [PATCH] dbus: replace old dbus api with GVariant support api Change-Id: Id813b8518a2e44b4426efdeb153ed77243a1b80f Signed-off-by: sanghyeok.oh --- src/dbus.c | 40 ++++++++++++++++++++++++--------------- src/dbus.h | 4 +++- src/vibrator.c | 59 ++++++++++++---------------------------------------------- 3 files changed, 40 insertions(+), 63 deletions(-) diff --git a/src/dbus.c b/src/dbus.c index d5f493c..ff20c1b 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -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, diff --git a/src/dbus.h b/src/dbus.h index 7d7d9f7..d714ba0 100644 --- a/src/dbus.h +++ b/src/dbus.h @@ -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. diff --git a/src/vibrator.c b/src/vibrator.c index 942cca8..15cd741 100644 --- a/src/vibrator.c +++ b/src/vibrator.c @@ -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) -- 2.7.4