summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonathan Aillet <jonathan.aillet@iot.bzh>2019-07-18 14:41:59 +0200
committerJonathan Aillet <jonathan.aillet@iot.bzh>2019-07-18 17:32:26 +0200
commit7b37923625667b07ddade3a79c01ddbd358287a3 (patch)
tree07b6511b4f6c3d10d0a7e78462218466d8f54ded /src
parent09f002d060078d53e443e0f5806e147e035ac357 (diff)
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 <jonathan.aillet@iot.bzh>
Diffstat (limited to 'src')
-rw-r--r--src/4a-internals-hal/4a-internals-hal-api-loader.c33
1 files changed, 6 insertions, 27 deletions
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 <ctl-config.h>
+#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(&currentHalData->internalHalData->probedDevicesListHead);
- CDS_INIT_LIST_HEAD(&currentHalData->internalHalData->streamsDataListHead);
- CDS_INIT_LIST_HEAD(&currentHalData->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;
}