[pulseaudio-discuss] [RFCv0 05/21] bluetooth: Create Handsfree Audio Agent NULL backend
jprvita at gmail.com
jprvita at gmail.com
Tue Feb 4 14:03:50 PST 2014
From: João Paulo Rechi Vita <jprvita at openbossa.org>
---
configure.ac | 10 +++++++++
src/Makefile.am | 4 +++-
src/modules/bluetooth/bluez5-util.c | 6 +++++
src/modules/bluetooth/hfaudioagent-null.c | 37 +++++++++++++++++++++++++++++++
src/modules/bluetooth/hfaudioagent.h | 31 ++++++++++++++++++++++++++
5 files changed, 87 insertions(+), 1 deletion(-)
create mode 100644 src/modules/bluetooth/hfaudioagent-null.c
create mode 100644 src/modules/bluetooth/hfaudioagent.h
diff --git a/configure.ac b/configure.ac
index 1d4555b..d5246a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1022,6 +1022,15 @@ 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|ofono>],[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],
@@ -1485,6 +1494,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 857fda3..908eb42 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2070,7 +2070,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/hfaudioagent.h \
+ modules/bluetooth/hfaudioagent- 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/bluez5-util.c b/src/modules/bluetooth/bluez5-util.c
index 142617c..c8ddbed 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 "hfaudioagent.h"
#include "bluez5-util.h"
@@ -87,6 +88,7 @@ struct pa_bluetooth_discovery {
pa_hashmap *devices;
pa_hashmap *transports;
+ hf_audio_agent_data *hf_audio_agent;
PA_LLIST_HEAD(pa_dbus_pending, pending);
};
@@ -1574,6 +1576,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->hf_audio_agent = hf_audio_agent_init(c);
get_managed_objects(y);
@@ -1615,6 +1618,9 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) {
pa_hashmap_free(y->transports);
}
+ if (y->hf_audio_agent)
+ hf_audio_agent_done(y->hf_audio_agent);
+
if (y->connection) {
if (y->matches_added)
diff --git a/src/modules/bluetooth/hfaudioagent-null.c b/src/modules/bluetooth/hfaudioagent-null.c
new file mode 100644
index 0000000..96fca06
--- /dev/null
+++ b/src/modules/bluetooth/hfaudioagent-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 "hfaudioagent.h"
+
+hf_audio_agent_data *hf_audio_agent_init(pa_core *c) {
+ pa_log_debug("HandsfreeAudioAgent API support disabled");
+ return NULL;
+}
+
+void hf_audio_agent_done(hf_audio_agent_data *data) {
+ /* Nothing to do here */
+}
diff --git a/src/modules/bluetooth/hfaudioagent.h b/src/modules/bluetooth/hfaudioagent.h
new file mode 100644
index 0000000..2982034
--- /dev/null
+++ b/src/modules/bluetooth/hfaudioagent.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_audio_agent_data hf_audio_agent_data;
+
+hf_audio_agent_data *hf_audio_agent_init(pa_core *c);
+void hf_audio_agent_done(hf_audio_agent_data *data);
+#endif
--
1.8.3.1
More information about the pulseaudio-discuss
mailing list