diff options
author | Thierry Bultel <thierry.bultel@iot.bzh> | 2018-12-04 23:11:20 +0100 |
---|---|---|
committer | Thierry Bultel <thierry.bultel@iot.bzh> | 2018-12-19 23:09:21 +0100 |
commit | e0f57e523112e1bc73a04e8615d7a21355f0ce0e (patch) | |
tree | 19198c38d7433862cee733fde3efca8170228279 /plugins/alsa/alsa-bluez.c | |
parent | 7df040a3742af8d800852dd39f8e921cd82a4cf2 (diff) |
Add support for bluetooth telephonyguppy_6.99.3guppy/6.99.36.99.3
This adds support for bluetooth telephony.
A big rework in the softmixer internals has been
mandatory, in order to support dynamic streams creation
and deletions.
Bluetooth telephony relies on the recent evolutions
of bluez-alsa, the most important one being the
support of HFP over Ofono. The softmixer opens
PCM ioplugs provided by bluez-alsa.
Bluetooth SCO needs 2 streams, one for listening
and the other for talking. These streams are created
upon requests sent by the hal-manager.
The hal manager subscribes for bluez-alsa events
and request the list of availalble transports.
For each "attach" transaction verb, the softmixer
maintains a list of the all created objects
(sources, sinks, zones, ramps, streams, and more)
Additionnally, it creates a new verb when the attach
succeeds, that verb is typically something like
"sco_XX:XX:XX:XX:XX:XX", and the only supported action
at the present time is {"action":"remove"}, that performs
all the cleanup of the registered objects.
Change-Id: I1b119e6c079e60daf771e63c083a1ef33a39f379
Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
Diffstat (limited to 'plugins/alsa/alsa-bluez.c')
-rw-r--r-- | plugins/alsa/alsa-bluez.c | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/plugins/alsa/alsa-bluez.c b/plugins/alsa/alsa-bluez.c deleted file mode 100644 index 080c3c8..0000000 --- a/plugins/alsa/alsa-bluez.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright(C) 2018 "IoT.bzh" - * Author Thierry Bultel <thierry.bultel@iot.bzh> - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http : //www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License - - * for the specific language governing permissions and - * limitations under the License. - * - * - */ - - -#include "alsa-bluez.h" - -#include <stdbool.h> -#include <dlfcn.h> - -#define ALSA_BLUEZ_PROXY_LIB "/usr/lib/alsa-lib/libasound_module_pcm_bluealsa_proxy.so" -#define ALSA_BLUEZ_PROXY_SETDEVICE "bluealsa_proxy_set_remote_device" - -typedef int (*bluealsa_set_remote_device_ptr) (const char * interface, const char * device, const char * profile); - -static bluealsa_set_remote_device_ptr bluealsa_proxy_set_remote_device = NULL; - -void alsa_bluez_init() { - static bool initialized = false; - if (initialized) - goto failed; - -#if SND_LIB_VERSION >= (1<<16|1<<8|6) - char errbuf[256]; - void * dl = snd_dlopen(ALSA_BLUEZ_PROXY_LIB, RTLD_NOW, errbuf, 256); -#else - void * dl = snd_dlopen(ALSA_BLUEZ_PROXY_LIB, RTLD_NOW); -#endif - if (!dl) { - printf("Failed to open bluealsa proxy plugin\n"); - goto failed; - } - - void * func = snd_dlsym(dl, ALSA_BLUEZ_PROXY_SETDEVICE, SND_DLSYM_VERSION(SND_PCM_DLSYM_VERSION)); - if (!func) { - printf("Unable to find %s symbol\n", ALSA_BLUEZ_PROXY_SETDEVICE); - goto failed; - } - - bluealsa_proxy_set_remote_device = func; - initialized = true; - -failed: - return; -} - -int alsa_bluez_set_remote_device(const char * interface, const char * device, const char * profile) { - if (!bluealsa_proxy_set_remote_device) - return -1; - - return bluealsa_proxy_set_remote_device(interface,device,profile); -} - - |