summaryrefslogtreecommitdiffstats
path: root/conf.d
diff options
context:
space:
mode:
Diffstat (limited to 'conf.d')
m---------conf.d/app-templates0
-rw-r--r--conf.d/cmake/config.cmake69
-rw-r--r--conf.d/project/alsa.d/asoundrc.sample (renamed from conf.d/alsa-sample/asoundrc.sample)34
-rw-r--r--conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf (renamed from conf.d/alsa-sample/ucm.sample/HDA Intel PCH.conf)0
-rw-r--r--conf.d/project/alsa.d/ucm.sample/HiFi.conf (renamed from conf.d/alsa-sample/ucm.sample/HiFi.conf)0
-rw-r--r--conf.d/project/alsa.d/ucm.sample/README (renamed from conf.d/alsa-sample/ucm.sample/README)0
-rw-r--r--conf.d/project/json.d/CMakeLists.txt (renamed from conf.d/project/config.d/CMakeLists.txt)16
-rw-r--r--conf.d/project/json.d/onload-audio-control.json (renamed from conf.d/project/config.d/onload-audio-control.json)18
-rw-r--r--conf.d/project/json.d/onload-daemon-standalone.json72
-rw-r--r--conf.d/project/lua.d/CMakeLists.txt16
-rw-r--r--conf.d/project/lua.d/doscript-helloworld.lua10
-rw-r--r--conf.d/project/lua.d/onload-aaaa-00-utils.lua86
-rw-r--r--conf.d/project/lua.d/onload-aaaa-01-controls.lua162
-rw-r--r--conf.d/project/lua.d/onload-aaaa-02-timer.lua69
-rw-r--r--conf.d/project/lua.d/onload-aaaa-03-oncall.lua (renamed from conf.d/project/lua.d/onload-audio-oncall.lua)47
-rw-r--r--conf.d/project/lua.d/onload-audio-controls.lua74
-rw-r--r--conf.d/project/lua.d/onload-audio-utils.lua32
-rw-r--r--conf.d/project/lua.d/standalone-sample/onload-daemon-00.lua86
-rw-r--r--conf.d/project/lua.d/standalone-sample/onload-daemon-01.lua57
19 files changed, 618 insertions, 230 deletions
diff --git a/conf.d/app-templates b/conf.d/app-templates
-Subproject 8967162dd12bce89f9ae27f5c9bce7b78624e3f
+Subproject 350c5b97459226f7e031c73edb3a79a2d99cb25
diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake
index 9719711..b5e3a4c 100644
--- a/conf.d/cmake/config.cmake
+++ b/conf.d/cmake/config.cmake
@@ -41,12 +41,6 @@ set(PROJECT_SRC_DIR_PATTERN "[^_]*")
# ----------------------------------
set(CMAKE_BUILD_TYPE "DEBUG")
-# Static constante definition
-# -----------------------------
-add_compile_options(-DMAX_SND_CARD=16) # should be more than enough even in luxury vehicule
-add_compile_options(-DMAX_LINEAR_DB_SCALE=24) # until 24db volume normalisation use a simple linear scale
-add_compile_options(-DTLV_BYTE_SIZE=256) # Alsa use 4096 as default but 256 should fit most sndcards
-
# Compiler selection if needed. Overload the detected compiler.
# -----------------------------------------------
set (gcc_minimal_version 4.9)
@@ -65,30 +59,55 @@ set (PKG_REQUIRED_LIST
lua>=5.3
)
-# Define CONTROL_CDEV_NAME should match MOST driver values
-# ---------------------------------------------------------
- set(LUA_COMPILER "luac5.3" CACHE STRING "LUA syntaxe check")
- add_compile_options(-DCONTROL_ONLOAD_DEFAULT="onload-default")
- add_compile_options(-DCONTROL_MAXPATH_LEN=255)
- add_compile_options(-DCONTROL_DOSCRIPT_PRE="doscript")
- add_compile_options(-DCONTROL_CONFIG_PRE="onload")
- add_compile_options(-DCONTROL_CONFIG_POST="control" )
- add_compile_options(-DCONTROL_CONFIG_PATH="${CMAKE_SOURCE_DIR}/conf.d/project/config.d:${CMAKE_INSTALL_PREFIX}/controler/config.d")
-
- add_compile_options(-DCONTROL_LUA_EVENT="luaevt")
- add_compile_options(-DCONTROL_LUA_PATH="${CMAKE_SOURCE_DIR}/conf.d/project/lua.d:${CMAKE_INSTALL_PREFIX}/controler/ctl-lua.d")
-
- set (CTL_PLUGIN_PRE "ctl-" CACHE STRING "Prefix for Controler share plugin")
- set (CTL_PLUGIN_EXT ".ctlso" CACHE STRING "Postfix for Controler share plugin")
- add_compile_options(-DCTL_PLUGIN_MAGIC=2468013579)
- add_compile_options(-DCONTROL_PLUGIN_PATH="${CMAKE_BINARY_DIR}:${BINDINGS_INSTALL_DIR}/ctlplug:/usr/lib/afb/ctlplug")
-
- add_compile_options(-DUCS2_CFG_PATH="../../unicens2-binding/data:/etc/default/ucs:../data:./data")
+# Controller project needed variables.
+# Compilation options specific to that target set
+# in the CMakeLists.txt of that target to correctly
+# expand variables.
+# ----------------------------------------------------
+set(CONTROL_SUPPORT_LUA 1 CACHE BOOL "Active or not LUA Support")
+set (CTL_PLUGIN_PRE "ctl-" CACHE STRING "Prefix for Controller share plugin")
+set (CTL_PLUGIN_EXT ".ctlso" CACHE STRING "Postfix for Controller share plugin")
+
+# Compilation options definition
+# Use CMake generator expressions to specify only for a specific language
+# Values are prefilled with default options that is currently used.
+# Either separate options with ";", or each options must be quoted separately
+# DO NOT PUT ALL OPTION QUOTED AT ONCE , COMPILATION COULD FAILED !
+# ----------------------------------------------------------------------------
+set(COMPILE_OPTIONS
+-Wall
+-Wextra
+-Wconversion
+-Wno-unused-parameter
+-Wno-sign-compare
+-Wno-sign-conversion
+-Werror=maybe-uninitialized
+-Werror=implicit-function-declaration
+-ffunction-sections
+-fdata-sections
+-fPIC
+# Personal compilation options
+-DMAX_SND_CARD=16 # should be more than enough even in luxury vehicule
+-DMAX_LINEAR_DB_SCALE=24 # until 24db volume normalisation use a simple linear scale
+-DTLV_BYTE_SIZE=256 # Alsa use 4096 as default but 256 should fit most sndcards
+-DCONTROL_MAXPATH_LEN=255
+ CACHE STRING "Compilation flags")
+#set(C_COMPILE_OPTIONS "" CACHE STRING "Compilation flags for C language.")
+#set(CXX_COMPILE_OPTIONS "" CACHE STRING "Compilation flags for C++ language.")
+#set(PROFILING_COMPILE_OPTIONS -g -O0 -pg -Wp,-U_FORTIFY_SOURCE CACHE STRING "Compilation flags for PROFILING build type.")
+#set(DEBUG_COMPILE_OPTIONS -g -ggdb -Wp,-U_FORTIFY_SOURCE CACHE STRING "Compilation flags for DEBUG build type.")
+#set(CCOV_COMPILE_OPTIONS -g -O2 --coverage CACHE STRING "Compilation flags for CCOV build type.")
+#set(RELEASE_COMPILE_OPTIONS -g -O2 CACHE STRING "Compilation flags for RELEASE build type.")
# Print a helper message when every thing is finished
# ----------------------------------------------------
set(CLOSING_MESSAGE "Debug in ./buid: afb-daemon --port=1234 --ldpaths=. --workdir=. --roothttp=../htdocs --tracereq=common --token='' --verbose")
+#set(PACKAGE_MESSAGE "Install widget file using in the target : afm-util install ${PROJECT_NAME}.wgt")
+# Optional location for config.xml.in
+# -----------------------------------
+#set(WIDGET_ICON conf.d/wgt/${PROJECT_ICON} CACHE PATH "Path to the widget icon")
+#set(WIDGET_CONFIG_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/conf.d/wgt/config.xml.in CACHE PATH "Path to widget config file template (config.xml.in)")
# Optional dependencies order
# ---------------------------
diff --git a/conf.d/alsa-sample/asoundrc.sample b/conf.d/project/alsa.d/asoundrc.sample
index 1786c46..b208a09 100644
--- a/conf.d/alsa-sample/asoundrc.sample
+++ b/conf.d/project/alsa.d/asoundrc.sample
@@ -49,12 +49,12 @@ pcm_hook_type.MyHookPlugin {
lib "/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build/Alsa-Plugin/Alsa-Policy-Hook/policy_hook_cb.so"
}
+
# Define a HookedPCM that point to Hook_type sharelib
# ----------------------------------------------------
pcm.MyNavigationHook {
type hooks
slave.pcm "MyMixerPCM"
-
# Defined used hook sharelib and provide arguments/config to install func
hooks.0 {
type "MyHookPlugin"
@@ -66,31 +66,17 @@ pcm.MyNavigationHook {
request {
# Request autorisation to write on navigation
RequestNavigation {
- api "polctl"
- verb "navigation"
- }
- # subscribe to Audio Agent Event
- SubscriveEvents {
- api "polctl"
- verb "monitor"
- }
- TestAutoStop {
- api "polctl"
- verb "event_test"
- query "{'label':'stop', 'delay':10000}"
- }
- TestAutoStart {
- api "polctl"
- verb "event_test"
- query "{'label':'stop', 'delay':20000}"
- }
- # start a test pause/resume not supported by every hardware
- TestPauseResume {
- api "polctl"
- verb "event_test"
- query "{'label':'pause', 'delay':3000, 'count':10}"
+ api "control"
+ verb "dispatch"
+ query "{'target':'navigation', 'args':{'device':'Jabra SOLEMATE v1.34.0'}}"
}
}
+ # map event reception to self generated signal
+ event {
+ pause 30
+ resume 31
+ stop 3
+ }
}
}
}
diff --git a/conf.d/alsa-sample/ucm.sample/HDA Intel PCH.conf b/conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf
index f6608a0..f6608a0 100644
--- a/conf.d/alsa-sample/ucm.sample/HDA Intel PCH.conf
+++ b/conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf
diff --git a/conf.d/alsa-sample/ucm.sample/HiFi.conf b/conf.d/project/alsa.d/ucm.sample/HiFi.conf
index 9a53c8c..9a53c8c 100644
--- a/conf.d/alsa-sample/ucm.sample/HiFi.conf
+++ b/conf.d/project/alsa.d/ucm.sample/HiFi.conf
diff --git a/conf.d/alsa-sample/ucm.sample/README b/conf.d/project/alsa.d/ucm.sample/README
index e7f08ae..e7f08ae 100644
--- a/conf.d/alsa-sample/ucm.sample/README
+++ b/conf.d/project/alsa.d/ucm.sample/README
diff --git a/conf.d/project/config.d/CMakeLists.txt b/conf.d/project/json.d/CMakeLists.txt
index 229cf2d..8070997 100644
--- a/conf.d/project/config.d/CMakeLists.txt
+++ b/conf.d/project/json.d/CMakeLists.txt
@@ -24,17 +24,9 @@ PROJECT_TARGET_ADD(ctl-config.d)
file(GLOB XML_FILES "*.json")
- add_custom_target(${TARGET_NAME}
- DEPENDS ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- )
+ add_input_files("${XML_FILES}")
- # check XML schema before pushing config
- add_custom_command(
- DEPENDS ${XML_FILES}
- OUTPUT ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- # COMMAND xmllint -schema ${XML_SCHEMA} ${XML_FILES} --noout (Fulup we miss this for JSON)
- COMMAND mkdir -p ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- COMMAND touch ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- COMMAND cp -r ${XML_FILES} ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
+ SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
+ LABELS "DATA"
+ OUTPUT_NAME ${TARGET_NAME}
)
-
diff --git a/conf.d/project/config.d/onload-audio-control.json b/conf.d/project/json.d/onload-audio-control.json
index 1a45f99..77a8fce 100644
--- a/conf.d/project/config.d/onload-audio-control.json
+++ b/conf.d/project/json.d/onload-audio-control.json
@@ -8,7 +8,11 @@
"onload": [{
"label": "onload-default",
"info": "onload initialisation config",
- "plugin": "ctl-audio-plugin-sample.ctlso",
+ "plugin": {
+ "label" : "_MyPlug",
+ "sharelib": "ctl-audio-plugin-sample.ctlso",
+ "lua2c": ["Lua2cHelloWorld1", "Lua2cHelloWorld2"]
+ },
"require": ["intel-hda", "jabra-usb", "scarlett-usb"],
"actions": [
{
@@ -24,11 +28,11 @@
"info": "Assert AlsaCore Presence",
"api": "alsacore",
"verb": "ping",
- "args": "test"
+ "args": {"data": "none"}
}, {
"label": "onload-hal-lua",
"info": "Load avaliable HALs",
- "lua": "Audio_Init_Hal"
+ "lua": "_Alsa_Get_Hal"
}
]
}],
@@ -39,20 +43,20 @@
"actions": {
"label": "multimedia-control-lua",
"info": "Call Lua Script function Test_Lua_Engin",
- "lua": "Audio_Set_Multimedia"
+ "lua": "_Audio_Set_Multimedia"
}
}, {
"label": "navigation",
"actions": {
"label": "navigation-control-lua",
"info": "Call Lua Script to set Navigation",
- "lua": "Audio_Set_Navigation"
+ "lua": "_Audio_Set_Navigation"
}
}, {
"label": "emergency",
"actions": {
"label": "emergency-control-ucm",
- "lua": "Audio_Set_Emergency"
+ "lua": "_Audio_Set_Emergency"
}
}, {
"label": "multi-step-sample",
@@ -75,7 +79,7 @@
}, {
"label": "navigation-control-lua",
"info": "Call Lua Script to set Navigation",
- "lua": "Audio_Set_Navigation"
+ "lua": "_Audio_Set_Navigation"
}]
}
],
diff --git a/conf.d/project/json.d/onload-daemon-standalone.json b/conf.d/project/json.d/onload-daemon-standalone.json
new file mode 100644
index 0000000..de52c22
--- /dev/null
+++ b/conf.d/project/json.d/onload-daemon-standalone.json
@@ -0,0 +1,72 @@
+{
+ "$schema": "ToBeDone",
+ "metadata": {
+ "label": "sample-standalone-control",
+ "info": "Minimal Standalone Controller Config",
+ "version": "1.0"
+ },
+ "onload": [{
+ "label": "onload-default",
+ "info": "onload initialisation config",
+ "actions":
+ {
+ "label": "control-init",
+ "lua": "_Control_Init"
+ }
+ }],
+ "controls":
+ [
+ {
+ "label": "Button-1",
+ "actions": {
+ "label": "Action on Button One",
+ "lua": "_Button_Press",
+ "args": {
+ "button": 1
+ }
+ }
+ }, {
+ "label": "Button-1",
+ "actions": {
+ "label": "Action on Button Two",
+ "lua": "_Button_Press",
+ "args": {
+ "button": 2
+ }
+ }
+ }, {
+ "label": "Button-1",
+ "actions": {
+ "label": "Action on Button Three",
+ "lua": "_Button_Press",
+ "args": {
+ "button": 3
+ }
+ }
+ }
+ ],
+ "events":
+ [
+ {
+ "label": "Event1",
+ "actions": {
+ "label": "Action Event 1",
+ "lua": "_Event_Received",
+ "args": {
+ "evtname": "xxx"
+ }
+ }
+ },
+ {
+ "label": "Event2",
+ "actions": {
+ "label": "Action Event 2",
+ "lua": "_Event_Received",
+ "args": {
+ "evtname": "yyy"
+ }
+ }
+ }
+ ]
+}
+
diff --git a/conf.d/project/lua.d/CMakeLists.txt b/conf.d/project/lua.d/CMakeLists.txt
index ecf1e6d..5cd61f2 100644
--- a/conf.d/project/lua.d/CMakeLists.txt
+++ b/conf.d/project/lua.d/CMakeLists.txt
@@ -24,17 +24,9 @@ PROJECT_TARGET_ADD(ctl-lua.d)
file(GLOB LUA_FILES "*.lua")
- add_custom_target(${TARGET_NAME}
- DEPENDS ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- )
+ add_input_files("${LUA_FILES}")
- # check XML schema before pushing config
- add_custom_command(
- DEPENDS ${LUA_FILES}
- OUTPUT ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- COMMAND ${LUA_COMPILER} ${LUA_FILES}
- COMMAND mkdir -p ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- COMMAND touch ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
- COMMAND cp -r ${LUA_FILES} ${PROJECT_PKG_BUILD_DIR}/${TARGET_NAME}
+ SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
+ LABELS "DATA"
+ OUTPUT_NAME ${TARGET_NAME}
)
-
diff --git a/conf.d/project/lua.d/doscript-helloworld.lua b/conf.d/project/lua.d/doscript-helloworld.lua
index b70ba8d..a06c3db 100644
--- a/conf.d/project/lua.d/doscript-helloworld.lua
+++ b/conf.d/project/lua.d/doscript-helloworld.lua
@@ -21,16 +21,16 @@
--]]
-function helloworld (request, query)
+local function helloworld (request, query)
- AFB:notice ("LUA HelloWorld: simple test query=%s", query);
+ AFB:notice ("LUA HelloWorld: Simple test query=%s", query);
if (query == nil) then
- AFB:error ("LUA HelloWorld:FX query should not be empty");
+ AFB:notice ("LUA HelloWorld:FX query should not be empty");
AFB:fail (request, "LUA HelloWorld: query should not be empty");
else
- AFB:error ("LUA HelloWorld:OK query=%s", query);
- AFB:sucess (request, {arg0="Demat", arg1="Bonjours", arg2="Gootentag", arg3="Morning"});
+ AFB:notice ("LUA HelloWorld:OK query=%s", query);
+ AFB:success (request, {arg0="Demat", arg1="Bonjours", arg2="Gootentag", arg3="Morning"});
end
end \ No newline at end of file
diff --git a/conf.d/project/lua.d/onload-aaaa-00-utils.lua b/conf.d/project/lua.d/onload-aaaa-00-utils.lua
new file mode 100644
index 0000000..b8ecd7e
--- /dev/null
+++ b/conf.d/project/lua.d/onload-aaaa-00-utils.lua
@@ -0,0 +1,86 @@
+--[[
+ 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/lua.d/onload-aaaa-01-controls.lua b/conf.d/project/lua.d/onload-aaaa-01-controls.lua
new file mode 100644
index 0000000..24c4f71
--- /dev/null
+++ b/conf.d/project/lua.d/onload-aaaa-01-controls.lua
@@ -0,0 +1,162 @@
+--[[
+ 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 policy function for AGL Advance Audio Agent
+--]]
+
+-- Global HAL registry
+_Audio_Hal_Registry={}
+
+-- Callback when receiving HAL registry
+function _Alsa_Get_Hal_CB (error, result, context)
+ -- Initialise an empty table
+ local registry={}
+
+ -- Only process when response is valid
+ if (error) then
+ AFB_ErrOr ("[Audio_Init_CB] ErrOr result=%s", result)
+ return
+ end
+
+ -- Extract response from result
+ local response=result["response"]
+
+ -- Index HAL Bindings APIs by shortname
+ for key,value in pairs(response) do
+ registry[value["shortname"]]=value["api"]
+ end
+
+ -- store Exiting HAL for further use
+ printf ("-- [Audio_Init_CB] -- Audio_register_Hal=%s", Dump_Table(registry))
+ _Audio_Hal_Registry=registry
+
+end
+
+-- Function call at binding load time
+function _Alsa_Get_Hal(args)
+
+ printf ("[-- Audio_Get_Hal --] args=%s", Dump_Table(argsT))
+
+ -- Query AlsaCore for Active HALs (no query, no context)
+ AFB:service ('alsacore', 'hallist', {}, "_Alsa_Get_Hal_CB", {})
+
+end
+
+-- In sample configuration Query/Args parsing is common to all audio control
+local function Audio_Parse_Request (source, args, query)
+
+ local apihal={}
+
+ -- In this test we expect targeted device to be given from query (could come for args as well)
+ if (query == nil ) then
+ AFB:error ("--LUA:Audio_Set_Navigation query should contain and args with targeted apihal|device")
+ return -- refuse control
+ end
+
+ -- Alsa Hook plugin asound sample config provides target sound card by name
+ if (query["device"] ~= nil) then
+ apihal=_Audio_Hal_Registry[query["device"]]
+ end
+
+ -- HTML5 test page provides directly HAL api.
+ if (query["apihal"] ~= nil) then
+ apihal= query["apihal"]
+ end
+
+ -- if requested HAL is not found then deny the control
+ if (apihal == nil) then
+ AFB:error ("--LUA:Audio_Set_Navigation No Active HAL Found")
+ return -- refuse control
+ end
+
+ -- return api or nil when not found
+ return apihal
+end
+
+-- Set Navigation lower sound when play
+function _Audio_Set_Navigation(source, args, query)
+
+ -- in strict mode every variables should be declared
+ local err=0
+ local ctlhal={}
+ local response={}
+ local apihal={}
+
+ AFB:notice ("LUA:Audio_Set_Use_Case source=%d args=%s query=%s", source, args, query);
+
+ -- Parse Query/Args and if HAL not found then refuse access
+ apihal= Audio_Parse_Request (source, args, query)
+ if (apihal == nil) then return 1 end
+
+
+ -- if source < 0 then Alsa HookPlugin is closing PCM
+ if (source < 0) then
+ -- Ramp Up Multimedia channel synchronously
+ ctlhal={['label']='Master_Playback_Volume', ['val']=100}
+ err, response= AFB:servsync (apihal, 'ctlset',ctlhal)
+ else
+ -- Ramp Down Multimedia channel synchronously
+ ctlhal={['label']='Master_Playback_Volume', ['val']=50}
+ err, response= AFB:servsync (apihal, 'ctlset',ctlhal)
+ end
+
+ if (err) then
+ AFB:error("--LUA:Audio_Set_Navigation halapi=%s refuse ctl=%s", apihal, ctlhal)
+ return 1 -- control refused
+ end
+
+
+ return 0 -- control accepted
+end
+
+
+-- Select Multimedia mode
+function _Audio_Set_Multimedia (source, args, query)
+
+ -- in strict mode every variables should be declared
+ local err=0
+ local ctlhal={}
+ local response={}
+ local apihal={}
+
+ AFB:notice ("LUA:Audio_Set_Use_Case source=%d args=%s query=%s", source, args, query);
+
+ -- Parse Query/Args and if HAL not found then refuse access
+ apihal= Audio_Parse_Request (source, args, query)
+ if (apihal == nil) then return 1 end
+
+
+ -- if Mumtimedia control only increase volume on open
+ if (source >= 0) then
+ -- Ramp Down Multimedia channel synchronously
+ ctlhal={['label']='Master_Playback_Volume', ['val']=100}
+ err, response= AFB:servsync (apihal, 'ctlset',ctlhal)
+ end
+
+ if (err) then
+ AFB:error("--LUA:Audio_Set_Navigation halapi=%s refuse ctl=%s", apihal, ctlhal)
+ return 1 -- control refused
+ end
+
+
+ return 0 -- control accepted
+end
+
+-- Select Emergency Mode
+function _Audio_Set_Emergency(source, args, query)
+ return 1 -- Always refuse in this test
+end
diff --git a/conf.d/project/lua.d/onload-aaaa-02-timer.lua b/conf.d/project/lua.d/onload-aaaa-02-timer.lua
new file mode 100644
index 0000000..db7a937
--- /dev/null
+++ b/conf.d/project/lua.d/onload-aaaa-02-timer.lua
@@ -0,0 +1,69 @@
+--[[
+ 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
+local MyEventHandle=AFB:evtmake("MyTestEvent")
+
+-- Call count time every delay/ms
+local function Timer_Test_CB (timer, context)
+
+ local evtinfo= AFB:timerget(timer)
+ print ("timer=", Dump_Table(evtinfo))
+
+ --send an event an event with count as value
+ AFB:evtpush (MyEventHandle, {["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, args)
+
+ local context = {
+ ["info"]="My 1st private Event",
+ }
+
+ -- if delay not defined default is 5s
+ if (args["delay"]==nil) then args["delay"]=5000 end
+
+ -- if count is not defined default is 10
+ if (args["count"]==nil) then args["count"]=10 end
+
+ -- we could use directly args but it is a sample
+ local myTimer = {
+ ["label"]=args["label"],
+ ["delay"]=args["delay"],
+ ["count"]=args["count"],
+ }
+ AFB:notice ("Test_Timer myTimer=%s", myTimer)
+
+ -- subscribe to event
+ AFB:subscribe (request, MyEventHandle)
+
+ -- settimer take a table with delay+count as input (count==0 means infinite)
+ AFB:timerset (myTimer, "Timer_Test_CB", context)
+
+ -- nothing special to return send back args
+ AFB:success (request, myTimer)
+
+ return 0
+end
diff --git a/conf.d/project/lua.d/onload-audio-oncall.lua b/conf.d/project/lua.d/onload-aaaa-03-oncall.lua
index 13cda4b..23b538e 100644
--- a/conf.d/project/lua.d/onload-audio-oncall.lua
+++ b/conf.d/project/lua.d/onload-aaaa-03-oncall.lua
@@ -18,18 +18,18 @@
Provide sample LUA routines to be used with AGL control "lua_docall" API
--]]
--- global counter to keep track of calls
-count=0
+--global counter to keep track of calls
+_count=0
-- Display receive arguments and echo them to caller
-function Simple_Echo_Args (request, args)
- count=count+1
+function _Simple_Echo_Args (request, args)
+ _count=_count+1
AFB:notice("LUA OnCall Echo Args count=%d args=%s", count, args)
print ("--inlua-- args=", Dump_Table(args))
local response={
- ["count"]=count,
+ ["count"]=_count,
["args"]=args,
}
@@ -37,7 +37,7 @@ function Simple_Echo_Args (request, args)
AFB:success (request, {["func"]="Simple_Echo_Args", ["ret1"]=5678, ["ret2"]="abcd"})
end
-function Test_Async_CB (request, result, context)
+local function Test_Async_CB (request, result, context)
response={
["result"]=result,
["context"]=context,
@@ -47,7 +47,7 @@ function Test_Async_CB (request, result, context)
AFB:success (request, response)
end
-function Test_Call_Async (request, args)
+function _Test_Call_Async (request, args)
local context={
["value1"]="abcd",
["value2"]=1234
@@ -57,7 +57,7 @@ function Test_Call_Async (request, args)
AFB:service("alsacore","ping", "Test_Async_CB", context)
end
-function Test_Call_Sync (request, args)
+function _Test_Call_Sync (request, args)
AFB:notice ("Test_Call_Sync args=%s", args)
local err, response= AFB:service_sync ("alsacore","ping", args)
@@ -68,34 +68,3 @@ function Test_Call_Sync (request, args)
end
end
--- create a new event name
-function Test_Event_Make (request, args)
-
- AFB:notice ("Test_Event_Make args=%s", args)
-
- local err evt_handle= AFB:event (args["evtname"])
- if (err) then
- AFB:fail ("AFB:Test_Event_Make fail event=%s", args["evtname"]);
- else
- AFB:success (request, {})
- end
-
- local evtData = {
- ["val1"]="My 1st private Event",
- ["val2"]=5678
- }
-
- AFB:notify (evt_handle, evtData)
-end
-
--- send an event on default binder event
-function Test_Event_Notify (request, args)
-
- AFB:notice ("Test_Event_Notify args=%s", args)
- local err AFB:notify (args)
- if (err) then
- AFB:fail ("AFB:Test_Event_Make fail event=%s", args["evtname"]);
- else
- AFB:success (request, {})
- end
-end
diff --git a/conf.d/project/lua.d/onload-audio-controls.lua b/conf.d/project/lua.d/onload-audio-controls.lua
deleted file mode 100644
index b6fd811..0000000
--- a/conf.d/project/lua.d/onload-audio-controls.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 policy function for AGL Advance Audio Agent
---]]
-
-function Audio_Init_CB (status, result, context)
- print ("--inlua:Audio_Init_CB-- result=", Dump_Table(result))
- print ("--inlua:Audio_Init_CB-- context=", Dump_Table(context))
-
-
- -- AFB:notice ("Audio_Init_Hal result='%s' context='%s'", result, context)
- -- AFB:debug ("Audio_Init_Hal result=%s context=%s", {["ret1"]=5678, ["ret2"]="abcd"}, context)
-
-end
-
--- Function call at binding load time
-function Audio_Init_Hal(args, query)
-
- local nextT = {
- ["next1"]=1234,
- ["next2"]="nested",
- ["next3"]=9999,
- }
-
- local response = {
- ["arg1"]=1234,
- ["arg2"]=nextT,
- ["arg3"]=5678,
- }
-
- print ("--inlua:Audio_Init-- response=", Dump_Table(response))
-
- AFB:notice ("**** in-lua table='%s' ****", response)
-
-
- AFB:notice ("--LUA:Audio_Init_Hal args=%s query=%s", args, query);
-
- -- query asynchronously loaded HAL
- AFB:service ('alsacore', 'hallist', {}, "Audio_Init_CB", {arg1=1234, arg2="toto"})
-
-end
-
-function Audio_Set_Navigation(args, query)
-
- AFB:notice ("LUA:Audio_Set_Use_Case args=%s query=%s", args, query);
-
- -- synchronous call to alsacore service
- local error,data= AFB:callsync ('alsacore', 'ping', {})
- if (error) then
- AFB:error ("LUA:Audio_Set_Use_Case FAIL args=%s", args)
- else
- AFB:notice ("--LUA:Audio_Set_Use_Case DONE args=%s response=%s", args, data["response"])
- end
-
- -- return OK
- return 0
-end
-
-
diff --git a/conf.d/project/lua.d/onload-audio-utils.lua b/conf.d/project/lua.d/onload-audio-utils.lua
deleted file mode 100644
index 40ef8a3..0000000
--- a/conf.d/project/lua.d/onload-audio-utils.lua
+++ /dev/null
@@ -1,32 +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.
-
---]]
-
-
--- 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
diff --git a/conf.d/project/lua.d/standalone-sample/onload-daemon-00.lua b/conf.d/project/lua.d/standalone-sample/onload-daemon-00.lua
new file mode 100644
index 0000000..b8ecd7e
--- /dev/null
+++ b/conf.d/project/lua.d/standalone-sample/onload-daemon-00.lua
@@ -0,0 +1,86 @@
+--[[
+ 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/lua.d/standalone-sample/onload-daemon-01.lua b/conf.d/project/lua.d/standalone-sample/onload-daemon-01.lua
new file mode 100644
index 0000000..7b22db0
--- /dev/null
+++ b/conf.d/project/lua.d/standalone-sample/onload-daemon-01.lua
@@ -0,0 +1,57 @@
+--[[
+ 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
+
+--]]
+
+-- Set Navigation lower sound when play
+function _Control_Init(source, args)
+
+ -- in strict mode every variables should be declared
+ local err=0
+
+ AFB:notice ("Control_Init args=%s", args);
+
+ return 0 -- control accepted
+end
+
+-- Set Navigation lower sound when play
+function _Button_Press(source, args, query)
+
+ -- in strict mode every variables should be declared
+ local err=0
+
+ AFB:notice ("Button_Press button=%s", args["button"]);
+
+ return 0 -- control accepted
+end
+
+-- Set Navigation lower sound when play
+function _Event_Received(source, args, query)
+
+ -- in strict mode every variables should be declared
+ local err=0
+
+ AFB:notice ("Event_Received event=%s", args["evtname"]);
+
+ return 0 -- control accepted
+end
+