aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2018-07-04 18:18:43 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2018-07-05 16:22:47 +0200
commit64fcae698a48acf6bd7f05d168b5cd4badcf0bd3 (patch)
tree360d22bf5fe8584cafd22acaa93bcf76a3a09440
parentbf964e8ad085cd051d9a28bcd74aafeeb08c9593 (diff)
Update submodules
Submodule conf.d/app-templates 6e1a3c3..aa68dbd: > Don't overwrite the autobuild script if it exists > Disable the in-tree build method. > Detect Yocto as OS distribution > Fix: wrong compile options added > Fallback using zip format if no wgtpkg-pack found > 02-variables.cmake: Avoid checking CXX version if not required > config.cmake.sample: Remove dependency to libsystemd > config.cmake.sample: Remove dependency to libmicrohttpd > Added -D_FORTIFY_SOURCE=2 to CFLAGS > start-on-target: uses RSYNC_PREFIX path for config > Fixed spelling. > Improve OS detection > Fix: OS detection > Launch from workdir > Change closing that could fix native debugging Submodule ctl-utilities 0129510...1ff524b: > Change LUA package path at LUA interpreter load > Don't load two times a plugin even for LUA > Fixed hidden bound variable (apiHandle) > Fixed null value when push Lua arguments > Adjust to compile with incoming bindings v3 > Remove declaration to not existing functions > Add 2 lua utilities function > Update README.md for new metadata keys. > Fix a compilation issue due to modif of AFB_ReqSuccess > README:md: update README accordingly to new json scheme. > Fixed crash due to call to json_object_put > Fix segfault when printing long message from lua > Fixed spelling of AFB_ReqSuccess > Remove an unnecessary variable > Make parsing of action loading non blocking > Use an external file for app fw functions link > Use macro to test request validity > Fixed build warnings with gcc >= 7.3 > Increase lua script max message size > Prevent lost of config file path when searching > Correct way that api actions are handled in controller > Handle more metadata in the controller. > Add possibility to set prefix to NULL in CtlConfigScan > Fixed compilation warnings with gcc-7.2.0 > Add an external field to CtlConfigT > Make action item from a LUA action mandatory > Handle no prefix given > Good usage of strncat and strncpy > Update to the new JSON syntax > Detect failure at OnLoad action calls > Improve reliability and function calls > Correctly release request JSON object > Add AFB macros > Don't use assert in controller. > Change lua2c JSON syntax. > Search for Event section > Fix: changes key name. > Fix: arguments pointer NULL check > Fix wrong error message. > Simplify action definition > Fix: Dyn API Action loading procedure > Use new version of function GetBindingDirPath > Format > Merge changes from topic 'sandbox/claneys/wip' > Upgrade config schema > Fix: callback execution condition < Format < Fix: callback execution condition < New action loading function. < Upgrade config schema Adapt json config file to new syntax Fix: prefix now add the "-" so it'isn't needed to add it in the prefix at search (signal-composer.cpp) Fix: calling a api verb without json_object fails because of config arguments not retrieved. (sources.cpp) Change-Id: I48c1bca9fbac485e6a34b4645e683d9bdb1cbf2b Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
m---------afb-helpers0
m---------conf.d/app-templates0
-rw-r--r--conf.d/project/data/signal-composer-daemon-00-utils.lua85
-rw-r--r--conf.d/project/data/signal-composer-daemon-10-event.lua74
-rw-r--r--conf.d/project/data/unit-conversion.lua (renamed from conf.d/project/data/signal-composer-daemon-04-oncall.lua)0
-rw-r--r--conf.d/project/etc/control-basic-conf.json6
-rw-r--r--conf.d/project/etc/control-signal-composer.json3
-rw-r--r--conf.d/project/etc/sig-txc.json6
-rw-r--r--conf.d/project/etc/sources-txc.json6
m---------ctl-utilities0
-rw-r--r--plugins/low-can.cpp4
-rw-r--r--signal-composer-binding/signal-composer-binding.cpp2
-rw-r--r--signal-composer-binding/signal-composer.cpp2
-rw-r--r--signal-composer-binding/source.cpp2
14 files changed, 14 insertions, 176 deletions
diff --git a/afb-helpers b/afb-helpers
-Subproject 6e837e4691ae266f5d23cce844fccdeeacdfe11
+Subproject 43ec9716bf83d8a6e5ff15909705cb1adc3c189
diff --git a/conf.d/app-templates b/conf.d/app-templates
-Subproject 6e1a3c37e94f42f5307fd1fa749823b2d160a56
+Subproject aa68dbd12c60f9eb0015a508a22d8650914f8e5
diff --git a/conf.d/project/data/signal-composer-daemon-00-utils.lua b/conf.d/project/data/signal-composer-daemon-00-utils.lua
deleted file mode 100644
index 943c6c6..0000000
--- a/conf.d/project/data/signal-composer-daemon-00-utils.lua
+++ /dev/null
@@ -1,85 +0,0 @@
---[[
- Copyright (C) 2016 "IoT.bzh"
- Author Fulup Ar Foll <fulup@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.
-
- Note: this file should be called before any other to assert declare function
- is loaded before anything else.
-
- References:
- http://lua-users.org/wiki/DetectingUndefinedVariables
-
---]]
-
-
---===================================================
---= Niklas Frykholm
--- basically if user tries to create global variable
--- the system will not let them!!
--- call GLOBAL_lock(_G)
---
---===================================================
-function GLOBAL_lock(t)
- local mt = getmetatable(t) or {}
- mt.__newindex = lock_new_index
- setmetatable(t, mt)
-end
-
---===================================================
--- call GLOBAL_unlock(_G)
--- to change things back to normal.
---===================================================
-function GLOBAL_unlock(t)
- local mt = getmetatable(t) or {}
- mt.__newindex = unlock_new_index
- setmetatable(t, mt)
-end
-
-function lock_new_index(t, k, v)
- if (string.sub(k,1,1) ~= "_") then
- GLOBAL_unlock(_G)
- error("GLOBALS are locked -- " .. k ..
- " must be declared local or prefix with '_' for globals.", 2)
- else
- rawset(t, k, v)
- end
-end
-
-function unlock_new_index(t, k, v)
- rawset(t, k, v)
-end
-
--- return serialised version of printable table
-function Dump_Table(o)
- if type(o) == 'table' then
- local s = '{ '
- for k,v in pairs(o) do
- if type(k) ~= 'number' then k = '"'..k..'"' end
- s = s .. '['..k..'] = ' .. Dump_Table(v) .. ','
- end
- return s .. '} '
- else
- return tostring(o)
- end
-end
-
--- simulate C prinf function
-printf = function(s,...)
- io.write(s:format(...))
- io.write("\n")
- return
-end
-
--- lock global variable
-GLOBAL_lock(_G)
diff --git a/conf.d/project/data/signal-composer-daemon-10-event.lua b/conf.d/project/data/signal-composer-daemon-10-event.lua
deleted file mode 100644
index 7724dec..0000000
--- a/conf.d/project/data/signal-composer-daemon-10-event.lua
+++ /dev/null
@@ -1,74 +0,0 @@
---[[
- Copyright (C) 2016 "IoT.bzh"
- Author Fulup Ar Foll <fulup@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.
-
-
- Provide Sample Timer Handing to push event from LUA
---]]
-
--- Create event on Lua script load
-_MyContext={}
-
--- WARNING: call back are global and should start with '_'
-function _Timer_Test_CB (timer, context)
-
- local evtinfo= AFB:timerget(source, timer)
- printf ("[-- _Timer_Test_C --] evtInfo=%s", Dump_Table(evtinfo))
-
- --send an event an event with count as value
- AFB:evtpush (source, _MyContext["event"], {["label"]= evtinfo["label"], ["count"]=evtinfo["count"], ["info"]=context["info"]})
-
- -- note when timerCB return!=0 timer is kill
- return 0
-
-end
-
--- sendback event depending on count and delay
-function _Simple_Timer_Test (request, client)
-
- local context = {
- ["info"]="My 1st private Event",
- }
-
- -- if event does not exit create it now.
- if (_MyContext["event"] == nil) then
- _MyContext["event"]= AFB:evtmake(source, client["label"])
- end
-
- -- if delay not defined default is 5s
- if (client["delay"]==nil) then client["delay"]=5000 end
-
- -- if count is not defined default is 10
- if (client["count"]==nil) then client["count"]=10 end
-
- -- we could use directly client but it is a sample
- local myTimer = {
- ["label"]=client["label"],
- ["delay"]=client["delay"],
- ["count"]=client["count"],
- }
- AFB:notice (source, "Test_Timer myTimer=%s", myTimer)
-
- -- subscribe to event
- AFB:subscribe (source, request, _MyContext["event"])
-
- -- settimer take a table with delay+count as input (count==0 means infinite)
- AFB:timerset (source, myTimer, "_Timer_Test_CB", context)
-
- -- nothing special to return send back
- AFB:success (source, request, myTimer)
-
- return 0
-end
diff --git a/conf.d/project/data/signal-composer-daemon-04-oncall.lua b/conf.d/project/data/unit-conversion.lua
index a66d71f..a66d71f 100644
--- a/conf.d/project/data/signal-composer-daemon-04-oncall.lua
+++ b/conf.d/project/data/unit-conversion.lua
diff --git a/conf.d/project/etc/control-basic-conf.json b/conf.d/project/etc/control-basic-conf.json
index dd7255f..1331544 100644
--- a/conf.d/project/etc/control-basic-conf.json
+++ b/conf.d/project/etc/control-basic-conf.json
@@ -11,18 +11,18 @@
{
"uid": "low-can-callbacks",
"info": "Manage interaction with low-can service",
- "basename": "low-can"
+ "libs": "low-can.ctlso"
},
{
"uid": "gps-callbacks",
"info": "Manage interaction with gps service",
- "basename": "gps"
+ "libs": "gps.ctlso"
},
{
"uid": "convert",
"info": "LUA fonctions used to convert standard unit.",
"spath": "/tmp",
- "file": "unit-conversion.lua"
+ "libs": "unit-conversion.lua"
}
],
"signals": {
diff --git a/conf.d/project/etc/control-signal-composer.json b/conf.d/project/etc/control-signal-composer.json
index 1734422..3e693f6 100644
--- a/conf.d/project/etc/control-signal-composer.json
+++ b/conf.d/project/etc/control-signal-composer.json
@@ -22,8 +22,7 @@
"uid": "builtin",
"info": "Builtin routine for onReceived or getSignals routines",
"libs": "builtin.ctlso",
- "lua2c": "setSignalValueWrap",
- "lua2c_prefix": "bui"
+ "lua": { "prefix": "composer", "functions": "setSignalValueWrap"}
}
],
"signals": {
diff --git a/conf.d/project/etc/sig-txc.json b/conf.d/project/etc/sig-txc.json
index 9599cce..c9c59cd 100644
--- a/conf.d/project/etc/sig-txc.json
+++ b/conf.d/project/etc/sig-txc.json
@@ -10,8 +10,7 @@
"event": "vehicle_speed"
},
"onReceived": {
- "uri": "lua://convert",
- "function": "_Unit_Converter",
+ "action": "lua://convert#_Unit_Converter",
"args": {
"from": "km/h",
"to": "mi/h"
@@ -104,8 +103,7 @@
"retention": 30,
"unit": "degrees",
"onReceived": {
- "uri": "plugin://gps-callbacks",
- "function": "getHeading"
+ "action": "plugin://gps-callbacks#getHeading"
}
}
]
diff --git a/conf.d/project/etc/sources-txc.json b/conf.d/project/etc/sources-txc.json
index 77bc99b..a460fee 100644
--- a/conf.d/project/etc/sources-txc.json
+++ b/conf.d/project/etc/sources-txc.json
@@ -6,13 +6,11 @@
"api": "txc",
"info": "Use TXC demo binding as signals provider",
"init": {
- "uri": "api://txc",
- "function": "start",
+ "action": "api://txc#start",
"args": {"filename": "var/nyc-downtown-crosstown.json"}
},
"getSignals": {
- "uri": "api://txc",
- "function": "subscribe"
+ "action": "api://txc#subscribe"
}
}
]
diff --git a/ctl-utilities b/ctl-utilities
-Subproject 01295105d39eb96fafa20fea9ef131d0fb8dcab
+Subproject 1ff524bc55b3ff10b7ab2a5f2cafbb41fce2294
diff --git a/plugins/low-can.cpp b/plugins/low-can.cpp
index 5d4ef10..e3b505e 100644
--- a/plugins/low-can.cpp
+++ b/plugins/low-can.cpp
@@ -65,7 +65,9 @@ CTLP_ONLOAD(plugin, composerHandle)
struct signalCBT* handle = (struct signalCBT*)composerHandle;
handle->pluginCtx = (void*)pluginCtx;
- return (void*)handle;
+ plugin->context = (void*)handle;
+
+ return 0;
}
CTLP_CAPI (subscribeToLow, source, argsJ, eventJ) {
diff --git a/signal-composer-binding/signal-composer-binding.cpp b/signal-composer-binding/signal-composer-binding.cpp
index 0d9c8e3..50eb03b 100644
--- a/signal-composer-binding/signal-composer-binding.cpp
+++ b/signal-composer-binding/signal-composer-binding.cpp
@@ -265,7 +265,7 @@ void get(struct afb_req request)
int loadConf()
{
int err = 0;
- std::string bindingDirPath = GetBindingDirPath();
+ std::string bindingDirPath = GetBindingDirPath(nullptr);
std::string rootdir = bindingDirPath + "/etc";
err = Composer::instance().loadConfig(rootdir);
diff --git a/signal-composer-binding/signal-composer.cpp b/signal-composer-binding/signal-composer.cpp
index ce4fe47..4b92f7e 100644
--- a/signal-composer-binding/signal-composer.cpp
+++ b/signal-composer-binding/signal-composer.cpp
@@ -461,7 +461,7 @@ int Composer::loadConfig(std::string& filepath)
if (!dirList) dirList=CONTROL_CONFIG_PATH;
filepath.append(":");
filepath.append(dirList);
- const char *configPath = CtlConfigSearch(nullptr, filepath.c_str(), "control-");
+ const char *configPath = CtlConfigSearch(nullptr, filepath.c_str(), "control");
if (!configPath) {
AFB_ApiError(apiHandle, "CtlPreInit: No control-* config found invalid JSON %s ", filepath.c_str());
diff --git a/signal-composer-binding/source.cpp b/signal-composer-binding/source.cpp
index 6832320..d7a5915 100644
--- a/signal-composer-binding/source.cpp
+++ b/signal-composer-binding/source.cpp
@@ -50,7 +50,7 @@ void SourceAPI::init()
source.uid = init_->uid;
source.api = nullptr; // We use binding v2, no dynamic API.
source.request = {nullptr, nullptr};
- ActionExecOne(&source, init_, nullptr);
+ ActionExecOne(&source, init_, json_object_new_object());
return;
}
else if(api_ == afbBindingV2.api)