diff options
author | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2018-06-08 11:16:26 +0200 |
---|---|---|
committer | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2018-10-08 15:52:51 +0200 |
commit | 7297c6b5d2dc47574e981c76a282e67fcef230c0 (patch) | |
tree | 32235026a9a8a89c8e333c2572ea71b3f739c6f5 /4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h | |
parent | 180b6af527b44dc8d5c4c9f7931e9ccf45d13811 (diff) |
Process and handle alsa controls map
Process and handle alsa controls map by :
Parse and store info from 'halmap' section into a structure.
If the hal is available :
- Test if controls are available (if use of existing control).
- Create new controls (if use of control to create).
- Add a verb for each element of the section.
- Handle call to alsa when a verb request is detected.
- Resgister to event from this device.
- Handle call to action if event on this control is detected.
Change-Id: I246e16e9d02e64a1778f5c78d2458a33bdfb6d7e
Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
Diffstat (limited to '4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h')
-rw-r--r-- | 4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h | 63 |
1 files changed, 61 insertions, 2 deletions
diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h b/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h index bae8291..d2687eb 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h +++ b/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h @@ -21,10 +21,69 @@ #include <stdio.h> #include <stdbool.h> -#define ALSACORE_API "alsacore" -#define ALSACORE_GETINFO_VERB "infoget" +#include <wrap-json.h> + +#include <alsa/asoundlib.h> + +#include <ctl-plugin.h> + +#define ALSACORE_API "alsacore" +#define ALSACORE_SUBSCRIBE_VERB "subscribe" +#define ALSACORE_GETINFO_VERB "infoget" +#define ALSACORE_CTLGET_VERB "ctlget" +#define ALSACORE_CTLSET_VERB "ctlset" +#define ALSACORE_ADDCTL_VERB "addcustomctl" + +struct CtlHalAlsaDBScale { + int min; + int max; + int step; + int mute; +}; + +struct CtlHalAlsaCtlProperties { + snd_ctl_elem_type_t type; + int count; + int minval; + int maxval; + int step; + // TBD JAI : use them + const char **enums; + struct CtlHalAlsaDBScale *dbscale; +}; + +struct CtlHalAlsaCtl { + char *name; + int numid; + int value; + struct CtlHalAlsaCtlProperties alsaCtlProperties; + struct CtlHalAlsaCtlProperties *alsaCtlCreation; +}; + +struct CtlHalAlsaMap { + const char *uid; + char *info; + struct CtlHalAlsaCtl ctl; + json_object *actionJ; + CtlActionT *action; +}; + +struct CtlHalAlsaMapT { + struct CtlHalAlsaMap *ctls; + unsigned int ctlsCount; +}; + +// Alsa control types map from string function +snd_ctl_elem_type_t HalCtlsMapsAlsaTypeToEnum(const char *label); // HAL controllers alsacore calls funtions int HalCtlsGetCardIdByCardPath(AFB_ApiT apiHandle, char *devPath); +int HalCtlsSubscribeToAlsaCardEvent(AFB_ApiT apiHandle, char *cardId); +int HalCtlsGetAlsaCtlInfo(AFB_ApiT apiHandle, char *cardId, struct CtlHalAlsaCtl *currentAlsaCtl); +int HalCtlsSetAlsaCtlValue(AFB_ApiT apiHandle, char *cardId, int ctlId, json_object *valuesJ); +int HalCtlsCreateAlsaCtl(AFB_ApiT apiHandle, char *cardId, struct CtlHalAlsaCtl *alsaCtlToCreate); + +// HAL controllers alsacore controls request callback +void HalCtlsActionOnAlsaCtl(AFB_ReqT request); #endif /* _HAL_CTLS_ALSACORE_LINK_INCLUDE_ */
\ No newline at end of file |