From 3a6516a7bc6a87a03ed762cb6afa2c434eb41d1e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 4 Jan 2013 13:04:55 -0800 Subject: [PATCH] core: Add support for handling new settings notifications --- src/adapter.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index 85a9d6650..b639297c0 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -385,6 +385,24 @@ static void set_discoverable(struct btd_adapter *adapter, 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) { @@ -1964,6 +1982,8 @@ void adapter_update_settings(struct btd_adapter *adapter, 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); @@ -3034,6 +3054,9 @@ static struct btd_adapter *adapter_create(int id) 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, -- 2.47.3