diff --git a/client/main.c b/client/main.c
index 276e7f1..a29dab4 100644
--- a/client/main.c
+++ b/client/main.c
struct adapter {
GDBusProxy *proxy;
+ GDBusProxy *ad_proxy;
GList *devices;
};
static struct adapter *default_ctrl;
static GDBusProxy *default_dev;
static GDBusProxy *default_attr;
-static GDBusProxy *ad_manager;
static GList *ctrl_list;
static guint input = 0;
static void adapter_added(GDBusProxy *proxy)
{
- struct adapter *adapter = g_malloc0(sizeof(struct adapter));
-
- adapter->proxy = proxy;
- ctrl_list = g_list_append(ctrl_list, adapter);
-
- if (!default_ctrl)
- default_ctrl = adapter;
-
+ default_ctrl = g_malloc0(sizeof(struct adapter));
+ default_ctrl->proxy = proxy;
+ ctrl_list = g_list_append(ctrl_list, default_ctrl);
print_adapter(proxy, COLORED_NEW);
}
+static void ad_manager_added(GDBusProxy *proxy)
+{
+ default_ctrl->ad_proxy = proxy;
+}
+
static void proxy_added(GDBusProxy *proxy, void *user_data)
{
const char *interface;
} else if (!strcmp(interface, "org.bluez.GattManager1")) {
gatt_add_manager(proxy);
} else if (!strcmp(interface, "org.bluez.LEAdvertisingManager1")) {
- ad_manager = proxy;
+ ad_manager_added(proxy);
}
}
} else if (!strcmp(interface, "org.bluez.GattManager1")) {
gatt_remove_manager(proxy);
} else if (!strcmp(interface, "org.bluez.LEAdvertisingManager1")) {
- if (ad_manager == proxy) {
- agent_manager = NULL;
+ if(!dbus_conn){
ad_unregister(dbus_conn, NULL);
}
}
if (parse_argument_advertise(arg, &enable, &type) == FALSE)
return;
- if (!ad_manager) {
+ if (!default_ctrl || !default_ctrl->ad_proxy) {
rl_printf("LEAdvertisingManager not found\n");
return;
}
if (enable == TRUE)
- ad_register(dbus_conn, ad_manager, type);
+ ad_register(dbus_conn, default_ctrl->ad_proxy, type);
else
- ad_unregister(dbus_conn, ad_manager);
+ ad_unregister(dbus_conn, default_ctrl->ad_proxy);
}
static char *ad_generator(const char *text, int state)