summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2018-06-15 16:37:10 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2018-07-10 17:12:13 +0200
commit49122aa735427cfcd08f40035bf0354ae8c477f3 (patch)
tree5020307c474062501ad0f8e5f210d9762e5c8cd6
parentbcf72eda48af082530aca93153ac0630ba646c20 (diff)
Simplify the writing of configuration.
As resources and events are "static" hardcode them in the binding. Change-Id: I9dd600fa6cfe0d2f5f55cf605ce75d8c5446d78d Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
-rw-r--r--conf.d/project/etc/test-config.json19
-rw-r--r--src/test-binding.c26
2 files changed, 28 insertions, 17 deletions
diff --git a/conf.d/project/etc/test-config.json b/conf.d/project/etc/test-config.json
index 2afd85d..cf53b96 100644
--- a/conf.d/project/etc/test-config.json
+++ b/conf.d/project/etc/test-config.json
@@ -5,14 +5,11 @@
"uid": "Test",
"version": "1.0",
"api": "test",
- "info": "Binding made to tests other bindings"
+ "info": "Binding made to tests other bindings",
+ "require": [
+ "hello"
+ ]
},
- "resources": [{
- "uid": "AFT",
- "info": "Binder test framework",
- "spath": "var/",
- "libs": [ "aft.lua"]
- }],
"onload": {
"uid": "launch_all_tests",
"info": "Launch all the tests",
@@ -20,11 +17,5 @@
"args": {
"files": ["helloworld.lua"]
}
- },
- "events":[
- {
- "uid": "monitor/trace",
- "action": "lua://low-can-test#_evt_catcher_"
- }
- ]
+ }
}
diff --git a/src/test-binding.c b/src/test-binding.c
index d1c6c1f..33a8807 100644
--- a/src/test-binding.c
+++ b/src/test-binding.c
@@ -100,21 +100,25 @@ static int CtrlLoadOneApi(void *cbdata, AFB_ApiT apiHandle) {
int afbBindingVdyn(afb_dynapi *apiHandle) {
int status, err = 0;
+ const char *dirList = NULL, *configPath = NULL;
+ json_object *resourcesJ = NULL, *eventsJ = NULL;
+ CtlConfigT *ctrlConfig = NULL;
AFB_default = apiHandle;
+
AFB_ApiNotice(apiHandle, "Controller in afbBindingVdyn");
- const char *dirList = getenv("CONTROL_CONFIG_PATH");
+ dirList = getenv("CONTROL_CONFIG_PATH");
if (!dirList)
dirList = CONTROL_CONFIG_PATH;
- const char *configPath = CtlConfigSearch(apiHandle, dirList, "");
+ configPath = CtlConfigSearch(apiHandle, dirList, "");
if (!configPath) {
AFB_ApiError(apiHandle, "CtlPreInit: No %s* config found in %s ", GetBinderName(), dirList);
return ERROR;
}
// load config file and create API
- CtlConfigT *ctrlConfig = CtlLoadMetaData(apiHandle, configPath);
+ ctrlConfig = CtlLoadMetaData(apiHandle, configPath);
if (!ctrlConfig) {
AFB_ApiError(apiHandle,
"CtrlBindingDyn No valid control config file in:\n-- %s",
@@ -132,6 +136,22 @@ int afbBindingVdyn(afb_dynapi *apiHandle) {
AFB_ApiNotice(apiHandle, "Controller API='%s' info='%s'", ctrlConfig->api,
ctrlConfig->info);
+ err = wrap_json_pack(&resourcesJ, "{s[{ss, ss, ss, s[s]}]}", "resources",
+ "uid", "AFT",
+ "info", "LUA Binder test framework",
+ "spath", "var/",
+ "libs", "aft.lua" );
+ err += wrap_json_pack(&eventsJ, "{s[{ss, ss}]}", "events",
+ "uid", "monitor/trace",
+ "action", "lua://AFT#_evt_catcher_" );
+
+ if(err) {
+ AFB_ApiError(apiHandle, "Error at Controller configuration editing.");
+ return err;
+ }
+ wrap_json_object_add(ctrlConfig->configJ, resourcesJ);
+ wrap_json_object_add(ctrlConfig->configJ, eventsJ);
+
// create one API per config file (Pre-V3 return code ToBeChanged)
status = afb_dynapi_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, CtrlLoadOneApi, ctrlConfig);