aboutsummaryrefslogtreecommitdiffstats
path: root/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h
diff options
context:
space:
mode:
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