From: Jo??o Paulo Rechi Vita <jprvita@xxxxxxxxxxxxx> --- configure.ac | 11 +++++++++++ src/Makefile.am | 4 +++- src/modules/bluetooth/backend-null.c | 37 ++++++++++++++++++++++++++++++++++++ src/modules/bluetooth/backend.h | 31 ++++++++++++++++++++++++++++++ src/modules/bluetooth/bluez5-util.c | 10 ++++++++-- 5 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/modules/bluetooth/backend-null.c create mode 100644 src/modules/bluetooth/backend.h diff --git a/configure.ac b/configure.ac index 837e81e..2beca1f 100644 --- a/configure.ac +++ b/configure.ac @@ -1028,6 +1028,16 @@ AS_IF([test "x$HAVE_BLUEZ_4" = "x1" || test "x$HAVE_BLUEZ_5" = "x1"], HAVE_BLUEZ AC_SUBST(HAVE_BLUEZ) AM_CONDITIONAL([HAVE_BLUEZ], [test "x$HAVE_BLUEZ" = x1]) +## Headset profiles backend ## +AC_ARG_WITH(bluetooth_headset_backend, +AS_HELP_STRING([--with-bluetooth-headset-backend=<null>],[Backend for Bluetooth headset profiles (null)])) +if test -z "$with_bluetooth_headset_backend" ; then + BLUETOOTH_HEADSET_BACKEND=null +else + BLUETOOTH_HEADSET_BACKEND=$with_bluetooth_headset_backend +fi +AC_SUBST(BLUETOOTH_HEADSET_BACKEND) + #### UDEV support (optional) #### AC_ARG_ENABLE([udev], @@ -1489,6 +1499,7 @@ echo " Enable D-Bus: ${ENABLE_DBUS} Enable BlueZ 4: ${ENABLE_BLUEZ_4} Enable BlueZ 5: ${ENABLE_BLUEZ_5} + headset backed: ${BLUETOOTH_HEADSET_BACKEND} Enable udev: ${ENABLE_UDEV} Enable HAL->udev compat: ${ENABLE_HAL_COMPAT} Enable systemd login: ${ENABLE_SYSTEMD} diff --git a/src/Makefile.am b/src/Makefile.am index 5924bd8..b20b6df 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2085,7 +2085,9 @@ module_bluez4_device_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) $(SBC_CFLAGS) libbluez5_util_la_SOURCES = \ modules/bluetooth/bluez5-util.c \ modules/bluetooth/bluez5-util.h \ - modules/bluetooth/a2dp-codecs.h + modules/bluetooth/a2dp-codecs.h \ + modules/bluetooth/backend.h \ + modules/bluetooth/backend- at BLUETOOTH_HEADSET_BACKEND@.c libbluez5_util_la_LDFLAGS = -avoid-version libbluez5_util_la_LIBADD = $(MODULE_LIBADD) $(DBUS_LIBS) libbluez5_util_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) diff --git a/src/modules/bluetooth/backend-null.c b/src/modules/bluetooth/backend-null.c new file mode 100644 index 0000000..9ef1ee4 --- /dev/null +++ b/src/modules/bluetooth/backend-null.c @@ -0,0 +1,37 @@ +/*** + This file is part of PulseAudio. + + Copyright 2013 Jo??o Paulo Rechi Vita + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <pulsecore/log.h> + +#include "backend.h" + +hf_backend_data_t *hf_backend_new(pa_core *c) { + pa_log_debug("Bluetooth Headset Backend API support disabled"); + return NULL; +} + +void hf_backend_free(hf_backend_data_t *data) { + /* Nothing to do here */ +} diff --git a/src/modules/bluetooth/backend.h b/src/modules/bluetooth/backend.h new file mode 100644 index 0000000..78a857c --- /dev/null +++ b/src/modules/bluetooth/backend.h @@ -0,0 +1,31 @@ +#ifndef foohfagenthfoo +#define foohfagenthfoo + +/*** + This file is part of PulseAudio. + + Copyright 2013 Jo??o Paulo Rechi Vita + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#include <pulsecore/core.h> + +typedef struct hf_backend_data hf_backend_data_t; + +hf_backend_data_t *hf_backend_new(pa_core *c); +void hf_backend_free(hf_backend_data_t *data); +#endif diff --git a/src/modules/bluetooth/bluez5-util.c b/src/modules/bluetooth/bluez5-util.c index adb8351..c6755e0 100644 --- a/src/modules/bluetooth/bluez5-util.c +++ b/src/modules/bluetooth/bluez5-util.c @@ -34,6 +34,7 @@ #include <pulsecore/shared.h> #include "a2dp-codecs.h" +#include "backend.h" #include "bluez5-util.h" @@ -87,6 +88,7 @@ struct pa_bluetooth_discovery { pa_hashmap *devices; pa_hashmap *transports; + hf_backend_data_t *backend; PA_LLIST_HEAD(pa_dbus_pending, pending); }; @@ -1110,9 +1112,9 @@ const char *pa_bluetooth_profile_to_string(pa_bluetooth_profile_t profile) { case PA_BLUETOOTH_PROFILE_A2DP_SOURCE: return "a2dp_source"; case PA_BLUETOOTH_PROFILE_HEADSET_HEAD_UNIT: - return "headset_head_unit"; + return "hsp"; case PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY: - return "headset_audio_gateway"; + return "hfgw"; case PA_BLUETOOTH_PROFILE_OFF: return "off"; } @@ -1590,6 +1592,7 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) { endpoint_init(y, PA_BLUETOOTH_PROFILE_A2DP_SINK); endpoint_init(y, PA_BLUETOOTH_PROFILE_A2DP_SOURCE); + y->backend = hf_backend_new(c); get_managed_objects(y); @@ -1631,6 +1634,9 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) { pa_hashmap_free(y->transports); } + if (y->backend) + hf_backend_free(y->backend); + if (y->connection) { if (y->matches_added) -- 1.9.3