#define DISCONNECT_TIMER 2
#define DISCOVERY_TIMER 2
-#define AUTOCONNECT_INTERVAL 45
/* When all services should trust a remote device */
#define GLOBAL_TRUST "[all]"
GSList *attios;
GSList *attios_offline;
guint attachid; /* Attrib server attach */
- guint attioid;
gboolean connected;
if (device->discov_timer)
g_source_remove(device->discov_timer);
- if (device->attioid)
- g_source_remove(device->attioid);
-
DBG("%p", device);
g_free(device->authr);
attio->dcfunc(attio->user_data);
}
-static gboolean att_auto_connect(gpointer user_data);
-
static void attrib_disconnected(gpointer user_data)
{
struct btd_device *device = user_data;
g_slist_foreach(device->attios, attio_disconnected, NULL);
- if ((device->attios || device->attios_offline) && device->attioid == 0)
- device->attioid = g_timeout_add_seconds(AUTOCONNECT_INTERVAL,
- att_auto_connect,
- device);
-
attrib_channel_detach(device->attachid);
g_attrib_unref(device->attrib);
device->attrib = NULL;
return;
}
- if (device->attioid) {
- g_source_remove(device->attioid);
- device->attioid = 0;
- }
-
attrib = g_attrib_new(io);
device->attachid = attrib_channel_attach(attrib, TRUE);
if (device->attachid == 0)
}
}
-static gboolean att_auto_connect(gpointer user_data)
+static gboolean att_connect(gpointer user_data)
{
struct btd_device *device = user_data;
struct btd_adapter *adapter = device->adapter;
if (io == NULL) {
error("ATT bt_io_connect(%s): %s", addr, gerr->message);
g_error_free(gerr);
- return TRUE;
+ return FALSE;
}
g_io_channel_unref(io);
- return TRUE;
+ return FALSE;
}
int device_browse_primary(struct btd_device *device, DBusConnection *conn,
device->attios_offline = g_slist_append(device->attios_offline,
attio);
g_idle_add(notify_attios, device);
- } else if (device->attioid == 0) {
- att_auto_connect(device);
- device->attioid = g_timeout_add_seconds(AUTOCONNECT_INTERVAL,
- att_auto_connect,
- device);
+ } else {
+ g_idle_add(att_connect, device);
device->attios = g_slist_append(device->attios, attio);
}
if (device->attios != NULL || device->attios_offline != NULL)
return TRUE;
- if (device->attioid) {
- g_source_remove(device->attioid);
- device->attioid = 0;
- }
-
if (device->attachid) {
attrib_channel_detach(device->attachid);
device->attachid = 0;