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-transaction.h | |
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-transaction.h')
-rw-r--r-- | plugins/alsa/alsa-transaction.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/plugins/alsa/alsa-transaction.h b/plugins/alsa/alsa-transaction.h new file mode 100644 index 0000000..a0af0ae --- /dev/null +++ b/plugins/alsa/alsa-transaction.h @@ -0,0 +1,37 @@ +#ifndef __INC_ALSA_TRANSACTION_H +#define __INC_ALSA_TRANSACTION_H + +#include <urcu/list.h> +#include <stdbool.h> + +#include "afb-definitions.h" + +struct SoftMixerT_; + +typedef void (*AlsaTransactionDestructor) (struct SoftMixerT_ *, void*); + +typedef struct { + const char * uid; + struct SoftMixerT_* mixer; + struct cds_list_head list; +} AlsaMixerTransaction; + +typedef struct { + struct cds_list_head list_entry; + void * object; + AlsaTransactionDestructor destructor; +} AlsaMixerTransactionDataItem; + +extern AlsaMixerTransaction * AlsaMixerTransactionNew(struct SoftMixerT_ * api, const char*); + +extern void AlsaMixerTransactionDataListDestroy(AlsaMixerTransaction*); + +extern bool AlsaMixerTransactionObjectAdd(AlsaMixerTransaction*, void * object, AlsaTransactionDestructor destructor); + +extern void AlsaMixerTransactionDoCleanup(AlsaMixerTransaction*); + +extern bool AlsaMixerTransactionVerbCreate(AlsaMixerTransaction*); + +extern void AlsaMixerTransactionVerbCB(AFB_ReqT request); + +#endif /* __INC_ALSA_TRANSACTION_H */ |