X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bt-service%2Fbt-service-map-client.c;h=b42e1faadd051e88f7b4991c64fae0669cf31a0e;hb=ff90d04d092bb0e2c13f5cea86aba0dbbffd0152;hp=187854ea43f94bc60882ab735518f415c15dfff8;hpb=cd5393e86343b7d29b8d7c8820775096bf12854f;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/bt-service/bt-service-map-client.c b/bt-service/bt-service-map-client.c index 187854e..b42e1fa 100644 --- a/bt-service/bt-service-map-client.c +++ b/bt-service/bt-service-map-client.c @@ -230,4 +230,99 @@ static int __bt_opp_client_start_XXXXXXXXXX(int request_id, char *address /* 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 */