diff --git a/proximity/manager.c b/proximity/manager.c
index e3e049d..a9526a1 100644
--- a/proximity/manager.c
+++ b/proximity/manager.c
static DBusConnection *connection = NULL;
-static struct {
- gboolean linkloss;
- gboolean pathloss;
- gboolean findme;
-} enabled = {
+static struct enabled enabled = {
.linkloss = TRUE,
.pathloss = TRUE,
.findme = TRUE,
static int attio_device_probe(struct btd_device *device, GSList *uuids)
{
- return monitor_register(connection, device);
+ gboolean linkloss = FALSE, pathloss = FALSE, findme = FALSE;
+
+ if (g_slist_find_custom(uuids, IMMEDIATE_ALERT_UUID,
+ (GCompareFunc) strcasecmp)) {
+ findme = enabled.findme;
+ if (g_slist_find_custom(uuids, TX_POWER_UUID,
+ (GCompareFunc) strcasecmp))
+ pathloss = enabled.pathloss;
+ }
+
+ if (g_slist_find_custom(uuids, LINK_LOSS_UUID,
+ (GCompareFunc) strcasecmp))
+ linkloss = enabled.linkloss;
+
+ return monitor_register(connection, device, linkloss, pathloss, findme);
}
static void attio_device_remove(struct btd_device *device)
diff --git a/proximity/monitor.c b/proximity/monitor.c
index c16385a..31691ff 100644
--- a/proximity/monitor.c
+++ b/proximity/monitor.c
struct monitor {
struct btd_device *device;
GAttrib *attrib;
+ struct enabled enabled;
char *linklosslevel; /* Link Loss Alert Level */
};
g_free(monitor);
}
-int monitor_register(DBusConnection *conn, struct btd_device *device)
+int monitor_register(DBusConnection *conn, struct btd_device *device,
+ gboolean linkloss, gboolean pathloss, gboolean findme)
{
const char *path = device_get_path(device);
struct monitor *monitor;
monitor = g_new0(struct monitor, 1);
monitor->device = btd_device_ref(device);
monitor->linklosslevel = (level ? : g_strdup("none"));
+ monitor->enabled.linkloss = linkloss;
+ monitor->enabled.pathloss = pathloss;
+ monitor->enabled.findme = findme;
if (g_dbus_register_interface(conn, path,
PROXIMITY_INTERFACE,
diff --git a/proximity/monitor.h b/proximity/monitor.h
index 5c6ebf6..ef47ee1 100644
--- a/proximity/monitor.h
+++ b/proximity/monitor.h
*
*/
-int monitor_register(DBusConnection *conn, struct btd_device *device);
+struct enabled {
+ gboolean linkloss;
+ gboolean pathloss;
+ gboolean findme;
+};
+
+int monitor_register(DBusConnection *conn, struct btd_device *device,
+ gboolean linkloss, gboolean pathloss, gboolean findme);
void monitor_unregister(DBusConnection *conn, struct btd_device *device);