From 7b37923625667b07ddade3a79c01ddbd358287a3 Mon Sep 17 00:00:00 2001 From: Jonathan Aillet Date: Thu, 18 Jul 2019 14:41:59 +0200 Subject: Add hal api handler utilities files Add utilities files to create/delete hal apis while adding hal data to hal data list. Use it to create new hal apis. BUG-AGL: SPEC-2652 Change-Id: I62e99cda31bb2c6f597da27960102c036a25b733 Signed-off-by: Jonathan Aillet --- src/4a-internals-hal/4a-internals-hal-api-loader.c | 33 ++++------------------ 1 file changed, 6 insertions(+), 27 deletions(-) (limited to 'src/4a-internals-hal/4a-internals-hal-api-loader.c') diff --git a/src/4a-internals-hal/4a-internals-hal-api-loader.c b/src/4a-internals-hal/4a-internals-hal-api-loader.c index 34e82ef..71779d7 100644 --- a/src/4a-internals-hal/4a-internals-hal-api-loader.c +++ b/src/4a-internals-hal/4a-internals-hal-api-loader.c @@ -27,6 +27,8 @@ #include +#include "4a-hal-utilities-hal-api-handler.h" + #include "4a-internals-hal-api-loader.h" #include "4a-internals-hal-alsacore-link.h" #include "4a-internals-hal-cb.h" @@ -166,8 +168,8 @@ static int InternalHalLoadOneApi(void *cbdata, afb_api_t apiHandle) int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *halMgrData) { + int err; CtlConfigT *ctrlConfig; - struct HalData *currentHalData; if(! apiHandle || ! path || ! halMgrData) return -1; @@ -184,35 +186,12 @@ int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *hal return -3; } - // Allocation of current internal hal data - currentHalData = HalUtlAddHalToHalList(&halMgrData->halDataListHead); - if(! currentHalData) { - AFB_API_ERROR(apiHandle, "Didn't succeed to add hal to hal list"); + err = HalUtlAddHalDataAndCreateHalApi(apiHandle, halMgrData, ctrlConfig, InternalHalLoadOneApi); + if(err) { + AFB_API_ERROR(apiHandle, "Error %i happened while trying to add hal api data and create new api", err); return -4; } - currentHalData->apiName = (char *) ctrlConfig->api; - - // Stores hal data in controller config - setExternalData(ctrlConfig, (void *) currentHalData); - - // Allocation of the structure that will be used to store internal hal data - currentHalData->internalHalData = calloc(1, sizeof(struct InternalHalData)); - if(! currentHalData->internalHalData) { - AFB_API_ERROR(apiHandle, "Didn't succeed to allocate internal hal data structure"); - return -5; - } - - CDS_INIT_LIST_HEAD(¤tHalData->internalHalData->probedDevicesListHead); - CDS_INIT_LIST_HEAD(¤tHalData->internalHalData->streamsDataListHead); - CDS_INIT_LIST_HEAD(¤tHalData->internalHalData->halMapListHead); - - // Create one API - if(! afb_api_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, InternalHalLoadOneApi, ctrlConfig)) { - AFB_API_ERROR(apiHandle, "An error occurred at '%s' internal hal api creation", ctrlConfig->api); - return -6; - } - return 0; } -- cgit 1.2.3-korg