diff options
Diffstat (limited to '4a-hal')
-rw-r--r-- | 4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c | 3 | ||||
-rw-r--r-- | 4a-hal/4a-hal-manager/4a-hal-manager.c | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c b/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c index 7e771e5..c6fc4d6 100644 --- a/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c +++ b/4a-hal/4a-hal-controllers/4a-hal-controllers-api-loader.c @@ -95,7 +95,6 @@ static int HalCtlsInitOneApi(AFB_ApiT apiHandle) // Fill SpecificHalDatadata structure currentCtlHalData->internal = 1; - currentCtlHalData->apiName = (char *) ctrlConfig->api; currentCtlHalData->sndCardPath = (char *) ctrlConfig->uid; currentCtlHalData->info = (char *) ctrlConfig->info; @@ -183,6 +182,8 @@ int HalCtlsCreateApi(AFB_ApiT apiHandle, char *path, struct HalMgrData *HalMgrGl if(! currentCtlHalData) return -4; + currentCtlHalData->apiName = (char *) ctrlConfig->api; + // Stores current hal controller data in controller config ctrlConfig->external = (void *) currentCtlHalData; diff --git a/4a-hal/4a-hal-manager/4a-hal-manager.c b/4a-hal/4a-hal-manager/4a-hal-manager.c index 19f8e8a..0a75923 100644 --- a/4a-hal/4a-hal-manager/4a-hal-manager.c +++ b/4a-hal/4a-hal-manager/4a-hal-manager.c @@ -69,6 +69,7 @@ struct SpecificHalData **HalMngGetFirstHalData(void) static int HalMgrInitApi(AFB_ApiT apiHandle) { + struct SpecificHalData *currentCtlHalData; struct HalMgrData *HalMgrGlobalData; if(! apiHandle) @@ -85,6 +86,17 @@ static int HalMgrInitApi(AFB_ApiT apiHandle) if(HalUtlInitializeHalMgrData(apiHandle, HalMgrGlobalData, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO)) return -3; + currentCtlHalData = HalMgrGlobalData->first; + + while(currentCtlHalData) { + if(! currentCtlHalData->apiName) + return -4; + else if(AFB_RequireApi(apiHandle, currentCtlHalData->apiName, 1)) + return -5; + + currentCtlHalData = currentCtlHalData->next; + } + return 0; } |