/* TODO: MAP */
}
+int _bt_create_session_sync(char* address, char** session_id)
+{
+ BT_DBG("Entered SERVICE create session");
+ GDBusConnection *g_conn;
+ GDBusProxy *session_proxy;
+ GError *err = NULL;
+ const char *session_path;
+
+ retv_if(address == NULL, BLUETOOTH_ERROR_INVALID_PARAM);
+
+ g_conn = _bt_gdbus_get_session_gconn();
+ retv_if(g_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
+
+ session_proxy = g_dbus_proxy_new_sync(g_conn, G_DBUS_PROXY_FLAGS_NONE,
+ NULL, BT_OBEX_SERVICE_NAME,
+ BT_OBEX_CLIENT_PATH,
+ BT_OBEX_CLIENT_INTERFACE,
+ NULL, &err);
+ if (err) {
+ BT_ERR("Unable to create session_proxy: %s", err->message);
+ g_clear_error(&err);
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
+ retv_if(session_proxy == NULL, BLUETOOTH_ERROR_INTERNAL);
+
+ GVariantBuilder* builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ g_variant_builder_add(builder, "{sv}", "Target",
+ g_variant_new("s", "map"));
+ GVariant *args = g_variant_builder_end(builder);
+ g_variant_builder_unref (builder);
+ GVariant *param = g_variant_new("(s@a{sv})", address, args);
+
+ char* string = g_variant_print (param, true);
+
+ GVariant *value = g_dbus_proxy_call_sync(session_proxy, "CreateSession", param,
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err);
+ if (err != NULL) {
+ BT_ERR("Could not create session: %s\n", err->message);
+ g_error_free(err);
+ return BLUETOOTH_ERROR_INTERNAL;
+ } else {
+ if (NULL == value) {
+ BT_ERR("create session returned value is null\n");
+ return BLUETOOTH_ERROR_INTERNAL;
+ } else {
+ BT_DBG("create session succeed\n");
+ }
+ }
+
+ g_variant_get(value, "(&o)", session_id);
+ BT_DBG("session_id = \"%s\"\n", *session_id);
+
+ return BLUETOOTH_ERROR_NONE;
+}
+
+int _bt_destroy_session_sync(char* session_id)
+{
+ BT_DBG("Entered SERVICE destroy session with id: \"%s\"", session_id);
+ GDBusConnection *g_conn;
+ GDBusProxy *session_proxy;
+ GError *err = NULL;
+
+ retv_if(session_id == NULL, BLUETOOTH_ERROR_INVALID_PARAM);
+
+ g_conn = _bt_gdbus_get_session_gconn();
+ retv_if(g_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
+
+ session_proxy = g_dbus_proxy_new_sync(g_conn, G_DBUS_PROXY_FLAGS_NONE,
+ NULL, BT_OBEX_SERVICE_NAME,
+ BT_OBEX_CLIENT_PATH,
+ BT_OBEX_CLIENT_INTERFACE,
+ NULL, &err);
+ if (err) {
+ BT_ERR("Unable to create session_proxy: %s", err->message);
+ g_clear_error(&err);
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
+ retv_if(session_proxy == NULL, BLUETOOTH_ERROR_INTERNAL);
+
+ GVariant *param = g_variant_new("(o)", session_id);
+
+ char* string = g_variant_print (param, true);
+
+ GVariant *value = g_dbus_proxy_call_sync(session_proxy, "RemoveSession", param,
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err);
+ if (err != NULL) {
+ BT_ERR("Could not remove session: %s\n", err->message);
+ g_error_free(err);
+ return BLUETOOTH_ERROR_INTERNAL;
+ } else {
+ BT_DBG("remove session succeed\n");
+ }
+
+ return BLUETOOTH_ERROR_NONE;
+}
/* TODO: MAP */