[pulseaudio-discuss] [PATCH 3/4] bluetooth: Create NULL backend

Luiz Augusto von Dentz luiz.dentz at gmail.com
Wed Aug 13 05:23:07 PDT 2014


From: João Paulo Rechi Vita <jprvita at openbossa.org>

---
 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



More information about the pulseaudio-discuss mailing list