[pulseaudio-discuss] [RFC v2 15/15] bluetooth: Update to volume control in BlueZ 5

João Paulo Rechi Vita jprvita at gmail.com
Wed Apr 17 10:02:17 PDT 2013


On Tue, Apr 16, 2013 at 10:40 AM, Mikel Astiz <mikel.astiz.oss at gmail.com> wrote:
> From: Mikel Astiz <mikel.astiz at bmw-carit.de>
>
> In BlueZ 5, the microphone and speaker gains are exposed as properties
> of the MediaTransport1 interface.

There is no HSP implementation in BlueZ 5 and for HFP these interfaces
will be exposed in the oFono API, so this code will never be used. IMO
we shouldn't merge this patch util these properties are actually used
by someone.

> ---
>  src/modules/bluetooth/bluetooth-util.c | 41 ++++++++++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
>
> diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
> index 7589c22..de4dbce 100644
> --- a/src/modules/bluetooth/bluetooth-util.c
> +++ b/src/modules/bluetooth/bluetooth-util.c
> @@ -1154,6 +1154,32 @@ static int transport_parse_property(pa_bluetooth_transport *t, DBusMessageIter *
>
>              break;
>          }
> +
> +        case DBUS_TYPE_BYTE: {
> +            uint8_t value;
> +
> +            dbus_message_iter_get_basic(&variant_i, &value);
> +
> +            if (pa_streq(key, "MicrophoneGain")) {
> +                uint8_t gain;
> +
> +                if ((gain = PA_MIN(value, HSP_MAX_GAIN)) == t->microphone_gain)
> +                    break;
> +
> +                t->microphone_gain = gain;
> +                pa_hook_fire(&t->device->discovery->hooks[PA_BLUETOOTH_HOOK_TRANSPORT_MICROPHONE_GAIN_CHANGED], t);
> +            } else if (pa_streq(key, "SpeakerGain")) {
> +                uint8_t gain;
> +
> +                if ((gain = PA_MIN(value, HSP_MAX_GAIN)) == t->speaker_gain)
> +                    break;
> +
> +                t->speaker_gain = gain;
> +                pa_hook_fire(&t->device->discovery->hooks[PA_BLUETOOTH_HOOK_TRANSPORT_SPEAKER_GAIN_CHANGED], t);
> +            }
> +
> +            break;
> +        }
>      }
>
>      return 0;
> @@ -1617,6 +1643,14 @@ void pa_bluetooth_transport_set_microphone_gain(pa_bluetooth_transport *t, uint1
>      pa_assert(t);
>      pa_assert(t->profile == PROFILE_HSP);
>
> +    if (t->device->discovery->version >= BLUEZ_VERSION_5) {
> +        uint8_t g = (uint8_t) gain;
> +
> +        set_property(t->device->discovery, t->owner, t->path, "org.bluez.MediaTransport1",
> +                     "MicrophoneGain", DBUS_TYPE_BYTE, &g);
> +        return;
> +    }
> +
>      set_property(t->device->discovery, "org.bluez", t->device->path, "org.bluez.Headset",
>                   "MicrophoneGain", DBUS_TYPE_UINT16, &gain);
>  }
> @@ -1627,6 +1661,13 @@ void pa_bluetooth_transport_set_speaker_gain(pa_bluetooth_transport *t, uint16_t
>      pa_assert(t);
>      pa_assert(t->profile == PROFILE_HSP);
>
> +    if (t->device->discovery->version >= BLUEZ_VERSION_5) {
> +        uint8_t g = (uint8_t) gain;
> +
> +        set_property(t->device->discovery, t->owner, t->path, "org.bluez.MediaTransport1", "SpeakerGain", DBUS_TYPE_BYTE, &g);
> +        return;
> +    }
> +
>      set_property(t->device->discovery, "org.bluez", t->device->path, "org.bluez.Headset",
>                   "SpeakerGain", DBUS_TYPE_UINT16, &gain);
>  }
> --
> 1.8.1.4
>
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss



--
João Paulo Rechi Vita
http://about.me/jprvita


More information about the pulseaudio-discuss mailing list