diff --git a/src/adapter.c b/src/adapter.c
index 85a9d66..b639297 100644
--- a/src/adapter.c
+++ b/src/adapter.c
g_dbus_pending_property_success(id);
}
+static void new_settings_callback(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ struct btd_adapter *adapter = user_data;
+ uint32_t settings;
+
+ if (length < sizeof(settings)) {
+ error("Wrong size of new settings parameters");
+ return;
+ }
+
+ settings = bt_get_le32(param);
+
+ DBG("Settings: 0x%08x", settings);
+
+ adapter_update_settings(adapter, settings);
+}
+
static void set_powered(struct btd_adapter *adapter, gboolean powered,
GDBusPendingPropertySet id)
{
if (adapter->current_settings == new_settings)
return;
+ DBG("settings 0x%08x", new_settings);
+
if (mgmt_pairable(new_settings) !=
mgmt_pairable(adapter->current_settings))
adapter_pairable_changed(adapter, new_settings);
adapter->dev_id = id;
adapter->mgmt = mgmt_ref(mgmt_master);
+ mgmt_register(adapter->mgmt, MGMT_EV_NEW_SETTINGS, adapter->dev_id,
+ new_settings_callback, adapter, NULL);
+
mgmt_register(adapter->mgmt, MGMT_EV_CLASS_OF_DEV_CHANGED,
adapter->dev_id,
class_of_dev_changed_callback,