advertising: Fix reporting advertising properties
authorClaudio Takahasi <claudio.takahasi@gmail.com>
Wed, 15 Dec 2021 18:05:27 +0000 (15:05 -0300)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:38 +0000 (19:08 +0530)
InterfacesAdded signal for LEAdvertisingManager1 might be emitted
containing initial/default properties values and property changed is
not emitted after reading advertising features. This patch registers
the interface (LEAdvertisingManager1) after reading advertising features
from kernel.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
src/advertising.c

index e71d1af..0e359c6 100644 (file)
@@ -1781,6 +1781,13 @@ static void read_adv_features_callback(uint8_t status, uint16_t length,
        manager->max_ads = feat->max_instances;
        manager->supported_flags |= feat->supported_flags;
 
+       /* Registering interface after querying properties */
+       if (!g_dbus_register_interface(btd_get_dbus_connection(),
+                                      adapter_get_path(manager->adapter),
+                                      LE_ADVERTISING_MGR_IFACE, methods,
+                                      NULL, properties, manager, NULL))
+               error("Failed to register " LE_ADVERTISING_MGR_IFACE);
+
        if (manager->max_ads == 0)
                return;
 
@@ -1856,14 +1863,6 @@ static struct btd_adv_manager *manager_create(struct btd_adapter *adapter,
        manager->min_tx_power = ADV_TX_POWER_NO_PREFERENCE;
        manager->max_tx_power = ADV_TX_POWER_NO_PREFERENCE;
 
-       if (!g_dbus_register_interface(btd_get_dbus_connection(),
-                                       adapter_get_path(manager->adapter),
-                                       LE_ADVERTISING_MGR_IFACE, methods,
-                                       NULL, properties, manager, NULL)) {
-               error("Failed to register " LE_ADVERTISING_MGR_IFACE);
-               goto fail;
-       }
-
        if (!mgmt_send(manager->mgmt, MGMT_OP_READ_ADV_FEATURES,
                                manager->mgmt_index, 0, NULL,
                                read_adv_features_callback, manager, NULL)) {