diff --git a/plugins/hciops.c b/plugins/hciops.c
index 04802f4..00b9006 100644
--- a/plugins/hciops.c
+++ b/plugins/hciops.c
gboolean pairable, discoverable;
if (!dev->registered) {
- adapter = btd_manager_register_adapter(index);
+ adapter = btd_manager_register_adapter(index, TRUE);
if (adapter)
dev->registered = TRUE;
} else {
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index 147cf7c..fd42a64 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
DBG("hci%u name %s", index, (char *) rp->name);
DBG("hci%u short name %s", index, (char *) rp->short_name);
- adapter = btd_manager_register_adapter(index);
+ adapter = btd_manager_register_adapter(index,
+ mgmt_powered(info->current_settings));
if (adapter == NULL) {
error("mgmtops: unable to register adapter");
return;
diff --git a/src/adapter.c b/src/adapter.c
index 5742fd2..685e1ca 100644
--- a/src/adapter.c
+++ b/src/adapter.c
g_free(path);
}
-gboolean adapter_init(struct btd_adapter *adapter)
+gboolean adapter_init(struct btd_adapter *adapter, gboolean up)
{
- /* adapter_ops makes sure that newly registered adapters always
- * start off as powered */
- adapter->up = TRUE;
+ adapter->up = up;
adapter->allow_name_changes = TRUE;
diff --git a/src/adapter.h b/src/adapter.h
index c285172..22bb0bb 100644
--- a/src/adapter.h
+++ b/src/adapter.h
gboolean remove_storage);
struct btd_adapter *adapter_create(DBusConnection *conn, int id);
-gboolean adapter_init(struct btd_adapter *adapter);
+gboolean adapter_init(struct btd_adapter *adapter, gboolean up);
void adapter_remove(struct btd_adapter *adapter);
void adapter_set_allow_name_changes(struct btd_adapter *adapter,
gboolean allow_name_changes);
diff --git a/src/manager.c b/src/manager.c
index 1d44c66..8c49457 100644
--- a/src/manager.c
+++ b/src/manager.c
btd_stop_exit_timer();
}
-struct btd_adapter *btd_manager_register_adapter(int id)
+struct btd_adapter *btd_manager_register_adapter(int id, gboolean up)
{
struct btd_adapter *adapter;
const char *path;
adapters = g_slist_append(adapters, adapter);
- if (!adapter_init(adapter)) {
+ if (!adapter_init(adapter, up)) {
adapters = g_slist_remove(adapters, adapter);
btd_adapter_unref(adapter);
return NULL;
diff --git a/src/manager.h b/src/manager.h
index 4f92d2f..0056909 100644
--- a/src/manager.h
+++ b/src/manager.h
struct btd_adapter *manager_get_default_adapter(void);
void manager_foreach_adapter(adapter_cb func, gpointer user_data);
GSList *manager_get_adapters(void);
-struct btd_adapter *btd_manager_register_adapter(int id);
+struct btd_adapter *btd_manager_register_adapter(int id, gboolean up);
int btd_manager_unregister_adapter(int id);
void manager_add_adapter(const char *path);
void btd_manager_set_did(uint16_t vendor, uint16_t product, uint16_t version);