diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-03-12 12:53:12 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-03-12 12:53:12 +0000 |
commit | 934d86c2c9000c7109c250eb0171c01375059217 (patch) | |
tree | e09ef85154d682c873e8be2f73b26f6e7b33b362 | |
parent | d335e3f5f4dd07b00d5ff87aebb05b543f35db8c (diff) |
Register persistent devices
-rw-r--r-- | hcid/dbus-hci.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index 6997699a..a9643450 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -50,8 +50,10 @@ #include "textfile.h" #include "manager.h" #include "adapter.h" +#include "device.h" #include "error.h" #include "dbus-helper.h" +#include "glib-helper.h" #include "dbus-common.h" #include "dbus-error.h" #include "dbus-test.h" @@ -561,6 +563,28 @@ int hcid_dbus_unregister_device(uint16_t id) return ret; } +static void create_stored_device(char *key, char *value, void *user_data) +{ + struct adapter *adapter = user_data; + GSList *uuids = bt_string2list(value); + const gchar *path; + + path = device_create(adapter, key, uuids); + + adapter->devices = g_slist_append(adapter->devices, g_strdup(path)); +} + +static void register_devices(bdaddr_t *src, struct adapter *adapter) +{ + char filename[PATH_MAX + 1]; + char addr[18]; + + ba2str(src, addr); + create_name(filename, PATH_MAX, STORAGEDIR, addr, "profiles"); + + textfile_foreach(filename, create_stored_device, adapter); +} + int hcid_dbus_start_device(uint16_t id) { char path[MAX_PATH_LENGTH], *pptr; @@ -655,6 +679,9 @@ int hcid_dbus_start_device(uint16_t id) DBUS_TYPE_INVALID); } + /* Register persistent devices */ + register_devices(&di.bdaddr, adapter); + failed: if (dd >= 0) hci_close_dev(dd); |