[pulseaudio-discuss] [RFCv0 00/21] Bluetooth HFP support via oFono

jprvita at gmail.com jprvita at gmail.com
Tue Feb 4 14:03:45 PST 2014

From: João Paulo Rechi Vita <jprvita at gmail.com>

This series implements support for the Bluetooth HFP profile implement as an
external profile in oFono.

The support has been implement as a separate transport backend and in a
separate file, to allow for optional build of this support and to allow to
substitute it for a different backend. This was a requirement when the
arquitecture of this feature was discussed almost a year ago, and I'm not sure
if this requirement still holds true. My personal opinion is that it's a bit of
overengineering and I would rather add it later if another HFP backend appears,
but since the code was already written I've left it as part of the series so
others can comment on this matter.

Another point that I'm specially interested in getting feedback is in the last
two patches of the series, in which there is a notification from the I/O thread
to the main thread of a HUP on the stream fd, so the main thread can suspend
the source/sink. This is necessary because on the API used by oFono there is no
notification of the transport state transition from playing to idle, only the
connection is dropped and a HUP comes through the fd. In this point we need to
suspend the source/sink and release the transport, otherwise we don't play well
with module-bluetooth-policy/module-loopback and we don't configure the fd of a
subsequent connection properly.

João Paulo Rechi Vita (21):
  bluetooth: Fix lines going over collumn 128
  bluetooth: Change BlueZ 5 card profile name from a2dp to a2dp_sink
  bluetooth: Add basic support for HEADSET profiles
  bluetooth: Add BlueZ 5 headset profile names in policy module
  bluetooth: Create Handsfree Audio Agent NULL backend
  bluetooth: Create Handsfree Audio Agent oFono backend
  bluetooth: Monitor D-Bus signals
  bluetooth: Create pa_bluetooth_dbus_send_and_add_to_pending() for
    oFono backend
  bluetooth: Register/Unregister Handsfree Audio Agent with oFono
  bluetooth: List HandsfreeAudioCard objects from oFono
  bluetooth: Parse HandsfreeAudioCard properties
  bluetooth: Implement transport acquire for hf_audio_agent transports
  bluetooth: Implement transport release for hf_audio_agent transports
  bluetooth: Track oFono service
  bluetooth: Handle CardAdded signal
  bluetooth: Handle CardRemoved signal
  bluetooth: Implement org.ofono.HandsfreeAudioAgent.Release()
  bluetooth: Implement org.ofono.HandsfreeAudioAgent.NewConnection()
  bluetooth: Rename variable to improve code readability
  bluetooth: Notify the main thread of a stream fd HUP
  bluetooth: Suspend the source/sink the HFP-oFono stream fd HUP

 configure.ac                                    |  10 +
 src/Makefile.am                                 |   4 +-
 src/modules/bluetooth/bluez5-util.c             |  10 +
 src/modules/bluetooth/bluez5-util.h             |   6 +
 src/modules/bluetooth/hfaudioagent-null.c       |  37 ++
 src/modules/bluetooth/hfaudioagent-ofono.c      | 672 ++++++++++++++++++++++++
 src/modules/bluetooth/hfaudioagent.h            |  31 ++
 src/modules/bluetooth/module-bluetooth-policy.c |  38 +-
 src/modules/bluetooth/module-bluez5-device.c    | 459 ++++++++++++----
 9 files changed, 1140 insertions(+), 127 deletions(-)
 create mode 100644 src/modules/bluetooth/hfaudioagent-null.c
 create mode 100644 src/modules/bluetooth/hfaudioagent-ofono.c
 create mode 100644 src/modules/bluetooth/hfaudioagent.h


More information about the pulseaudio-discuss mailing list