diff options
Diffstat (limited to '4a-hal')
-rw-r--r-- | 4a-hal/4a-hal-manager/4a-hal-manager-cb.c | 35 | ||||
-rw-r--r-- | 4a-hal/4a-hal-manager/4a-hal-manager.c | 41 | ||||
-rw-r--r-- | 4a-hal/4a-hal-manager/4a-hal-manager.h | 4 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-alsacore-link.c (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c) | 92 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-alsacore-link.h (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h) | 24 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-api-loader.c (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c) | 106 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-api-loader.h (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.h) | 10 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-cb.c (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-cb.c) | 249 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-cb.h (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-cb.h) | 22 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-mixer-link.c (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-mixer-link.c) | 107 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-mixer-link.h (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-mixer-link.h) | 22 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-value-handler.c (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-value-handler.c) | 79 | ||||
-rw-r--r-- | 4a-hal/4a-internals-hal/4a-internals-hal-value-handler.h (renamed from 4a-hal/4a-hal-controllers/4a-hal-controllers-value-handler.h) | 32 | ||||
-rw-r--r-- | 4a-hal/CMakeLists.txt | 14 |
14 files changed, 440 insertions, 397 deletions
diff --git a/4a-hal/4a-hal-manager/4a-hal-manager-cb.c b/4a-hal/4a-hal-manager/4a-hal-manager-cb.c index 77ae52f..32fbb25 100644 --- a/4a-hal/4a-hal-manager/4a-hal-manager-cb.c +++ b/4a-hal/4a-hal-manager/4a-hal-manager-cb.c @@ -62,8 +62,8 @@ void HalMgrLoaded(afb_req_t request) char cardIdString[32]; afb_api_t apiHandle; - struct HalMgrData *HalMgrGlobalData; - struct SpecificHalData *currentHalData; + struct HalMgrData *halMgrData; + struct HalData *currentHalData; json_object *requestJson, *requestAnswer, *apiObject; @@ -72,12 +72,13 @@ void HalMgrLoaded(afb_req_t request) return; } - if(! (HalMgrGlobalData = (struct HalMgrData *) afb_api_get_userdata(apiHandle))) { + halMgrData = (struct HalMgrData *) afb_api_get_userdata(apiHandle); + if(! halMgrData) { afb_req_fail(request, "hal_manager_data", "Can't get hal manager data"); return; } - currentHalData = HalMgrGlobalData->halDataList; + currentHalData = halMgrData->halDataList; if(! currentHalData) { afb_req_success(request, NULL, "No Hal Api loaded"); @@ -136,8 +137,8 @@ void HalMgrLoad(afb_req_t request) char *apiName, *sndCardPath, *info = NULL, *author = NULL, *version = NULL, *date = NULL; afb_api_t apiHandle; - struct HalMgrData *HalMgrGlobalData; - struct SpecificHalData *addedHal; + struct HalMgrData *halMgrData; + struct HalData *addedHal; json_object *requestJson, *apiReceivedMetadata; @@ -146,7 +147,8 @@ void HalMgrLoad(afb_req_t request) return; } - if(! (HalMgrGlobalData = (struct HalMgrData *) afb_api_get_userdata(apiHandle))) { + halMgrData = (struct HalMgrData *) afb_api_get_userdata(apiHandle); + if(! halMgrData) { afb_req_fail(request, "hal_manager_data", "Can't get hal manager data"); return; } @@ -174,7 +176,7 @@ void HalMgrLoad(afb_req_t request) return; } - addedHal = HalUtlAddHalApiToHalList(&HalMgrGlobalData->halDataList); + addedHal = HalUtlAddHalToHalList(&halMgrData->halDataList); addedHal->internal = 0; // TBD JAI : initialize external to unavailable once event from external hal will be handled @@ -207,8 +209,8 @@ void HalMgrUnload(afb_req_t request) char *apiName; afb_api_t apiHandle; - struct HalMgrData *HalMgrGlobalData; - struct SpecificHalData *HalToRemove; + struct HalMgrData *halMgrData; + struct HalData *halToRemove; json_object *requestJson; @@ -217,7 +219,8 @@ void HalMgrUnload(afb_req_t request) return; } - if(! (HalMgrGlobalData = (struct HalMgrData *) afb_api_get_userdata(apiHandle))) { + halMgrData = (struct HalMgrData *) afb_api_get_userdata(apiHandle); + if(! halMgrData) { afb_req_fail(request, "hal_manager_data", "Can't get hal manager data"); return; } @@ -232,18 +235,18 @@ void HalMgrUnload(afb_req_t request) return; } - HalToRemove = HalUtlSearchHalDataByApiName(&HalMgrGlobalData->halDataList, apiName); - if(! HalToRemove) { + halToRemove = HalUtlSearchHalDataByApiName(&halMgrData->halDataList, apiName); + if(! halToRemove) { afb_req_fail(request, "requested_api", "Can't find api to remove"); return; } - if(HalToRemove->internal) { - afb_req_fail(request, "requested_api", "Can't remove an internal controller api"); + if(halToRemove->internal) { + afb_req_fail(request, "requested_api", "Can't remove an internal hal"); return; } - if(HalUtlRemoveSelectedHalFromList(&HalMgrGlobalData->halDataList, HalToRemove)) { + if(HalUtlRemoveSelectedHalFromList(&halMgrData->halDataList, halToRemove)) { afb_req_fail(request, "unregister_error", "Didn't succeed to remove specified api"); return; } diff --git a/4a-hal/4a-hal-manager/4a-hal-manager.c b/4a-hal/4a-hal-manager/4a-hal-manager.c index 017199f..4d2fbf1 100644 --- a/4a-hal/4a-hal-manager/4a-hal-manager.c +++ b/4a-hal/4a-hal-manager/4a-hal-manager.c @@ -25,7 +25,7 @@ #include "4a-hal-utilities-data.h" #include "4a-hal-utilities-verbs-loader.h" -#include "../4a-hal-controllers/4a-hal-controllers-api-loader.h" +#include "../4a-internals-hal/4a-internals-hal-api-loader.h" #include "4a-hal-manager.h" #include "4a-hal-manager-cb.h" @@ -54,11 +54,11 @@ afb_verb_t HalManagerApiStaticVerbs[] = }; /******************************************************************************* - * HAL Manager get 'SpecificHalData' linked list * + * HAL Manager get 'HalData' linked list * from HAL list function * ******************************************************************************/ -struct SpecificHalData **HalMngGetHalDataList(void) +struct HalData **HalMngGetHalDataList(void) { return &localHalMgrGlobalData.halDataList; } @@ -69,8 +69,8 @@ struct SpecificHalData **HalMngGetHalDataList(void) static int HalMgrInitApi(afb_api_t apiHandle) { - struct SpecificHalData *currentCtlHalData; - struct HalMgrData *HalMgrGlobalData; + struct HalData *currentHalData; + struct HalMgrData *halMgrData; if(! apiHandle) return -1; @@ -79,21 +79,22 @@ static int HalMgrInitApi(afb_api_t apiHandle) AFB_default = apiHandle; // Retrieve section config from api handle - if(! (HalMgrGlobalData = (struct HalMgrData *) afb_api_get_userdata(apiHandle))) + halMgrData = (struct HalMgrData *) afb_api_get_userdata(apiHandle); + if(! halMgrData) return -2; - if(HalUtlInitializeHalMgrData(apiHandle, HalMgrGlobalData, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO)) + if(HalUtlInitializeHalMgrData(apiHandle, halMgrData, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO)) return -3; - currentCtlHalData = HalMgrGlobalData->halDataList; + currentHalData = halMgrData->halDataList; - while(currentCtlHalData) { - if(! currentCtlHalData->apiName) + while(currentHalData) { + if(! currentHalData->apiName) return -4; - else if(afb_api_require_api(apiHandle, currentCtlHalData->apiName, 1)) + else if(afb_api_require_api(apiHandle, currentHalData->apiName, 1)) return -5; - currentCtlHalData = currentCtlHalData->next; + currentHalData = currentHalData->next; } return 0; @@ -101,15 +102,15 @@ static int HalMgrInitApi(afb_api_t apiHandle) static int HalMgrLoadApi(void *cbdata, afb_api_t apiHandle) { - struct HalMgrData *HalMgrGlobalData; + struct HalMgrData *halMgrData; if(! cbdata || ! apiHandle) return -1; - HalMgrGlobalData = (struct HalMgrData *) cbdata; + halMgrData = (struct HalMgrData *) cbdata; // Save closure as api's data context - afb_api_set_userdata(apiHandle, HalMgrGlobalData); + afb_api_set_userdata(apiHandle, halMgrData); // Add static controls verbs if(HalUtlLoadVerbs(apiHandle, HalManagerApiStaticVerbs)) { @@ -128,13 +129,13 @@ static int HalMgrLoadApi(void *cbdata, afb_api_t apiHandle) return 0; } -int HalMgrCreateApi(afb_api_t apiHandle, struct HalMgrData *HalMgrGlobalData) +int HalMgrCreateApi(afb_api_t apiHandle, struct HalMgrData *halMgrData) { - if(! apiHandle || ! HalMgrGlobalData) + if(! apiHandle || ! halMgrData) return -1; // Create one API - return afb_api_new_api(apiHandle, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO, 1, HalMgrLoadApi, HalMgrGlobalData) ? 0 : -1; + return afb_api_new_api(apiHandle, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO, 1, HalMgrLoadApi, halMgrData) ? 0 : -1; } /******************************************************************************* @@ -158,8 +159,8 @@ int afbBindingEntry(afb_api_t apiHandle) if(rc < 0) status--; - // Load Hal-Ctls using Api v3 - rc = HalCtlsCreateAllApi(apiHandle, &localHalMgrGlobalData); + // Load internals Hal using Api v3 + rc = InternalHalCreateAllApi(apiHandle, &localHalMgrGlobalData); if(rc < 0) status -= rc; diff --git a/4a-hal/4a-hal-manager/4a-hal-manager.h b/4a-hal/4a-hal-manager/4a-hal-manager.h index b9eabba..4a53bdd 100644 --- a/4a-hal/4a-hal-manager/4a-hal-manager.h +++ b/4a-hal/4a-hal-manager/4a-hal-manager.h @@ -23,7 +23,7 @@ #define HAL_MANAGER_API_NAME "4a-hal-manager" #define HAL_MANAGER_API_INFO "Manager for 4A HAL APIs" -// HAL Manager get 'SpecificHalData' linked list -struct SpecificHalData **HalMngGetHalDataList(void); +// HAL Manager get 'HalData' linked list +struct HalData **HalMngGetHalDataList(void); #endif /* _HALMGR_BINDING_INCLUDE_ */
\ No newline at end of file diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c b/4a-hal/4a-internals-hal/4a-internals-hal-alsacore-link.c index 214fca9..d092ddf 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.c +++ b/4a-hal/4a-internals-hal/4a-internals-hal-alsacore-link.c @@ -31,8 +31,8 @@ #include "4a-hal-utilities-alsa-data.h" #include "4a-hal-utilities-data.h" -#include "4a-hal-controllers-alsacore-link.h" -#include "4a-hal-controllers-value-handler.h" +#include "4a-internals-hal-alsacore-link.h" +#include "4a-internals-hal-value-handler.h" /******************************************************************************* * Map to alsa control types * @@ -52,7 +52,7 @@ static const char *const snd_ctl_elem_type_names[] = { * Alsa control types map from string function * ******************************************************************************/ -snd_ctl_elem_type_t HalCtlsMapsAlsaTypeToEnum(const char *label) +snd_ctl_elem_type_t InternalHalMapsAlsaTypeToEnum(const char *label) { int idx; static int length = sizeof(snd_ctl_elem_type_names) / sizeof(char *); @@ -66,10 +66,10 @@ snd_ctl_elem_type_t HalCtlsMapsAlsaTypeToEnum(const char *label) } /******************************************************************************* - * HAL controllers alsacore calls funtions * + * Internals HAL - Alsacore calls funtions * ******************************************************************************/ -int HalCtlsGetCardIdByCardPath(afb_api_t apiHandle, char *devPath) +int InternalHalGetCardIdByCardPath(afb_api_t apiHandle, char *devPath) { int errorToReturn, cardId; @@ -135,7 +135,7 @@ int HalCtlsGetCardIdByCardPath(afb_api_t apiHandle, char *devPath) return errorToReturn; } -int HalCtlsSubscribeToAlsaCardEvent(afb_api_t apiHandle, char *cardId) +int InternalHalSubscribeToAlsaCardEvent(afb_api_t apiHandle, char *cardId) { int err = 0; @@ -169,7 +169,7 @@ int HalCtlsSubscribeToAlsaCardEvent(afb_api_t apiHandle, char *cardId) return err; } -int HalCtlsGetAlsaCtlInfo(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCtl *currentAlsaCtl, json_object **returnedDataJ) +int InternalHalGetAlsaCtlInfo(afb_api_t apiHandle, char *cardId, struct InternalHalAlsaCtl *currentAlsaCtl, json_object **returnedDataJ) { int err = 0; @@ -247,13 +247,14 @@ int HalCtlsGetAlsaCtlInfo(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCt return err; } -int HalCtlsUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCtl *currentAlsaCtl) +int InternalHalUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct InternalHalAlsaCtl *currentAlsaCtl) { int err = 0; json_object *returnedDataJ; - if((err = HalCtlsGetAlsaCtlInfo(apiHandle, cardId, currentAlsaCtl, &returnedDataJ))) { + err = InternalHalGetAlsaCtlInfo(apiHandle, cardId, currentAlsaCtl, &returnedDataJ); + if(err) { return err; } // TBD JAI : get dblinear/dbminmax/... values @@ -280,7 +281,7 @@ int HalCtlsUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct Ctl return err; } -int HalCtlsGetAlsaCtlValues(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCtl *currentAlsaCtl, json_object **returnedValuesJ) +int InternalHalGetAlsaCtlValues(afb_api_t apiHandle, char *cardId, struct InternalHalAlsaCtl *currentAlsaCtl, json_object **returnedValuesJ) { int err = 0; @@ -288,7 +289,8 @@ int HalCtlsGetAlsaCtlValues(afb_api_t apiHandle, char *cardId, struct CtlHalAlsa *returnedValuesJ = NULL; - if((err = HalCtlsGetAlsaCtlInfo(apiHandle, cardId, currentAlsaCtl, &returnedDataJ))) { + err = InternalHalGetAlsaCtlInfo(apiHandle, cardId, currentAlsaCtl, &returnedDataJ); + if(err) { return err; } else if(wrap_json_unpack(returnedDataJ, "{s:o}", "val", &returnedValuesArrayJ)) { @@ -319,7 +321,7 @@ int HalCtlsGetAlsaCtlValues(afb_api_t apiHandle, char *cardId, struct CtlHalAlsa return err; } -int HalCtlsSetAlsaCtlValue(afb_api_t apiHandle, char *cardId, int ctlId, json_object *valuesJ) +int InternalHalSetAlsaCtlValue(afb_api_t apiHandle, char *cardId, int ctlId, json_object *valuesJ) { int err = 0; @@ -374,7 +376,7 @@ int HalCtlsSetAlsaCtlValue(afb_api_t apiHandle, char *cardId, int ctlId, json_ob return err; } -int HalCtlsCreateAlsaCtl(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCtl *alsaCtlToCreate) +int InternalHalCreateAlsaCtl(afb_api_t apiHandle, char *cardId, struct InternalHalAlsaCtl *alsaCtlToCreate) { int err = 0; @@ -456,10 +458,10 @@ int HalCtlsCreateAlsaCtl(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCtl } /******************************************************************************* - * HAL controllers alsacore controls request callback * + * Internals HAL - Alsacore controls request callback * ******************************************************************************/ -void HalCtlsActionOnAlsaCtl(afb_req_t request) +void InternalHalActionOnAlsaCtl(afb_req_t request) { char cardIdString[6]; @@ -467,8 +469,8 @@ void HalCtlsActionOnAlsaCtl(afb_req_t request) CtlConfigT *ctrlConfig; - struct SpecificHalData *currentCtlHalData; - struct CtlHalAlsaMap *currentAlsaCtl; + struct HalData *currentHalData; + struct InternalHalAlsaMap *currentAlsaCtl; json_object *requestJson, *valueJ, @@ -489,17 +491,19 @@ void HalCtlsActionOnAlsaCtl(afb_req_t request) return; } - if(! (currentCtlHalData = (struct SpecificHalData *) getExternalData(ctrlConfig))) { + currentHalData = (struct HalData *) getExternalData(ctrlConfig); + if(! currentHalData) { afb_req_fail(request, "hal_controller_data", "Can't get current hal controller data"); return; } - if(currentCtlHalData->status == HAL_STATUS_UNAVAILABLE) { + if(currentHalData->status == HAL_STATUS_UNAVAILABLE) { afb_req_fail(request, "hal_unavailable", "Seems that hal is not available"); return; } - if(! (currentAlsaCtl = (struct CtlHalAlsaMap *) afb_req_get_vcbdata(request))) { + currentAlsaCtl = (struct InternalHalAlsaMap *) afb_req_get_vcbdata(request); + if(! currentAlsaCtl) { afb_req_fail(request, "alsa_control_data", "Can't get current alsa control data"); return; } @@ -509,17 +513,17 @@ void HalCtlsActionOnAlsaCtl(afb_req_t request) return; } - snprintf(cardIdString, 6, "hw:%i", currentCtlHalData->sndCardId); + snprintf(cardIdString, 6, "hw:%i", currentHalData->sndCardId); - if(HalCtlsGetAlsaCtlValues(apiHandle, cardIdString, ¤tAlsaCtl->ctl, &previousControlValuesJ)) { + if(InternalHalGetAlsaCtlValues(apiHandle, cardIdString, ¤tAlsaCtl->ctl, &previousControlValuesJ)) { afb_req_fail_f(request, "previous_values", "Error when trying to get unchanged alsa control values"); return; } - else if(HalCtlsConvertJsonValues(apiHandle, - ¤tAlsaCtl->ctl.alsaCtlProperties, - previousControlValuesJ, - &normalizedPreviousControlValuesJ, - CONVERSION_ALSACORE_TO_NORMALIZED)) { + else if(InternalHalConvertJsonValues(apiHandle, + ¤tAlsaCtl->ctl.alsaCtlProperties, + previousControlValuesJ, + &normalizedPreviousControlValuesJ, + CONVERSION_ALSACORE_TO_NORMALIZED)) { afb_req_fail_f(request, "request_json", "Error when trying to normalize unchanged alsa control values json '%s'", @@ -554,11 +558,11 @@ void HalCtlsActionOnAlsaCtl(afb_req_t request) } if((! json_object_is_type(valueJ, json_type_string)) && - HalCtlsConvertJsonValues(apiHandle, - ¤tAlsaCtl->ctl.alsaCtlProperties, - valueJ, - &convertedJ, - CONVERSION_NORMALIZED_TO_ALSACORE)) { + InternalHalConvertJsonValues(apiHandle, + ¤tAlsaCtl->ctl.alsaCtlProperties, + valueJ, + &convertedJ, + CONVERSION_NORMALIZED_TO_ALSACORE)) { afb_req_fail_f(request, "request_json", "Error when trying to convert request values '%s'", @@ -568,11 +572,11 @@ void HalCtlsActionOnAlsaCtl(afb_req_t request) return; } else if(json_object_is_type(valueJ, json_type_string) && - HalCtlsChangePreviousValuesUsingJson(apiHandle, - ¤tAlsaCtl->ctl.alsaCtlProperties, - valueJ, - previousControlValuesJ, - &convertedJ)) { + InternalHalChangePreviousValuesUsingJson(apiHandle, + ¤tAlsaCtl->ctl.alsaCtlProperties, + valueJ, + previousControlValuesJ, + &convertedJ)) { afb_req_fail_f(request, "previous_values", "Error when trying to generate changed alsa control values (values : '%s', previous :'%s')", @@ -585,7 +589,7 @@ void HalCtlsActionOnAlsaCtl(afb_req_t request) json_object_put(previousControlValuesJ); - if(HalCtlsSetAlsaCtlValue(apiHandle, cardIdString, currentAlsaCtl->ctl.numid, convertedJ)) { + if(InternalHalSetAlsaCtlValue(apiHandle, cardIdString, currentAlsaCtl->ctl.numid, convertedJ)) { afb_req_fail_f(request, "alsa_control_call_error", "Error while trying to set value on alsa control %i, device '%s', converted message '%s'", @@ -599,16 +603,16 @@ void HalCtlsActionOnAlsaCtl(afb_req_t request) json_object_put(convertedJ); - if(HalCtlsGetAlsaCtlValues(apiHandle, cardIdString, ¤tAlsaCtl->ctl, &appliedControlValuesJ)) { + if(InternalHalGetAlsaCtlValues(apiHandle, cardIdString, ¤tAlsaCtl->ctl, &appliedControlValuesJ)) { afb_req_fail_f(request, "applied_values", "Error when trying to get applied alsa control values"); json_object_put(normalizedPreviousControlValuesJ); return; } - else if(HalCtlsConvertJsonValues(apiHandle, - ¤tAlsaCtl->ctl.alsaCtlProperties, - appliedControlValuesJ, - &normalizedAppliedControlValuesJ, - CONVERSION_ALSACORE_TO_NORMALIZED)) { + else if(InternalHalConvertJsonValues(apiHandle, + ¤tAlsaCtl->ctl.alsaCtlProperties, + appliedControlValuesJ, + &normalizedAppliedControlValuesJ, + CONVERSION_ALSACORE_TO_NORMALIZED)) { afb_req_fail_f(request, "request_json", "Error when trying to normalize applied values json '%s'", diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h b/4a-hal/4a-internals-hal/4a-internals-hal-alsacore-link.h index 5081b49..065e017 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-alsacore-link.h +++ b/4a-hal/4a-internals-hal/4a-internals-hal-alsacore-link.h @@ -15,8 +15,8 @@ * limitations under the License. */ -#ifndef _HAL_CTLS_ALSACORE_LINK_INCLUDE_ -#define _HAL_CTLS_ALSACORE_LINK_INCLUDE_ +#ifndef _INTERNALS_HAL_ALSACORE_LINK_INCLUDE_ +#define _INTERNALS_HAL_ALSACORE_LINK_INCLUDE_ #include <stdio.h> @@ -38,16 +38,16 @@ #define ALSACORE_ADDCTL_VERB "addcustomctl" // Alsa control types map from string function -snd_ctl_elem_type_t HalCtlsMapsAlsaTypeToEnum(const char *label); +snd_ctl_elem_type_t InternalHalMapsAlsaTypeToEnum(const char *label); -// HAL controllers alsacore calls funtions -int HalCtlsGetCardIdByCardPath(afb_api_t apiHandle, char *devPath); -int HalCtlsSubscribeToAlsaCardEvent(afb_api_t apiHandle, char *cardId); -int HalCtlsUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCtl *currentAlsaCtl); -int HalCtlsSetAlsaCtlValue(afb_api_t apiHandle, char *cardId, int ctlId, json_object *valuesJ); -int HalCtlsCreateAlsaCtl(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaCtl *alsaCtlToCreate); +// Internals HAL alsacore calls funtions +int InternalHalGetCardIdByCardPath(afb_api_t apiHandle, char *devPath); +int InternalHalSubscribeToAlsaCardEvent(afb_api_t apiHandle, char *cardId); +int InternalHalUpdateAlsaCtlProperties(afb_api_t apiHandle, char *cardId, struct InternalHalAlsaCtl *currentAlsaCtl); +int InternalHalSetAlsaCtlValue(afb_api_t apiHandle, char *cardId, int ctlId, json_object *valuesJ); +int InternalHalCreateAlsaCtl(afb_api_t apiHandle, char *cardId, struct InternalHalAlsaCtl *alsaCtlToCreate); -// HAL controllers alsacore controls request callback -void HalCtlsActionOnAlsaCtl(afb_req_t request); +// Internals HAL alsacore controls request callback +void InternalHalActionOnAlsaCtl(afb_req_t request); -#endif /* _HAL_CTLS_ALSACORE_LINK_INCLUDE_ */
\ No newline at end of file +#endif /* _INTERNALS_HAL_ALSACORE_LINK_INCLUDE_ */
\ No newline at end of file diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c b/4a-hal/4a-internals-hal/4a-internals-hal-api-loader.c index a6f6895..94891b8 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c +++ b/4a-hal/4a-internals-hal/4a-internals-hal-api-loader.c @@ -28,28 +28,27 @@ #include <ctl-config.h> #include "4a-hal-utilities-verbs-loader.h" - -#include "4a-hal-controllers-api-loader.h" -#include "4a-hal-controllers-alsacore-link.h" -#include "4a-hal-controllers-cb.h" -#include "4a-hal-controllers-mixer-link.h" +#include "4a-internals-hal-api-loader.h" +#include "4a-internals-hal-alsacore-link.h" +#include "4a-internals-hal-cb.h" +#include "4a-internals-hal-mixer-link.h" // Default api to print log when apihandle not available afb_api_t AFB_default; /******************************************************************************* - * Json parsing functions using app controller * + * Json parsing functions using controller * ******************************************************************************/ // Config Section definition static CtlSectionT ctrlSectionsDefault[] = { - { .key = "resources", .loadCB = PluginConfig }, - { .key = "halmixer", .loadCB = HalCtlsHalMixerConfig }, - { .key = "onload", .loadCB = OnloadConfig }, - { .key = "controls", .loadCB = ControlConfig }, - { .key = "events", .loadCB = EventConfig }, - { .key = "halmap", .loadCB = HalCtlsHalMapConfig }, + { .key = "resources", .loadCB = PluginConfig }, + { .key = "halmixer", .loadCB = InternalHalHalMixerConfig }, + { .key = "onload", .loadCB = OnloadConfig }, + { .key = "controls", .loadCB = ControlConfig }, + { .key = "events", .loadCB = EventConfig }, + { .key = "halmap", .loadCB = InternalHalHalMapConfig }, { .key = NULL } }; @@ -58,23 +57,23 @@ static CtlSectionT ctrlSectionsDefault[] = ******************************************************************************/ // Every HAL export the same API & Interface Mapping from SndCard to AudioLogic is done through alsaHalSndCardT -static afb_verb_t CtlHalApiStaticVerbs[] = +static afb_verb_t InternalHalApiStaticVerbs[] = { /* VERB'S NAME FUNCTION TO CALL SHORT DESCRIPTION */ - { .verb = "info", .callback = HalCtlsInfo, .info = "List available streams/playbacks/captures/controls for this api" }, - { .verb = "subscribe", .callback = HalCtlsSubscribe, .info = "Subscribe to event(s) for values changes (streams/playbacks/captures/controls) for this api" }, - { .verb = "unsubscribe", .callback = HalCtlsUnsubscribe, .info = "Unsubscribe to event(s) for values changes (streams/playbacks/captures/controls) for this api" }, + { .verb = "info", .callback = InternalHalInfo, .info = "List available streams/playbacks/captures/controls for this api" }, + { .verb = "subscribe", .callback = InternalHalSubscribe, .info = "Subscribe to event(s) for values changes (streams/playbacks/captures/controls) for this api" }, + { .verb = "unsubscribe", .callback = InternalHalUnsubscribe, .info = "Unsubscribe to event(s) for values changes (streams/playbacks/captures/controls) for this api" }, { .verb = NULL } // Marker for end of the array }; /******************************************************************************* - * Dynamic API functions for app controller * + * Dynamic API functions for internals hal * ******************************************************************************/ -static int HalCtlsInitOneApi(afb_api_t apiHandle) +static int InternalHalInitOneApi(afb_api_t apiHandle) { CtlConfigT *ctrlConfig; - struct SpecificHalData *currentCtlHalData; + struct HalData *currentHalData; if(! apiHandle) return -1; @@ -86,39 +85,40 @@ static int HalCtlsInitOneApi(afb_api_t apiHandle) if(! (ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle))) return -2; - currentCtlHalData = (struct SpecificHalData *) getExternalData(ctrlConfig); - if(! currentCtlHalData) + currentHalData = (struct HalData *) getExternalData(ctrlConfig); + if(! currentHalData) return -3; - // Fill SpecificHalDatadata structure - currentCtlHalData->internal = 1; + // Fill HalDatadata structure + currentHalData->internal = 1; - currentCtlHalData->sndCardPath = (char *) ctrlConfig->uid; - currentCtlHalData->info = (char *) ctrlConfig->info; + currentHalData->sndCardPath = (char *) ctrlConfig->uid; + currentHalData->info = (char *) ctrlConfig->info; - currentCtlHalData->author = (char *) ctrlConfig->author; - currentCtlHalData->version = (char *) ctrlConfig->version; - currentCtlHalData->date = (char *) ctrlConfig->date; + currentHalData->author = (char *) ctrlConfig->author; + currentHalData->version = (char *) ctrlConfig->version; + currentHalData->date = (char *) ctrlConfig->date; - currentCtlHalData->ctlHalSpecificData->apiHandle = apiHandle; - currentCtlHalData->ctlHalSpecificData->ctrlConfig = ctrlConfig; + currentHalData->internalHalData->apiHandle = apiHandle; + currentHalData->internalHalData->ctrlConfig = ctrlConfig; - currentCtlHalData->sndCardId = HalCtlsGetCardIdByCardPath(apiHandle, currentCtlHalData->sndCardPath); + currentHalData->sndCardId = InternalHalGetCardIdByCardPath(apiHandle, currentHalData->sndCardPath); - if(! (currentCtlHalData->ctlHalSpecificData->streamUpdates = afb_api_make_event(apiHandle, HAL_STREAM_UPDATES_EVENT_NAME))) + currentHalData->internalHalData->streamUpdates = afb_api_make_event(apiHandle, HAL_STREAM_UPDATES_EVENT_NAME); + if(! currentHalData->internalHalData->streamUpdates) return -4; - if(currentCtlHalData->sndCardId < 0) - currentCtlHalData->status = HAL_STATUS_UNAVAILABLE; + if(currentHalData->sndCardId < 0) + currentHalData->status = HAL_STATUS_UNAVAILABLE; else - currentCtlHalData->status = HAL_STATUS_AVAILABLE; + currentHalData->status = HAL_STATUS_AVAILABLE; // TBD JAI: handle refresh of hal status for dynamic card (/dev/by-id) return CtlConfigExec(apiHandle, ctrlConfig); } -static int HalCtlsLoadOneApi(void *cbdata, afb_api_t apiHandle) +static int InternalHalLoadOneApi(void *cbdata, afb_api_t apiHandle) { int err; CtlConfigT *ctrlConfig; @@ -133,7 +133,7 @@ static int HalCtlsLoadOneApi(void *cbdata, afb_api_t apiHandle) afb_api_set_userdata(apiHandle, ctrlConfig); // Add static controls verbs - if(HalUtlLoadVerbs(apiHandle, CtlHalApiStaticVerbs)) { + if(HalUtlLoadVerbs(apiHandle, InternalHalApiStaticVerbs)) { AFB_API_ERROR(apiHandle, "Load Section : fail to register static V2 verbs"); return 1; } @@ -146,20 +146,20 @@ static int HalCtlsLoadOneApi(void *cbdata, afb_api_t apiHandle) return err; // Declare an event manager for this Api - afb_api_on_event(apiHandle, HalCtlsDispatchApiEvent); + afb_api_on_event(apiHandle, InternalHalDispatchApiEvent); // Init Api function (does not receive user closure ???) - afb_api_on_init(apiHandle, HalCtlsInitOneApi); + afb_api_on_init(apiHandle, InternalHalInitOneApi); return 0; } -int HalCtlsCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *HalMgrGlobalData) +int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *halMgrData) { CtlConfigT *ctrlConfig; - struct SpecificHalData *currentCtlHalData; + struct HalData *currentHalData; - if(! apiHandle || ! path || ! HalMgrGlobalData) + if(! apiHandle || ! path || ! halMgrData) return -1; // Create one Api per file @@ -175,26 +175,26 @@ int HalCtlsCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *HalMgrG } // Allocation of current hal controller data - currentCtlHalData = HalUtlAddHalApiToHalList(&HalMgrGlobalData->halDataList); - if(! currentCtlHalData) + currentHalData = HalUtlAddHalToHalList(&halMgrData->halDataList); + if(! currentHalData) return -4; - currentCtlHalData->apiName = (char *) ctrlConfig->api; + currentHalData->apiName = (char *) ctrlConfig->api; - // Stores current hal controller data in controller config - setExternalData(ctrlConfig, (void *) currentCtlHalData); + // Stores hal data in controller config + setExternalData(ctrlConfig, (void *) currentHalData); - // Allocation of the structure that will be used to store specific hal controller data - currentCtlHalData->ctlHalSpecificData = calloc(1, sizeof(struct CtlHalSpecificData)); + // Allocation of the structure that will be used to store internal hal data + currentHalData->internalHalData = calloc(1, sizeof(struct InternalHalData)); // Create one API - if(! afb_api_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, HalCtlsLoadOneApi, ctrlConfig)) + if(! afb_api_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, InternalHalLoadOneApi, ctrlConfig)) return -5; return 0; } -int HalCtlsCreateAllApi(afb_api_t apiHandle, struct HalMgrData *HalMgrGlobalData) +int InternalHalCreateAllApi(afb_api_t apiHandle, struct HalMgrData *halMgrData) { int index, status = 0; char *dirList, *fileName, *fullPath; @@ -204,7 +204,7 @@ int HalCtlsCreateAllApi(afb_api_t apiHandle, struct HalMgrData *HalMgrGlobalData json_object *configJ, *entryJ; - if(! apiHandle || ! HalMgrGlobalData) + if(! apiHandle || ! halMgrData) return -1; // Hugely hack to make all V2 AFB_DEBUG to work in fileutils @@ -235,7 +235,7 @@ int HalCtlsCreateAllApi(afb_api_t apiHandle, struct HalMgrData *HalMgrGlobalData strncat(filePath, "/", sizeof(filePath) - 1); strncat(filePath, fileName, sizeof(filePath) - 1); - if(HalCtlsCreateApi(apiHandle, filePath, HalMgrGlobalData) < 0) + if(InternalHalCreateApi(apiHandle, filePath, halMgrData) < 0) status--; } diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.h b/4a-hal/4a-internals-hal/4a-internals-hal-api-loader.h index dd33108..fa878e2 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.h +++ b/4a-hal/4a-internals-hal/4a-internals-hal-api-loader.h @@ -15,8 +15,8 @@ * limitations under the License. */ -#ifndef _HAL_CTLS_API_LOADER_INCLUDE_ -#define _HAL_CTLS_API_LOADER_INCLUDE_ +#ifndef _INTERNALS_HAL_API_LOADER_INCLUDE_ +#define _INTERNALS_HAL_API_LOADER_INCLUDE_ #include <stdio.h> @@ -25,7 +25,7 @@ #include "4a-hal-utilities-data.h" // Verbs that can be use to create api -int HalCtlsCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *HalMgrGlobalData); -int HalCtlsCreateAllApi(afb_api_t apiHandle, struct HalMgrData *HalMgrGlobalData); +int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *halMgrData); +int InternalHalCreateAllApi(afb_api_t apiHandle, struct HalMgrData *halMgrData); -#endif /* _HAL_CTLS_API_LOADER_INCLUDE_ */
\ No newline at end of file +#endif /* _INTERNALS_HAL_API_LOADER_INCLUDE_ */
\ No newline at end of file diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-cb.c b/4a-hal/4a-internals-hal/4a-internals-hal-cb.c index c38b057..0102d8d 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-cb.c +++ b/4a-hal/4a-internals-hal/4a-internals-hal-cb.c @@ -26,36 +26,37 @@ #include "4a-hal-utilities-data.h" -#include "4a-hal-controllers-cb.h" -#include "4a-hal-controllers-alsacore-link.h" -#include "4a-hal-controllers-mixer-link.h" -#include "4a-hal-controllers-value-handler.h" +#include "4a-internals-hal-cb.h" +#include "4a-internals-hal-alsacore-link.h" +#include "4a-internals-hal-mixer-link.h" +#include "4a-internals-hal-value-handler.h" /******************************************************************************* - * HAL controller event handler function * + * Internals HAL Event handler function * ******************************************************************************/ -void HalCtlsDispatchApiEvent(afb_api_t apiHandle, const char *evtLabel, json_object *eventJ) +void InternalHalDispatchApiEvent(afb_api_t apiHandle, const char *evtLabel, json_object *eventJ) { int numid, idx = 0, cardidx; CtlConfigT *ctrlConfig; CtlSourceT source; - struct SpecificHalData *currentHalData; - struct CtlHalAlsaMapT *currentHalAlsaCtlsT; + struct HalData *currentHalData; + struct InternalHalAlsaMapT *currentHalAlsaCtlsT; json_object *valuesJ, *normalizedValuesJ; AFB_API_DEBUG(apiHandle, "Evtname=%s [msg=%s]", evtLabel, json_object_get_string(eventJ)); if(! (ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle))) { - AFB_API_ERROR(apiHandle, "Can't get current hal controller config"); + AFB_API_ERROR(apiHandle, "Can't get current internal hal controller config"); return; } - if(! (currentHalData = (struct SpecificHalData *) getExternalData(ctrlConfig))) { - AFB_API_WARNING(apiHandle, "Can't get current hal controller data"); + currentHalData = (struct HalData *) getExternalData(ctrlConfig); + if(! currentHalData) { + AFB_API_WARNING(apiHandle, "Can't get current internal hal controller data"); return; } @@ -71,7 +72,7 @@ void HalCtlsDispatchApiEvent(afb_api_t apiHandle, const char *evtLabel, json_obj return; } - currentHalAlsaCtlsT = currentHalData->ctlHalSpecificData->ctlHalAlsaMapT; + currentHalAlsaCtlsT = currentHalData->internalHalData->alsaMapT; // Search for corresponding numid in halCtls, if found, launch callback (if available) for(idx = 0; idx < currentHalAlsaCtlsT->ctlsCount; idx++) { @@ -90,11 +91,11 @@ void HalCtlsDispatchApiEvent(afb_api_t apiHandle, const char *evtLabel, json_obj } if((! currentHalAlsaCtlsT->ctls[idx].alsaControlEvent) || - HalCtlsConvertJsonValues(apiHandle, - ¤tHalAlsaCtlsT->ctls[idx].ctl.alsaCtlProperties, - valuesJ, - &normalizedValuesJ, - CONVERSION_ALSACORE_TO_NORMALIZED) || + InternalHalConvertJsonValues(apiHandle, + ¤tHalAlsaCtlsT->ctls[idx].ctl.alsaCtlProperties, + valuesJ, + &normalizedValuesJ, + CONVERSION_ALSACORE_TO_NORMALIZED) || (afb_event_push(currentHalAlsaCtlsT->ctls[idx].alsaControlEvent, normalizedValuesJ) < 0)) { AFB_API_ERROR(apiHandle, "Couldn't generate an event for known halmap %s (alsa control id %i)", @@ -124,15 +125,15 @@ void HalCtlsDispatchApiEvent(afb_api_t apiHandle, const char *evtLabel, json_obj } /******************************************************************************* - * HAL controllers sections parsing functions * + * Internals HAL - 'halmixer' section parsing/handling functions * ******************************************************************************/ -int HalCtlsHalMixerConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *MixerJ) +int InternalHalHalMixerConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *MixerJ) { int err = 0; CtlConfigT *ctrlConfig; - struct SpecificHalData *currentHalData; + struct HalData *currentHalData; if(! apiHandle || ! section) return -1; @@ -140,30 +141,37 @@ int HalCtlsHalMixerConfig(afb_api_t apiHandle, CtlSectionT *section, json_object if(! (ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle))) return -2; - if(! (currentHalData = (struct SpecificHalData *) getExternalData(ctrlConfig))) + currentHalData = (struct HalData *) getExternalData(ctrlConfig); + if(! currentHalData) return -3; if(MixerJ) { if(json_object_is_type(MixerJ, json_type_object)) - currentHalData->ctlHalSpecificData->halMixerJ = MixerJ; + currentHalData->internalHalData->halMixerJ = MixerJ; else return -4; - if(wrap_json_unpack(MixerJ, "{s:s}", "mixerapi", ¤tHalData->ctlHalSpecificData->mixerApiName)) + if(wrap_json_unpack(MixerJ, "{s:s}", "mixerapi", ¤tHalData->internalHalData->mixerApiName)) return -5; - wrap_json_unpack(MixerJ, "{s?:s}", "prefix", ¤tHalData->ctlHalSpecificData->prefix); + wrap_json_unpack(MixerJ, "{s?:s}", "prefix", ¤tHalData->internalHalData->prefix); } - else if(currentHalData->status == HAL_STATUS_AVAILABLE && - (err = HalCtlsAttachToMixer(apiHandle))) { - AFB_API_ERROR(apiHandle, "%s: Error %i while attaching to mixer", __func__, err); - return -6; + else if(currentHalData->status == HAL_STATUS_AVAILABLE) { + err = InternalHalAttachToMixer(apiHandle); + if(err) { + AFB_API_ERROR(apiHandle, "Error %i while attaching to mixer", err); + return -6; + } } return 0; } -int HalCtlsProcessOneHalMapObject(afb_api_t apiHandle, struct CtlHalAlsaMap *alsaMap, json_object *AlsaMapJ) +/******************************************************************************* + * Internals HAL - 'halmap' section parsing/handling functions * + ******************************************************************************/ + +int InternalHalProcessOneHalMapObject(afb_api_t apiHandle, struct InternalHalAlsaMap *alsaMap, json_object *AlsaMapJ) { char *action = NULL, *typename = NULL; @@ -203,9 +211,12 @@ int HalCtlsProcessOneHalMapObject(afb_api_t apiHandle, struct CtlHalAlsaMap *als return -3; } - if(typename && (alsaMap->ctl.alsaCtlCreation->type = HalCtlsMapsAlsaTypeToEnum(typename)) == SND_CTL_ELEM_TYPE_NONE) { - AFB_API_ERROR(apiHandle, "Couldn't get alsa type from string %s in:\n-- %s", typename, json_object_get_string(alsaJ)); - return -4; + if(typename) { + alsaMap->ctl.alsaCtlCreation->type = InternalHalMapsAlsaTypeToEnum(typename); + if(alsaMap->ctl.alsaCtlCreation->type == SND_CTL_ELEM_TYPE_NONE) { + AFB_API_ERROR(apiHandle, "Couldn't get alsa type from string %s in:\n-- %s", typename, json_object_get_string(alsaJ)); + return -4; + } } if(! alsaMap->ctl.name) @@ -232,7 +243,7 @@ int HalCtlsProcessOneHalMapObject(afb_api_t apiHandle, struct CtlHalAlsaMap *als return 0; } -int HalCtlsHandleOneHalMapObject(afb_api_t apiHandle, char *cardId, struct CtlHalAlsaMap *alsaMap) +int InternalHalHandleOneHalMapObject(afb_api_t apiHandle, char *cardId, struct InternalHalAlsaMap *alsaMap) { int err; @@ -246,12 +257,12 @@ int HalCtlsHandleOneHalMapObject(afb_api_t apiHandle, char *cardId, struct CtlHa } if(alsaMap->ctl.alsaCtlCreation) { - if(HalCtlsCreateAlsaCtl(apiHandle, cardId, &alsaMap->ctl)) { + if(InternalHalCreateAlsaCtl(apiHandle, cardId, &alsaMap->ctl)) { AFB_API_ERROR(apiHandle, "An error happened when trying to create a new alsa control"); return -2; } } - else if(HalCtlsUpdateAlsaCtlProperties(apiHandle, cardId, &alsaMap->ctl)) { + else if(InternalHalUpdateAlsaCtlProperties(apiHandle, cardId, &alsaMap->ctl)) { AFB_API_ERROR(apiHandle, "An error happened when trying to get existing alsa control info"); return -3; } @@ -261,11 +272,11 @@ int HalCtlsHandleOneHalMapObject(afb_api_t apiHandle, char *cardId, struct CtlHa valueJ = json_object_new_int(alsaMap->ctl.value); err = 0; - if(HalCtlsConvertJsonValues(apiHandle, &alsaMap->ctl.alsaCtlProperties, valueJ, &convertedValueJ, CONVERSION_NORMALIZED_TO_ALSACORE)) { + if(InternalHalConvertJsonValues(apiHandle, &alsaMap->ctl.alsaCtlProperties, valueJ, &convertedValueJ, CONVERSION_NORMALIZED_TO_ALSACORE)) { AFB_API_ERROR(apiHandle, "Error when trying to convert initiate value json '%s'", json_object_get_string(valueJ)); err = -4; } - else if(HalCtlsSetAlsaCtlValue(apiHandle, cardId, alsaMap->ctl.numid, convertedValueJ)) { + else if(InternalHalSetAlsaCtlValue(apiHandle, cardId, alsaMap->ctl.numid, convertedValueJ)) { AFB_API_ERROR(apiHandle, "Error while trying to set initial value on alsa control %i, device '%s', value '%s'", alsaMap->ctl.numid, @@ -293,7 +304,7 @@ int HalCtlsHandleOneHalMapObject(afb_api_t apiHandle, char *cardId, struct CtlHa } } - if(afb_api_add_verb(apiHandle, alsaMap->uid, alsaMap->info, HalCtlsActionOnAlsaCtl, (void *) alsaMap, NULL, 0, 0)) { + if(afb_api_add_verb(apiHandle, alsaMap->uid, alsaMap->info, InternalHalActionOnAlsaCtl, (void *) alsaMap, NULL, 0, 0)) { AFB_API_ERROR(apiHandle, "Didn't succeed to create verb for current alsa control to load action using alsa object:\n-- %s", json_object_get_string(alsaMap->actionJ)); @@ -303,42 +314,42 @@ int HalCtlsHandleOneHalMapObject(afb_api_t apiHandle, char *cardId, struct CtlHa return 0; } -int HalCtlsProcessAllHalMap(afb_api_t apiHandle, json_object *AlsaMapJ, struct CtlHalAlsaMapT *currentCtlHalAlsaMapT) +int InternalHalProcessAllHalMap(afb_api_t apiHandle, json_object *AlsaMapJ, struct InternalHalAlsaMapT *currentInternalHalAlsaMapT) { int idx, err = 0; - struct CtlHalAlsaMap *ctlMaps; + struct InternalHalAlsaMap *ctlMaps; json_type alsaMapType; alsaMapType = json_object_get_type(AlsaMapJ); switch(alsaMapType) { case json_type_array: - currentCtlHalAlsaMapT->ctlsCount = (unsigned int) json_object_array_length(AlsaMapJ); + currentInternalHalAlsaMapT->ctlsCount = (unsigned int) json_object_array_length(AlsaMapJ); break; case json_type_object: - currentCtlHalAlsaMapT->ctlsCount = 1; + currentInternalHalAlsaMapT->ctlsCount = 1; break; default: - currentCtlHalAlsaMapT->ctlsCount = 0; - currentCtlHalAlsaMapT->ctls = NULL; - AFB_API_WARNING(apiHandle, "Couldn't get content of 'halmap' section in:\n-- %s", json_object_get_string(AlsaMapJ)); + currentInternalHalAlsaMapT->ctlsCount = 0; + currentInternalHalAlsaMapT->ctls = NULL; + AFB_API_WARNING(apiHandle, "Couldn't get content of 'halmap' section in : '%s'", json_object_get_string(AlsaMapJ)); return -1; } - ctlMaps = calloc(currentCtlHalAlsaMapT->ctlsCount, sizeof(struct CtlHalAlsaMap)); + ctlMaps = calloc(currentInternalHalAlsaMapT->ctlsCount, sizeof(struct InternalHalAlsaMap)); - for(idx = 0; idx < currentCtlHalAlsaMapT->ctlsCount; idx++) - err += HalCtlsProcessOneHalMapObject(apiHandle, &ctlMaps[idx], alsaMapType == json_type_array ? json_object_array_get_idx(AlsaMapJ, idx) : AlsaMapJ); + for(idx = 0; idx < currentInternalHalAlsaMapT->ctlsCount; idx++) + err += InternalHalProcessOneHalMapObject(apiHandle, &ctlMaps[idx], alsaMapType == json_type_array ? json_object_array_get_idx(AlsaMapJ, idx) : AlsaMapJ); - currentCtlHalAlsaMapT->ctls = ctlMaps; + currentInternalHalAlsaMapT->ctls = ctlMaps; return err; } -int HalCtlsHandleAllHalMap(afb_api_t apiHandle, int sndCardId, struct CtlHalAlsaMapT *currentCtlHalAlsaMapT) +int InternalHalHandleAllHalMap(afb_api_t apiHandle, int sndCardId, struct InternalHalAlsaMapT *currentInternalHalAlsaMapT) { int idx, err = 0; @@ -346,30 +357,30 @@ int HalCtlsHandleAllHalMap(afb_api_t apiHandle, int sndCardId, struct CtlHalAlsa snprintf(cardIdString, 6, "hw:%i", sndCardId); - HalCtlsSubscribeToAlsaCardEvent(apiHandle, cardIdString); + InternalHalSubscribeToAlsaCardEvent(apiHandle, cardIdString); - for(idx = 0; idx < currentCtlHalAlsaMapT->ctlsCount; idx++) - err += HalCtlsHandleOneHalMapObject(apiHandle, cardIdString, ¤tCtlHalAlsaMapT->ctls[idx]); + for(idx = 0; idx < currentInternalHalAlsaMapT->ctlsCount; idx++) + err += InternalHalHandleOneHalMapObject(apiHandle, cardIdString, ¤tInternalHalAlsaMapT->ctls[idx]); return err; } -int HalCtlsHalMapConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *AlsaMapJ) +int InternalHalHalMapConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *AlsaMapJ) { CtlConfigT *ctrlConfig; - struct SpecificHalData *currentHalData; + struct HalData *currentHalData; if(! (ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle))) return -1; - currentHalData = (struct SpecificHalData *) getExternalData(ctrlConfig); + currentHalData = (struct HalData *) getExternalData(ctrlConfig); if(! currentHalData) return -2; if(AlsaMapJ) { - currentHalData->ctlHalSpecificData->ctlHalAlsaMapT = calloc(1, sizeof(struct CtlHalAlsaMapT)); + currentHalData->internalHalData->alsaMapT = calloc(1, sizeof(struct InternalHalAlsaMapT)); - if(HalCtlsProcessAllHalMap(apiHandle, AlsaMapJ, currentHalData->ctlHalSpecificData->ctlHalAlsaMapT)) { + if(InternalHalProcessAllHalMap(apiHandle, AlsaMapJ, currentHalData->internalHalData->alsaMapT)) { AFB_API_ERROR(apiHandle, "Failed to process 'halmap' section"); return -3; } @@ -382,15 +393,15 @@ int HalCtlsHalMapConfig(afb_api_t apiHandle, CtlSectionT *section, json_object * AFB_API_ERROR(apiHandle, "Hal alsa card id is not valid, 'halmap' section data can't be handle"); return -6; } - else if(! currentHalData->ctlHalSpecificData->ctlHalAlsaMapT) { + else if(! currentHalData->internalHalData->alsaMapT) { AFB_API_WARNING(apiHandle, "'halmap' section data is empty"); return 2; } - else if(! (currentHalData->ctlHalSpecificData->ctlHalAlsaMapT->ctlsCount > 0)) { + else if(! (currentHalData->internalHalData->alsaMapT->ctlsCount > 0)) { AFB_API_WARNING(apiHandle, "No alsa controls defined in 'halmap' section"); return 3; } - else if(HalCtlsHandleAllHalMap(apiHandle, currentHalData->sndCardId, currentHalData->ctlHalSpecificData->ctlHalAlsaMapT)) { + else if(InternalHalHandleAllHalMap(apiHandle, currentHalData->sndCardId, currentHalData->internalHalData->alsaMapT)) { AFB_API_ERROR(apiHandle, "Failed to handle 'halmap' section"); return -9; } @@ -399,17 +410,19 @@ int HalCtlsHalMapConfig(afb_api_t apiHandle, CtlSectionT *section, json_object * } /******************************************************************************* - * HAL controllers verbs functions * + * Internals HAL verbs functions * ******************************************************************************/ -json_object *HalCtlsGetJsonArrayForMixerDataTable(afb_api_t apiHandle, struct CtlHalMixerData **mixerDataList, enum MixerDataType dataType) +json_object *InternalHalGetJsonArrayForMixerDataTable(afb_api_t apiHandle, + struct InternalHalMixerData **mixerDataList, + enum MixerDataType dataType) { json_object *mixerDataArrayJ, *currentMixerDataJ; - struct CtlHalMixerData *currentMixerData; + struct InternalHalMixerData *currentMixerData; if(! apiHandle) { - AFB_API_ERROR(apiHandle, "Can't get current hal controller api handle"); + AFB_API_ERROR(apiHandle, "Api handle is not valid"); return NULL; } @@ -451,14 +464,14 @@ json_object *HalCtlsGetJsonArrayForMixerDataTable(afb_api_t apiHandle, struct Ct return mixerDataArrayJ; } -json_object *HalCtlsGetJsonArrayForControls(afb_api_t apiHandle, struct CtlHalAlsaMapT *currentAlsaMapDataT) +json_object *InternalHalGetJsonArrayForControls(afb_api_t apiHandle, struct InternalHalAlsaMapT *currentAlsaMapDataT) { unsigned int idx; json_object *alsaMapDataArray, *currentAlsaMapData; if(! apiHandle) { - AFB_API_ERROR(apiHandle, "Can't get current hal controller api handle"); + AFB_API_ERROR(apiHandle, "Can't get current internal hal api handle"); return NULL; } @@ -484,29 +497,30 @@ json_object *HalCtlsGetJsonArrayForControls(afb_api_t apiHandle, struct CtlHalAl return alsaMapDataArray; } -void HalCtlsInfo(afb_req_t request) +void InternalHalInfo(afb_req_t request) { char *apiToCall, *returnedError = NULL, *returnedInfo = NULL; afb_api_t apiHandle; CtlConfigT *ctrlConfig; - struct SpecificHalData *currentCtlHalData; + struct HalData *currentHalData; json_object *requestJson, *toReturnJ = NULL, *requestAnswer, *streamsArray, *playbacksArray, *capturesArray, *controlsArray; if(! (apiHandle = afb_req_get_api(request))) { - afb_req_fail(request, "api_handle", "Can't get current hal controller api handle"); + afb_req_fail(request, "api_handle", "Can't get current internal hal api handle"); return; } if(! (ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle))) { - afb_req_fail(request, "hal_controller_config", "Can't get current hal controller config"); + afb_req_fail(request, "hal_controller_config", "Can't get current internal hal controller config"); return; } - if(! (currentCtlHalData = (struct SpecificHalData *) getExternalData(ctrlConfig))) { - afb_req_fail(request, "hal_controller_data", "Can't get current hal controller data"); + currentHalData = (struct HalData *) getExternalData(ctrlConfig); + if(! currentHalData) { + afb_req_fail(request, "hal_controller_data", "Can't get current internal hal controller data"); return; } @@ -514,13 +528,13 @@ void HalCtlsInfo(afb_req_t request) AFB_REQ_NOTICE(request, "Can't get request json"); } else if(json_object_is_type(requestJson, json_type_object) && json_object_get_object(requestJson)->count > 0) { - apiToCall = currentCtlHalData->ctlHalSpecificData->mixerApiName; + apiToCall = currentHalData->internalHalData->mixerApiName; if(! apiToCall) { afb_req_fail(request, "mixer_api", "Can't get mixer api"); return; } - if(HalCtlsGetInfoFromMixer(apiHandle, apiToCall, requestJson, &toReturnJ, &returnedError, &returnedInfo)) { + if(InternalHalGetInfoFromMixer(apiHandle, apiToCall, requestJson, &toReturnJ, &returnedError, &returnedInfo)) { afb_req_fail_f(request, "mixer_info", "Call to mixer info verb didn't succeed with status '%s' and info '%s'", @@ -533,29 +547,33 @@ void HalCtlsInfo(afb_req_t request) return; } - if(! (streamsArray = HalCtlsGetJsonArrayForMixerDataTable(apiHandle, - ¤tCtlHalData->ctlHalSpecificData->ctlHalStreamsData, - MIXER_DATA_STREAMS))) { + streamsArray = InternalHalGetJsonArrayForMixerDataTable(apiHandle, + ¤tHalData->internalHalData->streamsData, + MIXER_DATA_STREAMS); + if(! streamsArray) { afb_req_fail(request, "streams_data", "Didn't succeed to generate streams data array"); return; } - if(! (playbacksArray = HalCtlsGetJsonArrayForMixerDataTable(apiHandle, - ¤tCtlHalData->ctlHalSpecificData->ctlHalPlaybacksData, - MIXER_DATA_PLAYBACKS))) { + playbacksArray = InternalHalGetJsonArrayForMixerDataTable(apiHandle, + ¤tHalData->internalHalData->playbacksData, + MIXER_DATA_PLAYBACKS); + if(! playbacksArray) { afb_req_fail(request, "playbacks_data", "Didn't succeed to generate playbacks data array"); return; } - if(! (capturesArray = HalCtlsGetJsonArrayForMixerDataTable(apiHandle, - ¤tCtlHalData->ctlHalSpecificData->ctlHalCapturesData, - MIXER_DATA_CAPTURES))) { + capturesArray = InternalHalGetJsonArrayForMixerDataTable(apiHandle, + ¤tHalData->internalHalData->capturesData, + MIXER_DATA_CAPTURES); + if(! capturesArray) { afb_req_fail(request, "captures_data", "Didn't succeed to generate captures data array"); return; } - if(! (controlsArray = HalCtlsGetJsonArrayForControls(apiHandle, - currentCtlHalData->ctlHalSpecificData->ctlHalAlsaMapT))) { + controlsArray = InternalHalGetJsonArrayForControls(apiHandle, + currentHalData->internalHalData->alsaMapT); + if(! controlsArray) { afb_req_fail(request, "controls_data", "Didn't succeed to generate controls data array"); return; } @@ -570,7 +588,7 @@ void HalCtlsInfo(afb_req_t request) afb_req_success(request, requestAnswer, "Requested data"); } -void HalCtlsSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscribeType subscribeUnsubscribeType) +void InternalHalSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscribeType subscribeUnsubscribeType) { int arrayIdx, searchIdx, count, subscriptionFound, subscriptionDoneNb = 0; @@ -579,34 +597,35 @@ void HalCtlsSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscribeTyp afb_api_t apiHandle; CtlConfigT *ctrlConfig; - struct SpecificHalData *currentCtlHalData; - struct CtlHalMixerData *currentStreamData; - struct CtlHalAlsaMapT *halAlsaMapT; + struct HalData *currentHalData; + struct InternalHalMixerData *currentStreamData; + struct InternalHalAlsaMapT *InternalHalAlsaMapT; json_object *requestJson, *requestedSubscriptionsJ, *requestedSubscriptionJ = NULL; json_type requestJsonType; if(! (apiHandle = afb_req_get_api(request))) { - afb_req_fail(request, "api_handle", "Can't get current hal controller api handle"); + afb_req_fail(request, "api_handle", "Can't get current internal hal api handle"); return; } if(! (ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle))) { - afb_req_fail(request, "hal_controller_config", "Can't get current hal controller config"); + afb_req_fail(request, "hal_controller_config", "Can't get current internal hal controller config"); return; } - if(! (currentCtlHalData = (struct SpecificHalData *) getExternalData(ctrlConfig))) { - afb_req_fail(request, "hal_controller_data", "Can't get current hal controller data"); + currentHalData = (struct HalData *) getExternalData(ctrlConfig); + if(! currentHalData) { + afb_req_fail(request, "hal_controller_data", "Can't get current internal hal controller data"); return; } - if(! currentCtlHalData->ctlHalSpecificData) { - afb_req_fail(request, "hal_controller_data", "Can't get current hal specific data"); + if(! currentHalData->internalHalData) { + afb_req_fail(request, "hal_controller_data", "Current internal hal data is not valid"); return; } - halAlsaMapT = currentCtlHalData->ctlHalSpecificData->ctlHalAlsaMapT; + InternalHalAlsaMapT = currentHalData->internalHalData->alsaMapT; if(! (requestJson = afb_req_json(request))) { afb_req_fail(request, "request_json", "Can't get request json"); @@ -647,17 +666,17 @@ void HalCtlsSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscribeTyp currentSubscriptionString = (char *) json_object_get_string(requestedSubscriptionJ); if(! strcasecmp(currentSubscriptionString, HAL_STREAM_UPDATES_EVENT_NAME)) { - if(currentCtlHalData->ctlHalSpecificData->streamUpdates && + if(currentHalData->internalHalData->streamUpdates && subscribeUnsubscribeType == SUBSCRIPTION && - afb_req_subscribe(request, currentCtlHalData->ctlHalSpecificData->streamUpdates)) { + afb_req_subscribe(request, currentHalData->internalHalData->streamUpdates)) { afb_req_fail_f(request, "request_stream_list_updates_event", "Error while trying to subscribe to stream list updates event"); return; } - else if(currentCtlHalData->ctlHalSpecificData->streamUpdates && + else if(currentHalData->internalHalData->streamUpdates && subscribeUnsubscribeType == UNSUBSCRIPTION && - afb_req_unsubscribe(request, currentCtlHalData->ctlHalSpecificData->streamUpdates)) { + afb_req_unsubscribe(request, currentHalData->internalHalData->streamUpdates)) { afb_req_fail_f(request, "request_stream_list_updates_event", "Error while trying to unsubscribe to stream list updates event"); @@ -668,7 +687,7 @@ void HalCtlsSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscribeTyp subscriptionDoneNb++; } - currentStreamData = currentCtlHalData->ctlHalSpecificData->ctlHalStreamsData; + currentStreamData = currentHalData->internalHalData->streamsData; while(currentStreamData && (! subscriptionFound)) { if(! strcasecmp(currentSubscriptionString, currentStreamData->verb)) { @@ -701,25 +720,25 @@ void HalCtlsSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscribeTyp } searchIdx = 0; - while((searchIdx < (halAlsaMapT ? halAlsaMapT->ctlsCount : 0)) && + while((searchIdx < (InternalHalAlsaMapT ? InternalHalAlsaMapT->ctlsCount : 0)) && (! subscriptionFound)) { - if(! strcasecmp(currentSubscriptionString, halAlsaMapT->ctls[searchIdx].uid)) { - if(halAlsaMapT->ctls[searchIdx].alsaControlEvent && + if(! strcasecmp(currentSubscriptionString, InternalHalAlsaMapT->ctls[searchIdx].uid)) { + if(InternalHalAlsaMapT->ctls[searchIdx].alsaControlEvent && subscribeUnsubscribeType == SUBSCRIPTION && - afb_req_subscribe(request, halAlsaMapT->ctls[searchIdx].alsaControlEvent)) { + afb_req_subscribe(request, InternalHalAlsaMapT->ctls[searchIdx].alsaControlEvent)) { afb_req_fail_f(request, "request_control_event", "Error while trying to subscribe to %s halmap controls events", - halAlsaMapT->ctls[searchIdx].uid); + InternalHalAlsaMapT->ctls[searchIdx].uid); return; } - else if(halAlsaMapT->ctls[searchIdx].alsaControlEvent && + else if(InternalHalAlsaMapT->ctls[searchIdx].alsaControlEvent && subscribeUnsubscribeType == UNSUBSCRIPTION && - afb_req_unsubscribe(request, halAlsaMapT->ctls[searchIdx].alsaControlEvent)) { + afb_req_unsubscribe(request, InternalHalAlsaMapT->ctls[searchIdx].alsaControlEvent)) { afb_req_fail_f(request, "request_stream_event", "Error while trying to unsubscribe to %s halmap controls events", - halAlsaMapT->ctls[searchIdx].uid); + InternalHalAlsaMapT->ctls[searchIdx].uid); return; } @@ -760,12 +779,12 @@ void HalCtlsSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscribeTyp count); } -void HalCtlsSubscribe(afb_req_t request) +void InternalHalSubscribe(afb_req_t request) { - HalCtlsSubscribeUnsubscribe(request, SUBSCRIPTION); + InternalHalSubscribeUnsubscribe(request, SUBSCRIPTION); } -void HalCtlsUnsubscribe(afb_req_t request) +void InternalHalUnsubscribe(afb_req_t request) { - HalCtlsSubscribeUnsubscribe(request, UNSUBSCRIPTION); -}
\ No newline at end of file + InternalHalSubscribeUnsubscribe(request, UNSUBSCRIPTION); +} diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-cb.h b/4a-hal/4a-internals-hal/4a-internals-hal-cb.h index 60e24da..ff35656 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-cb.h +++ b/4a-hal/4a-internals-hal/4a-internals-hal-cb.h @@ -15,8 +15,8 @@ * limitations under the License. */ -#ifndef _HAL_CTLS_CB_INCLUDE_ -#define _HAL_CTLS_CB_INCLUDE_ +#ifndef _INTERNALS_HAL_CB_INCLUDE_ +#define _INTERNALS_HAL_CB_INCLUDE_ #include <stdio.h> @@ -30,16 +30,16 @@ enum SubscribeUnsubscribeType { UNSUBSCRIPTION = 2 }; -// HAL controller event handler function -void HalCtlsDispatchApiEvent(afb_api_t apiHandle, const char *evtLabel, json_object *eventJ); +// Internals HAL event handler function +void InternalHalDispatchApiEvent(afb_api_t apiHandle, const char *evtLabel, json_object *eventJ); -// HAL controllers sections parsing functions -int HalCtlsHalMixerConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *MixerJ); -int HalCtlsHalMapConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *AlsaMapJ); +// Internals HAL sections parsing functions +int InternalHalHalMixerConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *MixerJ); +int InternalHalHalMapConfig(afb_api_t apiHandle, CtlSectionT *section, json_object *AlsaMapJ); -// HAL controllers verbs functions -void HalCtlsInfo(afb_req_t request); -void HalCtlsSubscribe(afb_req_t request); -void HalCtlsUnsubscribe(afb_req_t request); +// Internals HAL verbs functions +void InternalHalInfo(afb_req_t request); +void InternalHalSubscribe(afb_req_t request); +void InternalHalUnsubscribe(afb_req_t request); #endif /* _HALMGR_CB_INCLUDE_ */
\ No newline at end of file diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-mixer-link.c b/4a-hal/4a-internals-hal/4a-internals-hal-mixer-link.c index 1839261..95e9099 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-mixer-link.c +++ b/4a-hal/4a-internals-hal/4a-internals-hal-mixer-link.c @@ -31,14 +31,17 @@ #include "../4a-hal-manager/4a-hal-manager.h" -#include "4a-hal-controllers-mixer-link.h" -#include "4a-hal-controllers-cb.h" +#include "4a-internals-hal-mixer-link.h" +#include "4a-internals-hal-cb.h" /******************************************************************************* - * HAL controllers handle mixer calls functions * + * Internals HAL handle mixer calls functions * ******************************************************************************/ -int HalCtlsHandleMixerData(afb_api_t apiHandle, struct CtlHalMixerData **mixerDataList, json_object *currentDataJ, enum MixerDataType dataType) +int InternalHalHandleMixerData(afb_api_t apiHandle, + struct InternalHalMixerData **mixerDataList, + json_object *currentDataJ, + enum MixerDataType dataType) { int idx, mixerDataNb, verbStart, size; int err = (int) MIXER_NO_ERROR; @@ -48,7 +51,7 @@ int HalCtlsHandleMixerData(afb_api_t apiHandle, struct CtlHalMixerData **mixerDa json_type currentDataType; json_object *currentJ; - struct CtlHalMixerData *currentMixerData; + struct InternalHalMixerData *currentMixerData; currentDataType = json_object_get_type(currentDataJ); switch(currentDataType) { @@ -155,7 +158,7 @@ int HalCtlsHandleMixerData(afb_api_t apiHandle, struct CtlHalMixerData **mixerDa return err; } -int HalCtlsHandleMixerAttachResponse(afb_api_t apiHandle, struct CtlHalSpecificData *currentHalSpecificData, json_object *mixerResponseJ) +int InternalHalHandleMixerAttachResponse(afb_api_t apiHandle, struct InternalHalData *currentHalSpecificData, json_object *mixerResponseJ) { int err = (int) MIXER_NO_ERROR; @@ -171,23 +174,32 @@ int HalCtlsHandleMixerAttachResponse(afb_api_t apiHandle, struct CtlHalSpecificD return (int) MIXER_ERROR_DATA_UNAVAILABLE; } - if(mixerStreamsJ && (err += HalCtlsHandleMixerData(apiHandle, ¤tHalSpecificData->ctlHalStreamsData, mixerStreamsJ, MIXER_DATA_STREAMS))) - AFB_API_ERROR(apiHandle, "Error during handling response mixer streams data '%s'", json_object_get_string(mixerStreamsJ)); + if(mixerStreamsJ) { + err += InternalHalHandleMixerData(apiHandle, ¤tHalSpecificData->streamsData, mixerStreamsJ, MIXER_DATA_STREAMS); + if(err) + AFB_API_ERROR(apiHandle, "Error during handling response mixer streams data '%s'", json_object_get_string(mixerStreamsJ)); + } - if(mixerPlaybacksJ && (err += HalCtlsHandleMixerData(apiHandle, ¤tHalSpecificData->ctlHalPlaybacksData, mixerPlaybacksJ, MIXER_DATA_PLAYBACKS))) - AFB_API_ERROR(apiHandle, "Error during handling response mixer playbacks data '%s'", json_object_get_string(mixerPlaybacksJ)); + if(mixerPlaybacksJ) { + err += InternalHalHandleMixerData(apiHandle, ¤tHalSpecificData->playbacksData, mixerPlaybacksJ, MIXER_DATA_PLAYBACKS); + if(err) + AFB_API_ERROR(apiHandle, "Error during handling response mixer playbacks data '%s'", json_object_get_string(mixerPlaybacksJ)); + } - if(mixerCapturesJ && (err += HalCtlsHandleMixerData(apiHandle, ¤tHalSpecificData->ctlHalCapturesData, mixerCapturesJ, MIXER_DATA_CAPTURES))) - AFB_API_ERROR(apiHandle, "Error during handling response mixer captures data '%s'", json_object_get_string(mixerCapturesJ)); + if(mixerCapturesJ) { + err += InternalHalHandleMixerData(apiHandle, ¤tHalSpecificData->capturesData, mixerCapturesJ, MIXER_DATA_CAPTURES); + if(err) + AFB_API_ERROR(apiHandle, "Error during handling response mixer captures data '%s'", json_object_get_string(mixerCapturesJ)); + } - if(! currentHalSpecificData->ctlHalStreamsData) { + if(! currentHalSpecificData->streamsData) { AFB_API_WARNING(apiHandle, "No stream detected in mixer response, %s verb won't be created", HAL_ALL_STREAMS_VERB); } else if(afb_api_add_verb(apiHandle, HAL_ALL_STREAMS_VERB, "Send a stream action on all streams", HalUtlActionOnAllStream, - (void *) currentHalSpecificData->ctlHalStreamsData, + (void *) currentHalSpecificData->streamsData, NULL, 0, 0)) { @@ -198,7 +210,7 @@ int HalCtlsHandleMixerAttachResponse(afb_api_t apiHandle, struct CtlHalSpecificD return err; } -int HalCtlsAttachToMixer(afb_api_t apiHandle) +int InternalHalAttachToMixer(afb_api_t apiHandle) { int err = 0, mixerError; @@ -206,12 +218,12 @@ int HalCtlsAttachToMixer(afb_api_t apiHandle) CtlConfigT *ctrlConfig; - struct SpecificHalData *currentCtlHalData, *concurentHalData = NULL; + struct HalData *currentHalData, *concurentHalData = NULL; json_object *responseJ = NULL; if(! apiHandle) { - AFB_API_ERROR(apiHandle, "Can't get current hal api handle"); + AFB_API_ERROR(apiHandle, "Can't get current internal hal api handle"); return -1; } @@ -220,12 +232,13 @@ int HalCtlsAttachToMixer(afb_api_t apiHandle) return -2; } - if(! (currentCtlHalData = (struct SpecificHalData *) getExternalData(ctrlConfig))) { + currentHalData = (struct HalData *) getExternalData(ctrlConfig); + if(! currentHalData) { AFB_API_ERROR(apiHandle, "Can't get current hal controller data"); return -3; } - switch(currentCtlHalData->status) { + switch(currentHalData->status) { case HAL_STATUS_UNAVAILABLE: AFB_API_ERROR(apiHandle, "Seems that the hal corresponding card was not found by alsacore at startup"); return -4; @@ -238,17 +251,18 @@ int HalCtlsAttachToMixer(afb_api_t apiHandle) break; } - concurentHalData = HalUtlSearchReadyHalDataByCardId(HalMngGetHalDataList(), currentCtlHalData->sndCardId); + concurentHalData = HalUtlSearchReadyHalDataByCardId(HalMngGetHalDataList(), currentHalData->sndCardId); if(concurentHalData) { AFB_API_ERROR(apiHandle, "Trying to attach mixer for hal '%s' but the alsa device %i is already in use with mixer by hal '%s'", - currentCtlHalData->apiName, - currentCtlHalData->sndCardId, + currentHalData->apiName, + currentHalData->sndCardId, concurentHalData->apiName); return -5; } - if(! (apiToCall = currentCtlHalData->ctlHalSpecificData->mixerApiName)) { + apiToCall = currentHalData->internalHalData->mixerApiName; + if(! apiToCall) { AFB_API_ERROR(apiHandle, "Can't get mixer api"); return -6; } @@ -256,7 +270,7 @@ int HalCtlsAttachToMixer(afb_api_t apiHandle) if(afb_api_call_sync(apiHandle, apiToCall, MIXER_ATTACH_VERB, - json_object_get(currentCtlHalData->ctlHalSpecificData->halMixerJ), + json_object_get(currentHalData->internalHalData->halMixerJ), &responseJ, &returnedError, &returnedInfo)) { @@ -275,22 +289,25 @@ int HalCtlsAttachToMixer(afb_api_t apiHandle) apiToCall); err = -8; } - else if((mixerError = HalCtlsHandleMixerAttachResponse(apiHandle, currentCtlHalData->ctlHalSpecificData, responseJ)) != (int) MIXER_NO_ERROR) { - AFB_API_ERROR(apiHandle, - "Seems that %s call to api %s succeed but this warning was risen by response decoder : %i '%s'", - MIXER_ATTACH_VERB, - apiToCall, - mixerError, - json_object_get_string(responseJ)); - err = -9; - } else { - AFB_API_NOTICE(apiHandle, - "Seems that %s call to api %s succeed with no warning raised : '%s'", - MIXER_ATTACH_VERB, - apiToCall, - json_object_get_string(responseJ)); - currentCtlHalData->status = HAL_STATUS_READY; + mixerError = InternalHalHandleMixerAttachResponse(apiHandle, currentHalData->internalHalData, responseJ); + if(mixerError != (int) MIXER_NO_ERROR) { + AFB_API_ERROR(apiHandle, + "Seems that %s call to api %s succeed but this warning was risen by response decoder : %i '%s'", + MIXER_ATTACH_VERB, + apiToCall, + mixerError, + json_object_get_string(responseJ)); + err = -9; + } + else { + AFB_API_NOTICE(apiHandle, + "Seems that %s call to api %s succeed with no warning raised : '%s'", + MIXER_ATTACH_VERB, + apiToCall, + json_object_get_string(responseJ)); + currentHalData->status = HAL_STATUS_READY; + } } if(responseJ) @@ -302,12 +319,12 @@ int HalCtlsAttachToMixer(afb_api_t apiHandle) return err; } -int HalCtlsGetInfoFromMixer(afb_api_t apiHandle, - char *apiToCall, - json_object *requestJson, - json_object **toReturnJ, - char **returnedError, - char **returnedInfo) +int InternalHalGetInfoFromMixer(afb_api_t apiHandle, + char *apiToCall, + json_object *requestJson, + json_object **toReturnJ, + char **returnedError, + char **returnedInfo) { json_object *responseJ = NULL; diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-mixer-link.h b/4a-hal/4a-internals-hal/4a-internals-hal-mixer-link.h index 744830c..6c1f827 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-mixer-link.h +++ b/4a-hal/4a-internals-hal/4a-internals-hal-mixer-link.h @@ -15,8 +15,8 @@ * limitations under the License. */ -#ifndef _HAL_CTLS_SOFTMIXER_LINK_INCLUDE_ -#define _HAL_CTLS_SOFTMIXER_LINK_INCLUDE_ +#ifndef _INTERNALS_HAL_SOFTMIXER_LINK_INCLUDE_ +#define _INTERNALS_HAL_SOFTMIXER_LINK_INCLUDE_ #include <stdio.h> @@ -58,13 +58,13 @@ enum MixerStatus { MIXER_ERROR_STREAM_ALLOCATION_FAILED =-10000 }; -// HAL controllers handle mixer calls functions -int HalCtlsAttachToMixer(afb_api_t apiHandle); -int HalCtlsGetInfoFromMixer(afb_api_t apiHandle, - char *apiToCall, - json_object *requestJson, - json_object **toReturnJ, - char **returnedError, - char **returnedInfo); +// Internals HAL handle mixer calls functions +int InternalHalAttachToMixer(afb_api_t apiHandle); +int InternalHalGetInfoFromMixer(afb_api_t apiHandle, + char *apiToCall, + json_object *requestJson, + json_object **toReturnJ, + char **returnedError, + char **returnedInfo); -#endif /* _HAL_CTLS_SOFTMIXER_LINK_INCLUDE_ */
\ No newline at end of file +#endif /* _INTERNALS_HAL_SOFTMIXER_LINK_INCLUDE_ */
\ No newline at end of file diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-value-handler.c b/4a-hal/4a-internals-hal/4a-internals-hal-value-handler.c index 4e9b56d..64083a9 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-value-handler.c +++ b/4a-hal/4a-internals-hal/4a-internals-hal-value-handler.c @@ -27,14 +27,14 @@ #include <afb/afb-binding.h> -#include "4a-hal-controllers-value-handler.h" -#include "4a-hal-controllers-alsacore-link.h" +#include "4a-internals-hal-value-handler.h" +#include "4a-internals-hal-alsacore-link.h" /******************************************************************************* * Simple conversion value to/from percentage functions * ******************************************************************************/ -int HalCtlsConvertValueToPercentage(double val, double min, double max) +int InternalHalConvertValueToPercentage(double val, double min, double max) { double range; @@ -47,7 +47,7 @@ int HalCtlsConvertValueToPercentage(double val, double min, double max) return (int) round(val / range * 100); } -int HalCtlsConvertPercentageToValue(int percentage, int min, int max) +int InternalHalConvertPercentageToValue(int percentage, int min, int max) { int range; @@ -62,11 +62,11 @@ int HalCtlsConvertPercentageToValue(int percentage, int min, int max) * Convert json object from percentage to value * ******************************************************************************/ -int HalCtlsConvertJsonValueForIntegerControl(afb_api_t apiHandle, - struct CtlHalAlsaCtlProperties *alsaCtlProperties, - json_object *toConvertJ, - json_object **ConvertedJ, - enum ConversionType requestedConversion) +int InternalHalConvertJsonValueForIntegerControl(afb_api_t apiHandle, + struct InternalHalAlsaCtlProperties *alsaCtlProperties, + json_object *toConvertJ, + json_object **ConvertedJ, + enum ConversionType requestedConversion) { int initialValue, convertedValue; @@ -89,10 +89,9 @@ int HalCtlsConvertJsonValueForIntegerControl(afb_api_t apiHandle, return -2; } - convertedValue = HalCtlsConvertPercentageToValue(initialValue, - alsaCtlProperties->minval, - alsaCtlProperties->maxval); - + convertedValue = InternalHalConvertPercentageToValue(initialValue, + alsaCtlProperties->minval, + alsaCtlProperties->maxval); if(convertedValue == -INT_MAX) { AFB_API_ERROR(apiHandle, "Didn't succeed to convert %i (using min %i et max %i)", @@ -110,10 +109,9 @@ int HalCtlsConvertJsonValueForIntegerControl(afb_api_t apiHandle, break; case CONVERSION_ALSACORE_TO_NORMALIZED: - convertedValue = HalCtlsConvertValueToPercentage(initialValue, - alsaCtlProperties->minval, - alsaCtlProperties->maxval); - + convertedValue = InternalHalConvertValueToPercentage(initialValue, + alsaCtlProperties->minval, + alsaCtlProperties->maxval); if(convertedValue == -INT_MAX) { AFB_API_ERROR(apiHandle, "Didn't succeed to convert %i (using min %i et max %i)", @@ -139,11 +137,11 @@ int HalCtlsConvertJsonValueForIntegerControl(afb_api_t apiHandle, return 0; } -int HalCtlsConvertJsonValueForBooleanControl(afb_api_t apiHandle, - struct CtlHalAlsaCtlProperties *alsaCtlProperties, - json_object *toConvertJ, - json_object **ConvertedJ, - enum ConversionType requestedConversion) +int InternalHalConvertJsonValueForBooleanControl(afb_api_t apiHandle, + struct InternalHalAlsaCtlProperties *alsaCtlProperties, + json_object *toConvertJ, + json_object **ConvertedJ, + enum ConversionType requestedConversion) { int initialValue; @@ -192,11 +190,11 @@ int HalCtlsConvertJsonValueForBooleanControl(afb_api_t apiHandle, return 0; } -int HalCtlsConvertJsonValues(afb_api_t apiHandle, - struct CtlHalAlsaCtlProperties *alsaCtlProperties, - json_object *toConvertJ, - json_object **ConvertedJ, - enum ConversionType requestedConversion) +int InternalHalConvertJsonValues(afb_api_t apiHandle, + struct InternalHalAlsaCtlProperties *alsaCtlProperties, + json_object *toConvertJ, + json_object **ConvertedJ, + enum ConversionType requestedConversion) { int conversionError = 0, idx, count; @@ -219,11 +217,12 @@ int HalCtlsConvertJsonValues(afb_api_t apiHandle, switch(alsaCtlProperties->type) { case SND_CTL_ELEM_TYPE_INTEGER: case SND_CTL_ELEM_TYPE_INTEGER64: - if((conversionError = HalCtlsConvertJsonValueForIntegerControl(apiHandle, + conversionError = InternalHalConvertJsonValueForIntegerControl(apiHandle, alsaCtlProperties, toConvertObjectJ, &convertedValueJ, - requestedConversion))) { + requestedConversion); + if(conversionError) { AFB_API_ERROR(apiHandle, "Error %i happened in when trying to convert index %i for integer control ('%s')", conversionError, @@ -235,11 +234,12 @@ int HalCtlsConvertJsonValues(afb_api_t apiHandle, break; case SND_CTL_ELEM_TYPE_BOOLEAN: - if((conversionError = HalCtlsConvertJsonValueForBooleanControl(apiHandle, + conversionError = InternalHalConvertJsonValueForBooleanControl(apiHandle, alsaCtlProperties, toConvertObjectJ, &convertedValueJ, - requestedConversion))) { + requestedConversion); + if(conversionError) { AFB_API_ERROR(apiHandle, "Error %i happened in when trying to convert index %i for boolean control ('%s')", conversionError, @@ -266,11 +266,11 @@ int HalCtlsConvertJsonValues(afb_api_t apiHandle, return 0; } -int HalCtlsChangePreviousValuesUsingJson(afb_api_t apiHandle, - struct CtlHalAlsaCtlProperties *alsaCtlProperties, - json_object *requestedPercentageVariationJ, - json_object *previousControlValuesJ, - json_object **ChangedJ) +int InternalHalChangePreviousValuesUsingJson(afb_api_t apiHandle, + struct InternalHalAlsaCtlProperties *alsaCtlProperties, + json_object *requestedPercentageVariationJ, + json_object *previousControlValuesJ, + json_object **ChangedJ) { int requestedPercentageVariation, requestedVariation, toChangeValue, changedValue, idx, count; @@ -307,10 +307,9 @@ int HalCtlsChangePreviousValuesUsingJson(afb_api_t apiHandle, return -3; } - requestedVariation = HalCtlsConvertPercentageToValue((int) abs(requestedPercentageVariation), - alsaCtlProperties->minval, - alsaCtlProperties->maxval); - + requestedVariation = InternalHalConvertPercentageToValue((int) abs(requestedPercentageVariation), + alsaCtlProperties->minval, + alsaCtlProperties->maxval); if(requestedVariation == -INT_MAX) { AFB_API_ERROR(apiHandle, "Didn't succeed to convert %i (using min %i et max %i)", diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-value-handler.h b/4a-hal/4a-internals-hal/4a-internals-hal-value-handler.h index 03b47e7..f0288ac 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-value-handler.h +++ b/4a-hal/4a-internals-hal/4a-internals-hal-value-handler.h @@ -15,8 +15,8 @@ * limitations under the License. */ -#ifndef _HAL_CTLS_VALUE_CONVERSION_INCLUDE_ -#define _HAL_CTLS_VALUE_CONVERSION_INCLUDE_ +#ifndef _INTERNALS_HAL_VALUE_CONVERSION_INCLUDE_ +#define _INTERNALS_HAL_VALUE_CONVERSION_INCLUDE_ #include <stdio.h> @@ -24,7 +24,7 @@ #include <afb/afb-binding.h> -#include "4a-hal-controllers-alsacore-link.h" +#include "4a-internals-hal-alsacore-link.h" // Enum for the type of conversion requested enum ConversionType { @@ -33,21 +33,21 @@ enum ConversionType { }; // Simple conversion value to/from percentage functions -int HalCtlsConvertValueToPercentage(double val, double min, double max); -int HalCtlsConvertPercentageToValue(int percentage, int min, int max); +int InternalHalConvertValueToPercentage(double val, double min, double max); +int InternalHalConvertPercentageToValue(int percentage, int min, int max); // Convert json object from percentage to value -int HalCtlsConvertJsonValues(afb_api_t apiHandle, - struct CtlHalAlsaCtlProperties *alsaCtlProperties, - json_object *toConvertJ, - json_object **ConvertedJ, - enum ConversionType requestedConversion); +int InternalHalConvertJsonValues(afb_api_t apiHandle, + struct InternalHalAlsaCtlProperties *alsaCtlProperties, + json_object *toConvertJ, + json_object **ConvertedJ, + enum ConversionType requestedConversion); // Increase/Decrease previous values using percentage passed in Json -int HalCtlsChangePreviousValuesUsingJson(afb_api_t apiHandle, - struct CtlHalAlsaCtlProperties *alsaCtlProperties, - json_object *requestedPercentageVariationJ, - json_object *previousControlValuesJ, - json_object **ChangedJ); +int InternalHalChangePreviousValuesUsingJson(afb_api_t apiHandle, + struct InternalHalAlsaCtlProperties *alsaCtlProperties, + json_object *requestedPercentageVariationJ, + json_object *previousControlValuesJ, + json_object **ChangedJ); -#endif /* _HAL_CTLS_VALUE_CONVERSION_INCLUDE_ */
\ No newline at end of file +#endif /* _INTERNALS_HAL_VALUE_CONVERSION_INCLUDE_ */
\ No newline at end of file diff --git a/4a-hal/CMakeLists.txt b/4a-hal/CMakeLists.txt index 0c722c5..b863c5f 100644 --- a/4a-hal/CMakeLists.txt +++ b/4a-hal/CMakeLists.txt @@ -23,13 +23,13 @@ PROJECT_TARGET_ADD(4a-hal) # Define project Targets add_library(${TARGET_NAME} MODULE - ${TARGET_NAME}-manager/${TARGET_NAME}-manager.c - ${TARGET_NAME}-manager/${TARGET_NAME}-manager-cb.c - ${TARGET_NAME}-controllers/${TARGET_NAME}-controllers-alsacore-link.c - ${TARGET_NAME}-controllers/${TARGET_NAME}-controllers-api-loader.c - ${TARGET_NAME}-controllers/${TARGET_NAME}-controllers-cb.c - ${TARGET_NAME}-controllers/${TARGET_NAME}-controllers-mixer-link.c - ${TARGET_NAME}-controllers/${TARGET_NAME}-controllers-value-handler.c + 4a-hal-manager/4a-hal-manager.c + 4a-hal-manager/4a-hal-manager-cb.c + 4a-internals-hal/4a-internals-hal-alsacore-link.c + 4a-internals-hal/4a-internals-hal-api-loader.c + 4a-internals-hal/4a-internals-hal-cb.c + 4a-internals-hal/4a-internals-hal-mixer-link.c + 4a-internals-hal/4a-internals-hal-value-handler.c ) # Binder exposes a unique public entry point |