summaryrefslogtreecommitdiffstats
path: root/conf.d/project/lua.d/init-daemon-04-oncall.lua
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-09-20 16:54:14 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2017-12-14 11:00:25 +0100
commit78202d5bd8a8d09a55bb71b9df6d3f54b18184b8 (patch)
treeafbc89a7c104a70e7771939765309e977a5ab96a /conf.d/project/lua.d/init-daemon-04-oncall.lua
parentb68f95e384aa35b54e453b5e7d09dabf8d82340c (diff)
Make LUA works
- Added LUA library at link - Make app-template crash build if a checked file fails - Fix old defined variable CONTROL_LUA_PATH to a default one in the binding data directory - Add an example with unit conversion made in LUA Change-Id: I1b4712bde32a38044ad6b14ebd38b6782fd01fe9 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'conf.d/project/lua.d/init-daemon-04-oncall.lua')
-rw-r--r--conf.d/project/lua.d/init-daemon-04-oncall.lua117
1 files changed, 117 insertions, 0 deletions
diff --git a/conf.d/project/lua.d/init-daemon-04-oncall.lua b/conf.d/project/lua.d/init-daemon-04-oncall.lua
new file mode 100644
index 0000000..ae16aa7
--- /dev/null
+++ b/conf.d/project/lua.d/init-daemon-04-oncall.lua
@@ -0,0 +1,117 @@
+--[[
+ 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 LUA routines to be used with AGL control "lua_docall" API
+--]]
+
+--global counter to keep track of calls
+_count=0
+
+
+_interval={
+ {"km/h",1}, --the "1" should never really get used but
+ {"mi/h",0.62137119223733},
+ {"m/s",0.27777777777778},
+}
+
+_positions={}
+for i=1,3 do
+ _positions[_interval[i][1]]=i
+end
+
+--function _Unit_Converter(value, sourceunits, targetunits)
+function _Unit_Converter(source, args, event)
+ local value = event["value"]
+ local sourceunits = args["from"]
+ local targetunits = args["to"]
+ local sourcei, targeti = _positions[sourceunits], _positions[targetunits]
+ assert(sourcei and targeti)
+
+ AFB:notice("LUA OnCall Echo Args source=%s args=%s event=%s", source, args, event)
+
+ if sourcei<targeti then
+
+ local base=1
+ for i=sourcei+1,targeti do
+ base=base*_interval[i][2]
+ end
+
+ print("Value in", targetunits, "is", value/base)
+
+ elseif sourcei>targeti then
+
+ local base=1
+ for i=targeti+1,sourcei do
+ base=base*interval[i][2]
+ end
+
+ print("Value in ", targetunits, "is", value*base)
+
+ else
+ print("No conversion")
+ end
+end
+
+-- Display receive arguments and echo them to caller
+function _Simple_Echo_Args (source, args, event)
+ _count=_count+1
+ AFB:notice("LUA OnCall Echo Args count=%d args=%s event=%s", count, args, event)
+
+ print ("--inlua-- source=", Dump_Table(source))
+ print ("--inlua-- args=", Dump_Table(args))
+ print ("--inlua-- event=", Dump_Table(event))
+
+ local response={
+ ["count"]=_count,
+ ["args"]=args,
+ }
+
+ -- fulup Embdeded table ToeDone AFB:success (request, response)
+ -- AFB:success (request, response)
+end
+
+local function Test_Async_CB (request, result, context)
+ response={
+ ["result"]=result,
+ ["context"]=context,
+ }
+
+ AFB:notice ("Test_Async_CB result=%s context=%s", result, context)
+ AFB:success (request, response)
+end
+
+function _Test_Call_Async (request, args)
+ local context={
+ ["value1"]="abcd",
+ ["value2"]=1234
+ }
+
+ AFB:notice ("Test_Call_Async args=%s cb=Test_Async_CB", args)
+ AFB:service("monitor","ping", "Test_Async_CB", context)
+end
+
+function _Simple_Monitor_Call (request, args)
+
+ AFB:notice ("_Simple_Server_Call args=%s", args)
+ local err, result= AFB:servsync ("monitor","get", args)
+ if (err) then
+ AFB:fail ("AFB:service_call_sync fail");
+ else
+ AFB:success (request, result["response"])
+ end
+end
+