static guint owner_id;
static GDBusConnection *g_conn = NULL;
static GDBusNodeInfo *manager_node_info = NULL;
-static guint manager_id;
#define GATT_HANDLE_MAX_NUM 100 /* Not defined in spec, implementation dependent */
#define SERV_HANDLE_NUM (GATT_HANDLE_MAX_NUM)
#define BT_GATTS_MAX 11
static int assigned_id = 0;
-
static gboolean instance_id_used[BT_GATTS_MAX];
+static guint manager_id[BT_GATTS_MAX];
#define CHECK_BTGATT_INIT() if (_bt_hal_gatt_interface_ready() == false)\
{\
static gboolean __bt_hal_gatt_service_added_cb(gpointer user_data);
-static void __bt_hal_gatt_deinit(char *app_path);
+static void __bt_hal_gatt_deinit(int server_if);
static void __bt_hal_register_application_cb(GObject *object,
GAsyncResult *res, gpointer user_data);
g_slist_length(gatt_server_apps));
/* DBUS Unregister only for current app */
- __bt_hal_gatt_deinit(info->app_path);
+ __bt_hal_gatt_deinit(server_if);
g_free(info->app_path);
g_free(info);
g_free(app_path);
}
-static void __bt_hal_gatt_deinit(char *app_path)
+static void __bt_hal_gatt_deinit(int server_if)
{
GDBusProxy *proxy = NULL;
- char *data;
- INFO("+");
+ char *app_path, *data;
/* Step1: Remove requested App */
proxy = __bt_gatt_gdbus_get_gatt_manager_proxy("org.bluez",
if (proxy == NULL)
return;
+ app_path = g_strdup_printf("/com/%d", server_if);
INFO("UnregisterApplication : path [%s]", app_path);
/* Async Call to Unregister Service */
- data = g_strdup(app_path);
+ data = g_strdup_printf("/com/%d", server_if);
g_dbus_proxy_call(proxy,
"UnregisterApplication",
g_variant_new("(o)",
NULL,
(GAsyncReadyCallback)__bt_hal_unregister_application_cb,
(gpointer)data);
+ g_free(app_path);
/* unregister the exported interface for object manager */
- g_dbus_connection_unregister_object(g_conn, manager_id);
- manager_id = 0;
+ INFO("Unregister the interface for object with manager_id: %d", manager_id[server_if]);
+ g_dbus_connection_unregister_object(g_conn, manager_id[server_if]);
+ manager_id[server_if] = 0;
/* If requested app is last GATT Server app, then clean all resources */
if (gatt_server_apps == NULL) {
manager_gproxy = NULL;
}
}
- INFO("-");
}
static int __bt_hal_gatt_init(void)
app_id = g_malloc0(sizeof(int));
*app_id = server_if;
- manager_id = g_dbus_connection_register_object(g_conn, app_path,
+ manager_id[server_if] = g_dbus_connection_register_object(g_conn, app_path,
manager_node_info->interfaces[0],
&manager_interface_vtable,
(gpointer)app_id, NULL, &error);
- if (manager_id == 0) {
+ if (manager_id[server_if] == 0) {
ERR("failed to register: %s", error->message);
g_error_free(error);
goto failed;
}
- INFO("manager_id [%d]", manager_id);
+ INFO("manager_id [%d]", manager_id[server_if]);
/* For current GATT Server, app_path is created, save it in Table */
_bt_hal_update_gatt_server_path(server_if, app_path);