From 026f998424989e35f6014065554dc21c8afaec1e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 5 Jan 2013 10:28:51 -0800 Subject: [PATCH] core: Register the management event handlers after read info success --- src/adapter.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index b86e6dd0c..fc8f44d12 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -225,9 +225,6 @@ static void class_of_dev_changed_callback(uint16_t index, uint16_t length, struct btd_adapter *adapter = user_data; const struct mgmt_cod *rp = param; - if (!adapter->initialized) - return; - if (length < sizeof(*rp)) { error("Wrong size of class of device changed parameters"); return; @@ -479,9 +476,6 @@ static void new_settings_callback(uint16_t index, uint16_t length, struct btd_adapter *adapter = user_data; uint32_t settings; - if (!adapter->initialized) - return; - if (length < sizeof(settings)) { error("Wrong size of new settings parameters"); return; @@ -715,9 +709,6 @@ static void local_name_changed_callback(uint16_t index, uint16_t length, struct btd_adapter *adapter = user_data; const struct mgmt_cp_set_local_name *rp = param; - if (!adapter->initialized) - return; - if (length < sizeof(*rp)) { error("Wrong size of local name changed parameters"); return; @@ -3261,18 +3252,6 @@ static struct btd_adapter *btd_adapter_new(uint16_t index) adapter->dev_id = index; 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, - adapter, NULL); - mgmt_register(adapter->mgmt, MGMT_EV_LOCAL_NAME_CHANGED, - adapter->dev_id, - local_name_changed_callback, - adapter, NULL); - adapter->auths = g_queue_new(); return btd_adapter_ref(adapter); @@ -4163,6 +4142,25 @@ static void read_info_complete(uint8_t status, uint16_t length, goto failed; } + /* + * Register all event notification handlers for controller. + * + * The handlers are registered after a succcesful read of the + * controller info. From now on they can track updates and + * notifications. + */ + 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, + adapter, NULL); + mgmt_register(adapter->mgmt, MGMT_EV_LOCAL_NAME_CHANGED, + adapter->dev_id, + local_name_changed_callback, + adapter, NULL); + set_dev_class(adapter, adapter->major_class, adapter->minor_class); set_name(adapter, btd_adapter_get_name(adapter)); -- 2.47.3