From 78202d5bd8a8d09a55bb71b9df6d3f54b18184b8 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Wed, 20 Sep 2017 16:54:14 +0200 Subject: 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 --- conf.d/project/lua.d/init-daemon-04-oncall.lua | 117 +++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 conf.d/project/lua.d/init-daemon-04-oncall.lua (limited to 'conf.d/project/lua.d/init-daemon-04-oncall.lua') 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 + + 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 sourceitargeti 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 + -- cgit 1.2.3-korg