diff --git a/src/bluetoothd.rst.in b/src/bluetoothd.rst.in
index 7a0fa1b..0b998f6 100644
--- a/src/bluetoothd.rst.in
+++ b/src/bluetoothd.rst.in
-C, --compat Provide deprecated command line interfaces.
--E, --experimental Enable experimental interfaces. Those interfaces are not
- guaranteed to be compatible or present in future releases.
+-E, --experimental Enable D-Bus experimental interfaces.
+ These interfaces are not guaranteed to be compatible or present in future
+ releases.
+
+-T, --testing Enable D-Bus testing interfaces.
+ These interfaces are only meant for test validation of the internals of
+ bluetoothd and shall not never be used by anything other than that.
-K, --kernel=<uuid1>,<uuid2>,...
Enable Kernel experimental features. Kernel experimental features are
diff --git a/src/btd.h b/src/btd.h
index 8c80059..383bd7c 100644
--- a/src/btd.h
+++ b/src/btd.h
bool fast_conn;
bool refresh_discovery;
bool experimental;
+ bool testing;
struct queue *kernel;
uint16_t did_source;
diff --git a/src/main.c b/src/main.c
index 78831ad..23af678 100644
--- a/src/main.c
+++ b/src/main.c
"TemporaryTimeout",
"RefreshDiscovery",
"Experimental",
+ "Testing",
"KernelExperimental",
"RemoteNameRequestRetryDelay",
NULL
parse_secure_conns(config);
parse_config_bool(config, "General", "Experimental",
&btd_opts.experimental);
+ parse_config_bool(config, "General", "Testing",
+ &btd_opts.testing);
parse_kernel_exp(config);
parse_config_u32(config, "General", "RemoteNameRequestRetryDelay",
&btd_opts.name_request_retry_delay,
"Provide deprecated command line interfaces" },
{ "experimental", 'E', 0, G_OPTION_ARG_NONE, &btd_opts.experimental,
"Enable experimental D-Bus interfaces" },
+ { "testing", 'T', 0, G_OPTION_ARG_NONE, &btd_opts.testing,
+ "Enable testing D-Bus interfaces" },
{ "kernel", 'K', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK,
parse_kernel_experimental,
"Enable kernel experimental features" },
if (btd_opts.experimental)
gdbus_flags = G_DBUS_FLAG_ENABLE_EXPERIMENTAL;
+ if (btd_opts.testing)
+ gdbus_flags |= G_DBUS_FLAG_ENABLE_TESTING;
+
g_dbus_set_flags(gdbus_flags);
if (adapter_init() < 0) {
diff --git a/src/main.conf b/src/main.conf
index 49864b5..bea9464 100644
--- a/src/main.conf
+++ b/src/main.conf
# Possible values: true or false
#Experimental = false
+# Enables D-Bus testing interfaces
+# Possible values: true or false
+#Testing = false
+
# Enables kernel experimental features, alternatively a list of UUIDs
# can be given.
# Possible values: true,false,<UUID List>
diff --git a/src/profile.c b/src/profile.c
index ea188f3..c62224a 100644
--- a/src/profile.c
+++ b/src/profile.c
return -ENOTSUP;
}
+ if (profile->testing && !(g_dbus_get_flags() &
+ G_DBUS_FLAG_ENABLE_TESTING)) {
+ DBG("D-Bus testing not enabled");
+ return -ENOTSUP;
+ }
+
profiles = g_slist_append(profiles, profile);
return 0;
}
diff --git a/src/profile.h b/src/profile.h
index 6871f2f..424ce55 100644
--- a/src/profile.h
+++ b/src/profile.h
*/
bool experimental;
+ /* Indicates the profile for testing only and shall only be registered
+ * when testing has been enabled (see: main.conf:Testing).
+ */
+ bool testing;
+
int (*device_probe) (struct btd_service *service);
void (*device_remove) (struct btd_service *service);