Skeleton of automatic connections driven by platform/user event.
Two layers will manage connections: Profiles can request on demand
connections registering ATTIO connection callbacks(one attempt) for
a given device and platform/user action can trigger automatic
connections for devices with ATTIO callbacks registered.
return 0;
}
+static void set_auto_connect(gpointer data, gpointer user_data)
+{
+ struct btd_device *device = data;
+
+ device_set_auto_connect(device, TRUE);
+}
+
+void btd_adapter_enable_auto_connect(struct btd_adapter *adapter)
+{
+ if (!adapter->up)
+ return;
+
+ DBG("Enabling automatic connections");
+
+ g_slist_foreach(adapter->devices, set_auto_connect, NULL);
+}
+
void btd_adapter_register_pin_cb(struct btd_adapter *adapter,
btd_adapter_pin_cb_t cb)
{
int btd_adapter_restore_powered(struct btd_adapter *adapter);
int btd_adapter_switch_online(struct btd_adapter *adapter);
int btd_adapter_switch_offline(struct btd_adapter *adapter);
+void btd_adapter_enable_auto_connect(struct btd_adapter *adapter);
typedef ssize_t (*btd_adapter_pin_cb_t) (struct btd_adapter *adapter,
struct btd_device *dev, char *out);
gboolean paired;
gboolean blocked;
gboolean bonded;
+ gboolean auto_connect;
gboolean authorizing;
gint ref;
device->bonded = bonded;
}
+void device_set_auto_connect(struct btd_device *device, gboolean enable)
+{
+ char addr[18];
+
+ if (!device)
+ return;
+
+ ba2str(&device->bdaddr, addr);
+
+ DBG("%s auto connect: %d", addr, enable);
+
+ device->auto_connect = enable;
+}
+
void device_set_type(struct btd_device *device, device_type_t type)
{
if (!device)
void device_set_temporary(struct btd_device *device, gboolean temporary);
void device_set_type(struct btd_device *device, device_type_t type);
void device_set_bonded(struct btd_device *device, gboolean bonded);
+void device_set_auto_connect(struct btd_device *device, gboolean enable);
gboolean device_is_connected(struct btd_device *device);
DBusMessage *device_create_bonding(struct btd_device *device,
DBusConnection *conn, DBusMessage *msg,