+static void __bluetooth_internal_write_cb(GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ GError *error = NULL;
+ bt_user_info_t *user_info;
+ GDBusConnection *system_gconn = NULL;
+ GVariant *value;
+ int result = BLUETOOTH_ERROR_NONE;
+ guint8 att_ecode = 0;
+
+ user_info = _bt_get_user_data(BT_COMMON);
+
+ system_gconn = _bt_gdbus_get_system_gconn();
+ value = g_dbus_connection_call_finish(system_gconn, res, &error);
+
+ if (error) {
+ BT_ERR("Error : %s \n", error->message);
+ g_clear_error(&error);
+ result = BLUETOOTH_ERROR_INTERNAL;
+ } else {
+ g_variant_get(value, "(y)", &att_ecode);
+ if (att_ecode) {
+ result = att_ecode;
+ BT_ERR("ATT Error code: %d \n", att_ecode);
+ }
+ }
+
+ if (user_info) {
+ _bt_common_event_cb(BLUETOOTH_EVENT_GATT_WRITE_CHAR,
+ result, NULL,
+ user_info->cb, user_info->user_data);
+ } else {
+ BT_ERR("user info is null");
+ }
+
+ if (value)
+ g_variant_unref(value);
+
+ return;
+}
+