aboutsummaryrefslogtreecommitdiffstats
path: root/lib/4a-hal-utilities/4a-hal-utilities-data.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/4a-hal-utilities/4a-hal-utilities-data.h')
-rw-r--r--lib/4a-hal-utilities/4a-hal-utilities-data.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/lib/4a-hal-utilities/4a-hal-utilities-data.h b/lib/4a-hal-utilities/4a-hal-utilities-data.h
new file mode 100644
index 0000000..f3de1a6
--- /dev/null
+++ b/lib/4a-hal-utilities/4a-hal-utilities-data.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2018 "IoT.bzh"
+ * Author Jonathan Aillet <jonathan.aillet@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.
+ */
+
+#ifndef _HAL_UTILITIES_DATA_INCLUDE_
+#define _HAL_UTILITIES_DATA_INCLUDE_
+
+#include <stdio.h>
+
+#include <wrap-json.h>
+
+#include <afb/afb-binding.h>
+
+#include <ctl-config.h>
+
+#include "4a-hal-utilities-alsa-data.h"
+
+#define HAL_STREAM_UPDATES_EVENT_NAME "stream-updates"
+
+// Enum for hal status
+enum HalStatus {
+ HAL_STATUS_UNAVAILABLE=0,
+ HAL_STATUS_AVAILABLE=1,
+ HAL_STATUS_READY=2
+};
+
+// Structure to store stream data
+struct InternalHalMixerData {
+ char *verb;
+ char *verbToCall;
+ char *streamCardId;
+ afb_event_t event;
+
+ struct InternalHalMixerData *next;
+};
+
+// Structure to store specific internal hal data
+struct InternalHalData {
+ char *mixerApiName;
+ char *prefix;
+ json_object *halMixerJ;
+
+ struct InternalHalMixerData *streamsData;
+ afb_event_t streamUpdates;
+
+ struct InternalHalMixerData *playbacksData;
+ struct InternalHalMixerData *capturesData;
+
+ struct InternalHalAlsaMapT *alsaMapT;
+
+ afb_api_t apiHandle;
+ CtlConfigT *ctrlConfig;
+};
+
+// Structure to store specific hal (internal or external) data
+struct HalData {
+ char *apiName;
+ enum HalStatus status;
+ char *sndCardPath;
+ int sndCardId;
+ char *info;
+ unsigned int internal;
+
+ char *author;
+ char *version;
+ char *date;
+ // Can be beefed up if needed
+
+ struct InternalHalData *internalHalData; // Can be NULL if external api
+
+ struct HalData *next;
+};
+
+// Structure to store hal manager data
+struct HalMgrData {
+ char *apiName;
+ char *info;
+
+ afb_api_t apiHandle;
+
+ struct HalData *halDataList;
+};
+
+// Internal Hal - Streams data handling functions
+struct InternalHalMixerData *HalUtlAddMixerDataToMixerDataList(struct InternalHalMixerData **mixerDataList);
+int8_t HalUtlRemoveSelectedMixerData(struct InternalHalMixerData **mixerDataList, struct InternalHalMixerData *mixerDataToRemove);
+int64_t HalUtlRemoveAllMixerData(struct InternalHalMixerData **mixerDataList);
+int64_t HalUtlGetNumberOfMixerDataInList(struct InternalHalMixerData **mixerDataList);
+struct InternalHalMixerData *HalUtlSearchMixerDataByProperties(struct InternalHalMixerData **mixerDataList, char *verb, char *verbToCall, char *streamCardId);
+
+// Hal data handling functions
+struct HalData *HalUtlAddHalToHalList(struct HalData **halDataList);
+int8_t HalUtlRemoveSelectedHalFromList(struct HalData **halDataList, struct HalData *halToRemove);
+int64_t HalUtlRemoveAllHalFromList(struct HalData **halDataList);
+int64_t HalUtlGetNumberOfHalInList(struct HalData **halDataList);
+struct HalData *HalUtlSearchHalDataByApiName(struct HalData **halDataList, char *apiName);
+struct HalData *HalUtlSearchReadyHalDataByCardId(struct HalData **halDataList, int cardId);
+
+// Hal Manager data handling functions
+uint8_t HalUtlInitializeHalMgrData(afb_api_t apiHandle, struct HalMgrData *halMgrData, char *apiName, char *info);
+void HalUtlRemoveHalMgrData(struct HalMgrData *halMgrData);
+
+#endif /* _HAL_UTILITIES_DATA_INCLUDE_ */ \ No newline at end of file