Unconditionally load both bluetooth headset backends as they do not interfer.
Ofono only
supports the HFP HF role while the native backend only supports HSP AG. If
there is an
active modem in your system ofono registers UUID 111f while the native backend
registers
UUID 1112, so there is no need to disable the native backend when ofono is
running. The
headset will then just connect to ofono instead of pulse. If you run ofono with
--noplugin=hfp_ag_bluez5, ofono will not register UUID 111f and the headset
will always
connect to pulse.
---
src/modules/bluetooth/backend-ofono.c | 3 --
src/modules/bluetooth/bluez5-util.c | 25 ++---------------
src/modules/bluetooth/bluez5-util.h | 3 +-
src/modules/bluetooth/module-bluez5-discover.c | 38 +-------------------------
4 files changed, 5 insertions(+), 64 deletions(-)
diff --git a/src/modules/bluetooth/backend-ofono.c
b/src/modules/bluetooth/backend-ofono.c
index 755df9e..9ed255b 100644
--- a/src/modules/bluetooth/backend-ofono.c
+++ b/src/modules/bluetooth/backend-ofono.c
@@ -340,7 +340,6 @@ static void ofono_bus_id_destroy(pa_bluetooth_backend
*backend) {
if (backend->ofono_bus_id) {
pa_xfree(backend->ofono_bus_id);
backend->ofono_bus_id = NULL;
- pa_bluetooth_discovery_set_ofono_running(backend->discovery, false);
}
}
@@ -368,8 +367,6 @@ finish:
PA_LLIST_REMOVE(pa_dbus_pending, backend->pending, p);
pa_dbus_pending_free(p);
-
- pa_bluetooth_discovery_set_ofono_running(backend->discovery,
backend->ofono_bus_id != NULL);
}
static void hf_audio_agent_register(pa_bluetooth_backend *hf) {
diff --git a/src/modules/bluetooth/bluez5-util.c
b/src/modules/bluetooth/bluez5-util.c
index 03c76bf..738bdee 100644
--- a/src/modules/bluetooth/bluez5-util.c
+++ b/src/modules/bluetooth/bluez5-util.c
@@ -85,7 +85,6 @@ struct pa_bluetooth_discovery {
pa_hashmap *devices;
pa_hashmap *transports;
- int headset_backend;
pa_bluetooth_backend *ofono_backend, *native_backend;
PA_LLIST_HEAD(pa_dbus_pending, pending);
};
@@ -860,21 +859,6 @@ static void
parse_interfaces_and_properties(pa_bluetooth_discovery *y, DBusMessa
return;
}
-void pa_bluetooth_discovery_set_ofono_running(pa_bluetooth_discovery *y, bool
is_running) {
- pa_assert(y);
-
- pa_log_debug("oFono is running: %s", pa_yes_no(is_running));
- if (y->headset_backend != HEADSET_BACKEND_AUTO)
- return;
-
- if (is_running && y->native_backend) {
- pa_bluetooth_native_backend_free(y->native_backend);
- y->native_backend = NULL;
- }
- else if (!is_running && !y->native_backend)
- y->native_backend = pa_bluetooth_native_backend_new(y->core, y);
-}
-
static void get_managed_objects_reply(DBusPendingCall *pending, void
*userdata) {
pa_dbus_pending *p;
pa_bluetooth_discovery *y;
@@ -913,10 +897,8 @@ static void get_managed_objects_reply(DBusPendingCall
*pending, void *userdata)
y->objects_listed = true;
- if (!y->ofono_backend && y->headset_backend != HEADSET_BACKEND_NATIVE)
- y->ofono_backend = pa_bluetooth_ofono_backend_new(y->core, y);
- if (!y->ofono_backend && !y->native_backend && y->headset_backend !=
HEADSET_BACKEND_OFONO)
- y->native_backend = pa_bluetooth_native_backend_new(y->core, y);
+ y->ofono_backend = pa_bluetooth_ofono_backend_new(y->core, y);
+ y->native_backend = pa_bluetooth_native_backend_new(y->core, y);
finish:
dbus_message_unref(r);
@@ -1570,7 +1552,7 @@ static void endpoint_done(pa_bluetooth_discovery *y,
pa_bluetooth_profile_t prof
}
}
-pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c, int
headset_backend) {
+pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) {
pa_bluetooth_discovery *y;
DBusError err;
DBusConnection *conn;
@@ -1579,7 +1561,6 @@ pa_bluetooth_discovery*
pa_bluetooth_discovery_get(pa_core *c, int headset_backe
y = pa_xnew0(pa_bluetooth_discovery, 1);
PA_REFCNT_INIT(y);
y->core = c;
- y->headset_backend = headset_backend;
y->adapters = pa_hashmap_new_full(pa_idxset_string_hash_func,
pa_idxset_string_compare_func, NULL,
(pa_free_cb_t) adapter_free);
y->devices = pa_hashmap_new_full(pa_idxset_string_hash_func,
pa_idxset_string_compare_func, NULL,
diff --git a/src/modules/bluetooth/bluez5-util.h
b/src/modules/bluetooth/bluez5-util.h
index d66e8a3..13d1f0a 100644
--- a/src/modules/bluetooth/bluez5-util.h
+++ b/src/modules/bluetooth/bluez5-util.h
@@ -156,8 +156,7 @@ const char
*pa_bluetooth_profile_to_string(pa_bluetooth_profile_t profile);
#define HEADSET_BACKEND_NATIVE 1
#define HEADSET_BACKEND_AUTO 2
-pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *core, int
headset_backend);
+pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *core);
pa_bluetooth_discovery* pa_bluetooth_discovery_ref(pa_bluetooth_discovery *y);
void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y);
-void pa_bluetooth_discovery_set_ofono_running(pa_bluetooth_discovery *y, bool
is_running);
#endif
diff --git a/src/modules/bluetooth/module-bluez5-discover.c
b/src/modules/bluetooth/module-bluez5-discover.c
index 1ccc1d1..c0e71ad 100644
--- a/src/modules/bluetooth/module-bluez5-discover.c
+++ b/src/modules/bluetooth/module-bluez5-discover.c
@@ -36,14 +36,6 @@ PA_MODULE_AUTHOR("João Paulo Rechi Vita");
PA_MODULE_DESCRIPTION("Detect available BlueZ 5 Bluetooth audio devices and
load BlueZ 5 Bluetooth audio drivers");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(true);
-PA_MODULE_USAGE(
- "headset=ofono|native|auto"
-);
-
-static const char* const valid_modargs[] = {
- "headset",
- NULL
-};
struct userdata {
pa_module *module;
@@ -90,54 +82,26 @@ static pa_hook_result_t
device_connection_changed_cb(pa_bluetooth_discovery *y,
return PA_HOOK_OK;
}
-#ifdef HAVE_BLUEZ_5_NATIVE_HEADSET
-const char *default_headset_backend = "native";
-#else
-const char *default_headset_backend = "ofono";
-#endif
-
int pa__init(pa_module *m) {
struct userdata *u;
- pa_modargs *ma;
- const char *headset_str;
- int headset_backend;
pa_assert(m);
- if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
- pa_log("failed to parse module arguments.");
- goto fail;
- }
-
- pa_assert_se(headset_str = pa_modargs_get_value(ma, "headset",
default_headset_backend));
- if (pa_streq(headset_str, "ofono"))
- headset_backend = HEADSET_BACKEND_OFONO;
- else if (pa_streq(headset_str, "native"))
- headset_backend = HEADSET_BACKEND_NATIVE;
- else if (pa_streq(headset_str, "auto"))
- headset_backend = HEADSET_BACKEND_AUTO;
- else {
- pa_log("headset parameter must be either ofono, native or auto (found
%s)", headset_str);
- goto fail;
- }
-
m->userdata = u = pa_xnew0(struct userdata, 1);
u->module = m;
u->core = m->core;
u->loaded_device_paths = pa_hashmap_new(pa_idxset_string_hash_func,
pa_idxset_string_compare_func);
- if (!(u->discovery = pa_bluetooth_discovery_get(u->core, headset_backend)))
+ if (!(u->discovery = pa_bluetooth_discovery_get(u->core)))
goto fail;
u->device_connection_changed_slot =
pa_hook_connect(pa_bluetooth_discovery_hook(u->discovery,
PA_BLUETOOTH_HOOK_DEVICE_CONNECTION_CHANGED),
PA_HOOK_NORMAL, (pa_hook_cb_t)
device_connection_changed_cb, u);
- pa_modargs_free(ma);
return 0;
fail:
- pa_modargs_free(ma);
pa__done(m);
return -1;
}
--
2.1.4
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss