From 6460512ea04190c0619e9744e085d52b66517a6c Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 10 Jul 2018 16:27:19 +0200 Subject: Began Mock API implementation WIP Change-Id: I30782e272cad5da75950d7983f9504dac6d24676 Signed-off-by: Romain Forlot --- src/CMakeLists.txt | 2 +- src/fapis.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/fapis.h | 23 ++++++++++++++++++++++ src/test-binding.c | 3 ++- 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/fapis.c create mode 100644 src/fapis.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 59ff6db..170844d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,7 +21,7 @@ PROJECT_TARGET_ADD(test-binding) # Define project Targets - ADD_LIBRARY(${TARGET_NAME} MODULE test-binding.c) + ADD_LIBRARY(${TARGET_NAME} MODULE ${TARGET_NAME}.c fapis.c) SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "" diff --git a/src/fapis.c b/src/fapis.c new file mode 100644 index 0000000..a736fd6 --- /dev/null +++ b/src/fapis.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2016 "IoT.bzh" + * + * Author Romain Forlot + * + * 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. + */ + +#include + +static int LoadOneFapi(void *data, AFB_ApiT apiHandle) +{ + CtlActionT *actions = NULL; + json_object* verbsJ = (json_object*) data; + + actions = ActionConfig(apiHandle, verbsJ, 1); + + return 0; +} + +static void OneFapiConfig(void *data, json_object *fapiJ) { + const char *uid = NULL, *info = NULL, *spath = NULL; + json_object *verbsJ = NULL, *filesJ = NULL, *luaJ = NULL; + + AFB_ApiT apiHandle = (AFB_ApiT)data; + + if(wrap_json_unpack(fapiJ, "{ss,s?s,s?s,so,s?o,so !}", + "uid", &uid, + "info", &info, + "spath", &spath, + "libs", &filesJ, + "lua", &luaJ, + "verbs", &verbsJ)) { + AFB_ApiError(apiHandle, "Wrong fapis specification, missing uid|[info]|[spath]|libs|[lua]|verbs"); + return; + } + + if (afb_dynapi_new_api(apiHandle, uid, info, 1, LoadOneFapi, )) { + AFB_ApiError(apiHandle, "Error creating new api: %s", uid); + return; + } +} + +int FapisConfig(AFB_ApiT apiHandle, CtlSectionT *section, json_object *fapisJ) { + if(! PluginConfig(apiHandle, section, fapisJ)) + wrap_json_optarray_for_all(fapisJ, OneFapiConfig, (void*)apiHandle); +} diff --git a/src/fapis.h b/src/fapis.h new file mode 100644 index 0000000..d0dd467 --- /dev/null +++ b/src/fapis.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2016 "IoT.bzh" + * + * Author Romain Forlot + * + * 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. + */ + +#include +#include +#include + +int FapisConfig(AFB_ApiT apiHandle, CtlSectionT *section, json_object *fapisJ); diff --git a/src/test-binding.c b/src/test-binding.c index a1939e2..1668360 100644 --- a/src/test-binding.c +++ b/src/test-binding.c @@ -22,7 +22,7 @@ #include #include "test-binding.h" - +#include "fapis.h" // default api to print log when apihandle not avaliable afb_dynapi *AFB_default; @@ -31,6 +31,7 @@ static CtlSectionT ctrlSections[] = { {.key = "resources", .loadCB = PluginConfig}, {.key = "onload", .loadCB = OnloadConfig}, {.key = "events", .loadCB = EventConfig}, + {.key = "fapis", .loadCB = FapisConfig}, {.key = NULL} }; -- cgit 1.2.3-korg