summaryrefslogtreecommitdiffstats
path: root/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h
diff options
context:
space:
mode:
authorJonathan Aillet <jonathan.aillet@iot.bzh>2018-06-08 11:16:26 +0200
committerJonathan Aillet <jonathan.aillet@iot.bzh>2018-10-08 15:52:51 +0200
commit7297c6b5d2dc47574e981c76a282e67fcef230c0 (patch)
tree32235026a9a8a89c8e333c2572ea71b3f739c6f5 /4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h
parent180b6af527b44dc8d5c4c9f7931e9ccf45d13811 (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.h63
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