adapter: Add support for experimental flag
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 16 May 2023 17:33:24 +0000 (10:33 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 5 Jan 2024 10:41:35 +0000 (16:11 +0530)
This adds experimental field to btd_adapter_driver so the plugin can
indicate drivers that depends on experimental to be enabled.

src/adapter.c
src/adapter.h

index de367bc..5b68ef8 100644 (file)
@@ -12834,6 +12834,12 @@ static void adapter_stop(struct btd_adapter *adapter)
 
 int btd_register_adapter_driver(struct btd_adapter_driver *driver)
 {
+       if (driver->experimental && !(g_dbus_get_flags() &
+                                       G_DBUS_FLAG_ENABLE_EXPERIMENTAL)) {
+               DBG("D-Bus experimental not enabled");
+               return -ENOTSUP;
+       }
+
        adapter_drivers = g_slist_append(adapter_drivers, driver);
 
        if (driver->probe == NULL)
index f3cfef6..57a66e3 100644 (file)
@@ -217,6 +217,11 @@ struct btd_adapter_driver {
                                                struct btd_device *device);
        void (*device_resolved)(struct btd_adapter *adapter,
                                                struct btd_device *device);
+
+       /* Indicates the driver is experimental and shall only be registered
+        * when experimental has been enabled (see: main.conf:Experimental).
+        */
+       bool experimental;
 };
 
 void device_resolved_drivers(struct btd_adapter *adapter,