From 62f552fe640df18320dd3afb1f141e8a1aedf2f4 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 7 Oct 2019 17:36:39 -0400 Subject: Switch to appcontroller library Remove old app-controller submodule usage in favor of library from the toolchain. Also update dynamic API calls for V3. Bug-AGL: SPEC-2857 Signed-off-by: Scott Murray Change-Id: Ia93b162764eb2e700487c05fe9a0dbbdc8843931 (cherry picked from commit 218cc70720fce6235d74fd4d851629dfda34a00e) --- src/vshl-capabilities-binding.c | 48 ++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 25 deletions(-) (limited to 'src/vshl-capabilities-binding.c') diff --git a/src/vshl-capabilities-binding.c b/src/vshl-capabilities-binding.c index b38210a..d7b970c 100644 --- a/src/vshl-capabilities-binding.c +++ b/src/vshl-capabilities-binding.c @@ -15,30 +15,29 @@ #define _GNU_SOURCE #include "vshl-capabilities-binding.h" -afb_dynapi* AFB_default; - // Config Section definition (note: controls section index should match handle // retrieval in HalConfigExec) static CtlSectionT ctrlSections[] = {{.key = "plugins", .loadCB = PluginConfig}, {.key = "controls", .loadCB = ControlConfig}, {.key = NULL}}; -static AFB_ApiVerbs ctrlApiVerbs[] = { +static afb_verb_t ctrlApiVerbs[] = { {.verb = NULL} /* marker for end of the array */ }; -static int ctrlLoadStaticVerbs(afb_dynapi* apiHandle, AFB_ApiVerbs* verbs) { +static int ctrlLoadStaticVerbs(afb_api_t apiHandle, afb_verb_t* verbs) { int errcount = 0; for (int idx = 0; verbs[idx].verb; idx++) { - errcount += afb_dynapi_add_verb( + errcount += afb_api_add_verb( apiHandle, ctrlApiVerbs[idx].verb, NULL, ctrlApiVerbs[idx].callback, (void*)&ctrlApiVerbs[idx], ctrlApiVerbs[idx].auth, - 0); + 0, + !!strchr(ctrlApiVerbs[idx].verb, '*')); } return errcount; @@ -47,7 +46,7 @@ static int ctrlLoadStaticVerbs(afb_dynapi* apiHandle, AFB_ApiVerbs* verbs) { // next generation dynamic API-V3 mode #include -static int CtrlInitOneApi(AFB_ApiT apiHandle) +static int CtrlInitOneApi(afb_api_t apiHandle) { CtlConfigT *ctrlConfig; @@ -55,72 +54,71 @@ static int CtrlInitOneApi(AFB_ApiT apiHandle) return -1; // Retrieve section config from api handle - ctrlConfig = (CtlConfigT *) AFB_ApiGetUserData(apiHandle); + ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle); if(!ctrlConfig) return -2; return CtlConfigExec(apiHandle, ctrlConfig); } -static int ctrlLoadOneApi(void* cbdata, AFB_ApiT apiHandle) { +static int ctrlLoadOneApi(void* cbdata, afb_api_t apiHandle) { CtlConfigT* ctrlConfig = (CtlConfigT*)cbdata; // save closure as api's data context - afb_dynapi_set_userdata(apiHandle, ctrlConfig); + afb_api_set_userdata(apiHandle, ctrlConfig); // add static controls verbs int err = ctrlLoadStaticVerbs(apiHandle, ctrlApiVerbs); if (err) { - AFB_ApiError(apiHandle, "ctrlLoadStaticVerbs fail to register static V2 verbs"); + AFB_API_ERROR(apiHandle, "ctrlLoadStaticVerbs fail to register static V2 verbs"); return ERROR; } // load section for corresponding API err = CtlLoadSections(apiHandle, ctrlConfig, ctrlSections); if (err) { - AFB_ApiError(apiHandle, "CtlLoadSections fail to load the sections"); + AFB_API_ERROR(apiHandle, "CtlLoadSections fail to load the sections"); return ERROR; } // declare an event event manager for this API; - afb_dynapi_on_event(apiHandle, CtrlDispatchApiEvent); + afb_api_on_event(apiHandle, CtrlDispatchApiEvent); // init API function (does not receive user closure ??? - afb_dynapi_on_init(apiHandle, CtrlInitOneApi); + afb_api_on_init(apiHandle, CtrlInitOneApi); - afb_dynapi_seal(apiHandle); + afb_api_seal(apiHandle); return err; } -int afbBindingEntry(afb_dynapi* apiHandle) { - AFB_default = apiHandle; - AFB_ApiNotice(apiHandle, "Controller in afbBindingEntry"); +int afbBindingEntry(afb_api_t apiHandle) { + AFB_API_NOTICE(apiHandle, "Controller in afbBindingEntry"); const char* dirList = getenv("CONTROL_CONFIG_PATH"); if (!dirList) dirList = CONTROL_CONFIG_PATH; const char* configPath = CtlConfigSearch(apiHandle, dirList, ""); if (!configPath) { - AFB_ApiError(apiHandle, "CtlPreInit: No %s* config found in %s ", GetBinderName(), dirList); + AFB_API_ERROR(apiHandle, "CtlPreInit: No %s* config found in %s ", GetBinderName(), dirList); return ERROR; } // load config file and create API CtlConfigT* ctrlConfig = CtlLoadMetaData(apiHandle, configPath); if (!ctrlConfig) { - AFB_ApiError(apiHandle, "CtrlBindingDyn No valid control config file in:\n-- %s", configPath); + AFB_API_ERROR(apiHandle, "CtrlBindingDyn No valid control config file in:\n-- %s", configPath); return ERROR; } if (!ctrlConfig->api) { - AFB_ApiError(apiHandle, "CtrlBindingDyn API Missing from metadata in:\n-- %s", configPath); + AFB_API_ERROR(apiHandle, "CtrlBindingDyn API Missing from metadata in:\n-- %s", configPath); return ERROR; } - AFB_ApiNotice(apiHandle, "Controller API='%s' info='%s'", ctrlConfig->api, ctrlConfig->info); + AFB_API_NOTICE(apiHandle, "Controller API='%s' info='%s'", ctrlConfig->api, ctrlConfig->info); - // create one API per config file (Pre-V3 return code ToBeChanged) - int status = afb_dynapi_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, ctrlLoadOneApi, ctrlConfig); + // create one API per config file + afb_api_t newApi = afb_api_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, ctrlLoadOneApi, ctrlConfig); - return status; + return newApi != NULL ? 0 : -1; } -- cgit 1.2.3-korg