diff options
Diffstat (limited to '4a-hal/4a-hal-manager/4a-hal-manager.c')
-rw-r--r-- | 4a-hal/4a-hal-manager/4a-hal-manager.c | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/4a-hal/4a-hal-manager/4a-hal-manager.c b/4a-hal/4a-hal-manager/4a-hal-manager.c deleted file mode 100644 index 4d2fbf1..0000000 --- a/4a-hal/4a-hal-manager/4a-hal-manager.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * 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. - */ - -#define _GNU_SOURCE - -#include <stdio.h> -#include <string.h> - -#include <afb/afb-binding.h> - -#include "4a-hal-utilities-data.h" -#include "4a-hal-utilities-verbs-loader.h" - -#include "../4a-internals-hal/4a-internals-hal-api-loader.h" - -#include "4a-hal-manager.h" -#include "4a-hal-manager-cb.h" - -// Default api to print log when apihandle not available -afb_api_t AFB_default; - -// Local (static) Hal manager data structure -static struct HalMgrData localHalMgrGlobalData; - -/******************************************************************************* - * HAL Manager verbs table * - ******************************************************************************/ - -// Hal manager exported verbs -afb_verb_t HalManagerApiStaticVerbs[] = -{ - /* VERB'S NAME FUNCTION TO CALL SHORT DESCRIPTION */ - { .verb = "ping", .callback = HalMgrPing, .info = "Ping test"}, - { .verb = "loaded", .callback = HalMgrLoaded, .info = "Show loaded HAL"}, - { .verb = "load", .callback = HalMgrLoad, .info = "Load an external HAL to HAL Manager"}, - { .verb = "unload", .callback = HalMgrUnload, .info = "Unload an external HAL to HAL Manager"}, - { .verb = "subscribe", .callback = HalMgrSubscribeEvent, .info = "Subscribe to an event"}, - { .verb = "unsuscribe", .callback = HalMgrUnsubscribeEvent, .info = "Unsubscribe to an event"}, - { .verb = NULL } // Marker for end of the array -}; - -/******************************************************************************* - * HAL Manager get 'HalData' linked list * - from HAL list function * - ******************************************************************************/ - -struct HalData **HalMngGetHalDataList(void) -{ - return &localHalMgrGlobalData.halDataList; -} - -/******************************************************************************* - * Dynamic API functions for hal manager * - ******************************************************************************/ - -static int HalMgrInitApi(afb_api_t apiHandle) -{ - struct HalData *currentHalData; - struct HalMgrData *halMgrData; - - if(! apiHandle) - return -1; - - // Hugely hack to make all V2 AFB_DEBUG to work in fileutils - AFB_default = apiHandle; - - // Retrieve section config from api handle - halMgrData = (struct HalMgrData *) afb_api_get_userdata(apiHandle); - if(! halMgrData) - return -2; - - if(HalUtlInitializeHalMgrData(apiHandle, halMgrData, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO)) - return -3; - - currentHalData = halMgrData->halDataList; - - while(currentHalData) { - if(! currentHalData->apiName) - return -4; - else if(afb_api_require_api(apiHandle, currentHalData->apiName, 1)) - return -5; - - currentHalData = currentHalData->next; - } - - return 0; -} - -static int HalMgrLoadApi(void *cbdata, afb_api_t apiHandle) -{ - struct HalMgrData *halMgrData; - - if(! cbdata || ! apiHandle) - return -1; - - halMgrData = (struct HalMgrData *) cbdata; - - // Save closure as api's data context - afb_api_set_userdata(apiHandle, halMgrData); - - // Add static controls verbs - if(HalUtlLoadVerbs(apiHandle, HalManagerApiStaticVerbs)) { - AFB_API_ERROR(apiHandle, "Load section : fail to register static verbs"); - return 1; - } - - // Declare an event manager for Hal Manager - afb_api_on_event(apiHandle, HalMgrDispatchApiEvent); - - // Init Api function (does not receive user closure ???) - afb_api_on_init(apiHandle, HalMgrInitApi); - - afb_api_seal(apiHandle); - - return 0; -} - -int HalMgrCreateApi(afb_api_t apiHandle, struct HalMgrData *halMgrData) -{ - if(! apiHandle || ! halMgrData) - return -1; - - // Create one API - return afb_api_new_api(apiHandle, HAL_MANAGER_API_NAME, HAL_MANAGER_API_INFO, 1, HalMgrLoadApi, halMgrData) ? 0 : -1; -} - -/******************************************************************************* - * Startup function * - ******************************************************************************/ - -int afbBindingEntry(afb_api_t apiHandle) -{ - int status = 0, rc; - - if(! apiHandle) - return -1; - - // Hugely hack to make all V2 AFB_DEBUG to work in fileutils - AFB_default = apiHandle; - - AFB_API_NOTICE(apiHandle, "Binding start"); - - // Load Hal-Manager using Api v3 - rc = HalMgrCreateApi(apiHandle, &localHalMgrGlobalData); - if(rc < 0) - status--; - - // Load internals Hal using Api v3 - rc = InternalHalCreateAllApi(apiHandle, &localHalMgrGlobalData); - if(rc < 0) - status -= rc; - - return status; -}
\ No newline at end of file |