From: Saurav Babu Date: Wed, 11 Apr 2018 09:22:18 +0000 (+0530) Subject: capi: Send data as array of bytes instead of string X-Git-Tag: submit/tizen/20190131.065036~51 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=030a8761dae9357463761990f58a38fc1eacbbc2;p=platform%2Fcore%2Fapi%2Fmulti-device-group.git capi: Send data as array of bytes instead of string Application might be sending buffered data so this patch sends data as array of bytes instead of string Signed-off-by: Saurav Babu --- diff --git a/capi/include/companion.h b/capi/include/companion.h index 2582f79..ba2d515 100644 --- a/capi/include/companion.h +++ b/capi/include/companion.h @@ -461,7 +461,7 @@ int companion_group_eject_device(companion_h handle, companion_group_h group, * @see companion_request_result_callback() */ typedef void (*companion_request_result_cb)(char *cmd, char *device_id, - char *arg, int ret, void *user_data); + unsigned char *arg, int len, int ret, void *user_data); /** * @brief Requests my device to be joined to remote group. @@ -1036,8 +1036,9 @@ int companion_device_get_found_mowned_devices(companion_h handle, * @see companion_request_result_callback() * */ -int companion_device_send_data(companion_h handle, companion_device_h device, char *data, - int len, companion_device_send_data_finish_cb finish_cb, void *user_data); +int companion_device_send_data(companion_h handle, companion_device_h device, + unsigned char *data, int len, + companion_device_send_data_finish_cb finish_cb, void *user_data); /** * @} diff --git a/capi/src/companion.c b/capi/src/companion.c index 7bc28f6..adaf403 100644 --- a/capi/src/companion.c +++ b/capi/src/companion.c @@ -302,11 +302,14 @@ EXPORT_API int companion_device_find_mowned_device(companion_h handle, } EXPORT_API int companion_device_send_data(companion_h handle, - companion_device_h device, char *data, int len, + companion_device_h device, unsigned char *data, int len, companion_device_send_data_finish_cb finish_cb, void *user_data) { int ret = COMP_ERROR_NONE; - char *buf = NULL; + unsigned char *buf = NULL; + GVariantBuilder *bytearray_builder = NULL; + int i; + GVariant *params = NULL; GError *error = NULL; CHECK_FEATURE_SUPPORTED(COMPANION_FEATURE); @@ -326,11 +329,18 @@ EXPORT_API int companion_device_send_data(companion_h handle, } memcpy(buf, data, len); + bytearray_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); + for (i = 0; i < len; i++) + g_variant_builder_add(bytearray_builder, "y", data[i]); + + params = g_variant_new("(iay)", len, bytearray_builder); + g_variant_builder_unref(bytearray_builder); + _handle->send_data_finish_cb.finish_cb = finish_cb; _handle->send_data_finish_cb.user_data = user_data; group_call_send_data_sync(_handle->group_proxy, dev->device_id, dev->ip, - dev->sec_port, buf, len, &ret, NULL, &error); + dev->sec_port, params, &ret, NULL, &error); free(buf); buf = NULL; diff --git a/capi/src/companion_dbus.c b/capi/src/companion_dbus.c index d0f2dfd..ba5548b 100644 --- a/capi/src/companion_dbus.c +++ b/capi/src/companion_dbus.c @@ -245,15 +245,31 @@ static void __send_data_finish_cb(Group *object, gchar *resp_data, gint ret, } static void __request_result_cb(Group *object, gchar *cmd, gchar *device_id, - gchar *arg, gint ret, gpointer user_data) + GVariant *arg, gint ret, gpointer user_data) { + int len, length = 0; + unsigned char *data; + GVariantIter *iter; + NOTUSED(object); comp_manager_s *handle = user_data; companion_check_null_ret("user_data", user_data); + g_variant_get(arg, "(iay)", &len, &iter); + + data = g_try_malloc0(len + 1); + + while (g_variant_iter_loop(iter, "y", &data[length])) + length += 1; + + data[length] = '\0'; + _DBG("Received result length %d data %s", len, data); + + g_variant_iter_free(iter); + if (handle->request_result_cb.result_cb) - handle->request_result_cb.result_cb(cmd, device_id, arg, ret, + handle->request_result_cb.result_cb(cmd, device_id, data, len, ret, handle->request_result_cb.user_data); } /* LCOV_EXCL_STOP */ diff --git a/capi/src/companion_gdbus.xml b/capi/src/companion_gdbus.xml index 8eca1c4..94e1fa5 100644 --- a/capi/src/companion_gdbus.xml +++ b/capi/src/companion_gdbus.xml @@ -98,8 +98,7 @@ - - + @@ -176,7 +175,7 @@ - +