Skip to content

Commit

Permalink
main.conf: Add support for testing interfaces
Browse files Browse the repository at this point in the history
This adds support for D-Bus testing interfaces and testing profile
drivers.
  • Loading branch information
Vudentz committed Apr 23, 2024
1 parent d8f3a3f commit e7578f9
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/bluetoothd.rst.in
Expand Up @@ -64,8 +64,13 @@ OPTIONS

-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
Expand Down
1 change: 1 addition & 0 deletions src/btd.h
Expand Up @@ -128,6 +128,7 @@ struct btd_opts {
bool fast_conn;
bool refresh_discovery;
bool experimental;
bool testing;
struct queue *kernel;

uint16_t did_source;
Expand Down
8 changes: 8 additions & 0 deletions src/main.c
Expand Up @@ -87,6 +87,7 @@ static const char *supported_options[] = {
"TemporaryTimeout",
"RefreshDiscovery",
"Experimental",
"Testing",
"KernelExperimental",
"RemoteNameRequestRetryDelay",
NULL
Expand Down Expand Up @@ -1034,6 +1035,8 @@ static void parse_general(GKeyFile *config)
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,
Expand Down Expand Up @@ -1344,6 +1347,8 @@ static GOptionEntry options[] = {
"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" },
Expand Down Expand Up @@ -1410,6 +1415,9 @@ int main(int argc, char *argv[])
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) {
Expand Down
4 changes: 4 additions & 0 deletions src/main.conf
Expand Up @@ -126,6 +126,10 @@
# 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>
Expand Down
6 changes: 6 additions & 0 deletions src/profile.c
Expand Up @@ -781,6 +781,12 @@ int btd_profile_register(struct btd_profile *profile)
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;
}
Expand Down
5 changes: 5 additions & 0 deletions src/profile.h
Expand Up @@ -33,6 +33,11 @@ struct btd_profile {
*/
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);

Expand Down

0 comments on commit e7578f9

Please sign in to comment.