summaryrefslogtreecommitdiffstats
path: root/conf.d/project/lua.d
diff options
context:
space:
mode:
Diffstat (limited to 'conf.d/project/lua.d')
-rw-r--r--conf.d/project/lua.d/softmixer-00.lua86
-rw-r--r--conf.d/project/lua.d/softmixer-01.lua192
-rw-r--r--conf.d/project/lua.d/softmixer-double.lua223
-rw-r--r--conf.d/project/lua.d/softmixer-simple.lua (renamed from conf.d/project/lua.d/softmixer-02.lua)41
4 files changed, 250 insertions, 292 deletions
diff --git a/conf.d/project/lua.d/softmixer-00.lua b/conf.d/project/lua.d/softmixer-00.lua
deleted file mode 100644
index 29d2c70..0000000
--- a/conf.d/project/lua.d/softmixer-00.lua
+++ /dev/null
@@ -1,86 +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/lua.d/softmixer-01.lua b/conf.d/project/lua.d/softmixer-01.lua
deleted file mode 100644
index b11a252..0000000
--- a/conf.d/project/lua.d/softmixer-01.lua
+++ /dev/null
@@ -1,192 +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: strict mode: every global variables should be prefixed by '_'
---]]
-
--- Static variables should be prefixed with _
-_EventHandle={}
-
--- Call when AlsaCore return HAL active list
-function _AlsaPingCB_ (source, result, context)
-
- AFB:notice (source, "--InLua-- PingCB: result='%s'", Dump_Table(result))
-
-end
-
-
--- Display receive arguments and echo them to caller
-function _mixer_config_ (source, args)
- local error
-
- local sndcard_0 = {
- ["uid"]= "YAMAHA-APU70",
- ["path"]= "/dev/snd/by-id/usb-YAMAHA_Corporation_YAMAHA_AP-U70_USB_Audio_00-00",
- ["sink"] = {
- [0]= {["uid"]= "front-right", ["port"]= 0},
- [1]= {["uid"]= "front-left", ["port"]= 1},
- }
- }
-
- local sndcard_1 = {
- ["uid"]= "Jabra-Solemate",
- ["path"]= "/dev/snd/by-id/usb-0b0e_Jabra_SOLEMATE_v1.34.0-00",
- ["sink"] = {
- [0]= {["uid"]= "front-right", ["port"]= 0},
- [1]= {["uid"]= "front-left", ["port"]= 1},
- }
- }
-
- local sndcard_2 = {
- ["uid"]= "Jabra-410",
- ["path"]= "/dev/snd/by-id/usb-0b0e_Jabra_SPEAK_410_USB_745C4B15BD11x010900-00",
- ["sink"] = {
- [0]= {["uid"]= "back-right", ["port"]= 0},
- [1]= {["uid"]= "back-left", ["port"]= 1},
- }
- }
-
- local snd-aloop = {
- ["uid"]= "Alsa-Loop",
- ["path"]= "/dev/snd/by-path/platform-snd_aloop.0",
- ["capture"] = 1,
- ["playback"]= 0,
- ["subdevs"] = {
- [0]= {["uid"]="musique" ["subdev"]= 0, ["numid"]= 51},
- [1]= {["uid"]="guidance" ["subdev"]= 1, ["numid"]= 57},
- [2]= {["uid"]="emergency" ["subdev"]= 2, ["numid"]= 63},
- [3]= {["uid"]="telephony" ["subdev"]= 3, ["numid"]= 69},
- [4]= {["uid"]="xxxx" ["subdev"]= 4, ["numid"]= 75},
- [5]= {["uid"]="yyyy" ["subdev"]= 5, ["numid"]= 81},
- [6]= {["uid"]="zzzz" ["subdev"]= 6, ["numid"]= 87},
- [7]= {["uid"]="yyyy" ["subdev"]= 7, ["numid"]= 93},
- }
- }
-
- local sndcards= {
- [0] = sndcard_0,
- [1] = sndcard_2,
- }
-
- local zone_front= {
- ["uid"] = "front-seat",
- ["type"] = "playback",
- ["mapping"] = {
- [0]= {["target"]="front-right",["channel"]=0},
- [1]= {["target"]="front-left" ,["channel"]=1},
- }
- }
-
- local zone_back= {
- ["uid"] = "back-seat",
- ["type"] = "playback",
- ["mapping"] = {
- [0]= {["target"]="back-right",["channel"]=0},
- [1]= {["target"]="back-left" ,["channel"]=1},
- }
- }
-
- local zone_all= {
- ["uid"] = "all-seat",
- ["type"] = "playback",
- ["mapping"] = {
- [0]= {["target"]="front-right",["channel"]=0},
- [1]= {["target"]="front-left" ,["channel"]=1},
- [3]= {["target"]="back-right" ,["channel"]=0},
- [4]= {["target"]="back-left" ,["channel"]=1},
- }
- }
-
- local zones = {
- [0] = zone-all,
- [1] = zone-front,
- [2] = zone-back,
- }
-
- local stream_music= {
- ["uid"] = "multimedia",
- ["zone"] = "zone-all",
- ["volume"]= 70,
- ["mute"] = false;
- }
-
- local stream_navigation= {
- ["uid"] = "navigation",
- ["zone"] = "zone-front",
- ["volume"]= 80,
- ["mute"] = false;
- }
-
- local stream_children= {
- ["uid"] = "children",
- ["zone"] = "zone-back",
- ["volume"]= 50,
- ["mute"] = false;
- }
-
- local streams = {
- [0] = stream_music,
- [1] = stream_navigation,
- [2] = stream_children,
- }
-
- local params = {
- ["rate"]= 48000,
- --["rate"]= 44100,
- ["channels"]= 2,
- }
-
-
-
- -- Call AlsaSoftRouter
-
- error= L2C:snd_cards (source, sndcards)
- if (error ~= 0) then
- AFB:error (source, "--InLua-- L2C:sndcards fail to attach sndcards=%s", Dump_Table(sndcards))
- --goto OnErrorExit
- else
- AFB:notice (source, "--InLua-- L2C:sndcards done response=%s", Dump_Table(response))
- end
-
- error= L2C:snd_zones (source, zones)
- if (error ~= 0) then
- AFB:error (source, "--InLua-- L2C:zones fail to attach sndcards=%s", Dump_Table(sndcards))
- --goto OnErrorExit
- else
- AFB:notice (source, "--InLua-- L2C:zones done response=%s", Dump_Table(response))
- end
-
-
- error= L2C:snd_stream (source, {["devin"]= devin, ["devout"]= devout, ["params"]= params})
-
- AFB:notice (source, "--InLua-- _mixer_config_ done")
-
- do return 0 end -- happy end (hoops: lua syntax) --
-
-::OnErrorExit::
- AFB:error (source, "--InLua-- snd_attach fail")
- return 1 end -- unhappy end --
-
--- Display receive arguments and echo them to caller
-function _init_softmixer_ (source, args)
-
- -- create event to push change audio roles to potential listeners
- _EventHandle=AFB:evtmake(source, "control")
-
- _mixer_config_ (source, args)
-
-end
diff --git a/conf.d/project/lua.d/softmixer-double.lua b/conf.d/project/lua.d/softmixer-double.lua
new file mode 100644
index 0000000..8f7a20a
--- /dev/null
+++ b/conf.d/project/lua.d/softmixer-double.lua
@@ -0,0 +1,223 @@
+--[[
+ 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: strict mode: every global variables should be prefixed by '_'
+--]]
+
+-- Static variables should be prefixed with _
+_EventHandle={}
+
+-- Call when AlsaCore return HAL active list
+function _AlsaPingCB_ (source, result, context)
+
+ AFB:notice (source, "--InLua-- PingCB: result='%s'", Dump_Table(result))
+
+end
+
+
+-- Display receive arguments and echo them to caller
+function _mixer_config_ (source, args)
+ do
+ local error
+ local response
+
+
+ -- ======================= Loop PCM ===========================
+
+ local snd_aloop = {
+ ["uid"] = "Alsa-Loop",
+ ["devpath"] = "/dev/snd/by-path/platform-snd_aloop.0",
+ ["devices"] = {["playback"]=0,["capture"]=1},
+ ["subdevs"] = {
+ {["subdev"]= 0, ["numid"]= 51},
+ {["subdev"]= 1, ["numid"]= 57},
+ {["subdev"]= 2, ["numid"]= 63},
+ {["subdev"]= 3, ["numid"]= 69},
+ {["subdev"]= 4, ["numid"]= 75},
+ {["subdev"]= 5, ["numid"]= 81},
+ {["subdev"]= 6, ["numid"]= 87},
+ {["subdev"]= 7, ["numid"]= 93},
+ }
+ }
+
+ error,response= smix:snd_loops (source, snd_aloop)
+ if (error ~= 0) then
+ AFB:error (source, "--InLua-- smix:snd_loops fail to attach sndcards=%s", Dump_Table(aloop))
+ goto OnErrorExit
+ else
+ AFB:notice (source, "--InLua-- smix:snd_loops done response=%s\n", Dump_Table(response))
+ end
+
+
+ -- ============================= Sound Cards ===================
+
+ local snd_params = {
+ ["rate"] = 48000,
+ ["channels"]= 2,
+ }
+
+ local sndcard_0 = {
+ ["uid"]= "YAMAHA-APU70",
+ ["devpath"]= "/dev/snd/by-id/usb-YAMAHA_Corporation_YAMAHA_AP-U70_USB_Audio_00-00",
+ ["params"] = snd_params,
+ ["sink"] = {
+ [0]= {["uid"]= "front-right", ["port"]= 0},
+ [1]= {["uid"]= "front-left", ["port"]= 1},
+ }
+ }
+
+ local sndcard_1 = {
+ ["uid"]= "Jabra-Solemate",
+ ["devpath"]= "/dev/snd/by-id/usb-0b0e_Jabra_SOLEMATE_v1.34.0-00",
+ ["params"] = snd_params,
+ ["sink"] = {
+ [0]= {["uid"]= "front-right", ["port"]= 0},
+ [1]= {["uid"]= "front-left", ["port"]= 1},
+ }
+ }
+
+ local sndcard_2 = {
+ ["uid"]= "Jabra-410",
+ ["params"] = snd_params,
+ ["devpath"]= "/dev/snd/by-id/usb-0b0e_Jabra_SPEAK_410_USB_745C4B15BD11x010900-00",
+ ["sink"] = {
+ [0]= {["uid"]= "back-right", ["port"]= 0},
+ [1]= {["uid"]= "back-left", ["port"]= 1},
+ }
+ }
+
+ -- group sound card as one multi channels card
+ local sndcards= {
+ sndcard_0,
+ sndcard_2,
+ }
+
+ error,response= smix:snd_cards (source, sndcards)
+ if (error ~= 0) then
+ AFB:error (source, "--InLua-- smix:snd_cards fail to attach sndcards=%s", Dump_Table(sndcards))
+ goto OnErrorExit
+ else
+ AFB:notice (source, "--InLua-- smix:snd_cards done response=%s\n", Dump_Table(response))
+ end
+
+ -- ============================= Zones ===================
+
+ local zone_front= {
+ ["uid"] = "front-seats",
+ ["type"] = "playback",
+ ["mapping"] = {
+ {["target"]="front-right",["channel"]=0},
+ {["target"]="front-left" ,["channel"]=1},
+ }
+ }
+
+ local zone_back= {
+ ["uid"] = "back-seats",
+ ["type"] = "playback",
+ ["mapping"] = {
+ {["target"]="back-right",["channel"]=0},
+ {["target"]="back-left" ,["channel"]=1},
+ }
+ }
+
+ local zone_all= {
+ ["uid"] = "all-seats",
+ ["type"] = "playback",
+ ["mapping"] = {
+ {["target"]="front-right",["channel"]=0},
+ {["target"]="front-left" ,["channel"]=1},
+ {["target"]="back-right" ,["channel"]=0},
+ {["target"]="back-left" ,["channel"]=1},
+ }
+ }
+
+ local multi_zones = {
+ zone_all,
+ zone_front,
+ zone_back,
+ }
+
+ error,response= smix:snd_zones (source, multi_zones)
+ if (error ~= 0) then
+ AFB:error (source, "--InLua-- smix:snd_zones fail to attach sndcards=%s", Dump_Table(multi_zones))
+ goto OnErrorExit
+ else
+ AFB:notice (source, "--InLua-- smix:snd_zones done response=%s\n", Dump_Table(response))
+ end
+
+ -- =================== Audio Stream ============================
+
+ local stream_music= {
+ ["uid"] = "multimedia",
+ ["zone"] = "all-seats",
+ ["volume"]= 70,
+ ["params"] = {
+ ["rate"] = 44100,
+ ["rate"] = 48000,
+ ["format"]= "S16_LE",
+ },
+ ["mute"] = false,
+ }
+
+ local stream_navigation= {
+ ["uid"] = "navigation",
+ ["zone"] = "front-seats",
+ ["volume"]= 80,
+ ["mute"] = false,
+ }
+
+ local stream_children= {
+ ["uid"] = "children",
+ ["zone"] = "back-seats",
+ ["volume"]= 50,
+ ["mute"] = false,
+ }
+
+ local snd_streams = {
+ stream_music,
+ stream_navigation,
+ stream_children,
+ }
+
+ error,response= smix:snd_streams (source, snd_streams)
+ if (error ~= 0) then
+ AFB:error (source, "--InLua-- smix:snd_streams fail to attach sndcards=%s", Dump_Table(aloop))
+ goto OnErrorExit
+ else
+ AFB:notice (source, "--InLua-- smix:streams_loops done response=%s\n", Dump_Table(response))
+ end
+
+
+ -- ================== Happy End =============================
+ AFB:notice (source, "--InLua-- _mixer_config_ done")
+ return 0 end
+
+ -- ================= Unhappy End ============================
+ ::OnErrorExit::
+ AFB:error (source, "--InLua-- snd_attach fail")
+ return 1 -- unhappy end --
+end
+
+-- Display receive arguments and echo them to caller
+function _init_softmixer_ (source, args)
+
+ -- create event to push change audio roles to potential listeners
+ _EventHandle=AFB:evtmake(source, "control")
+
+ _mixer_config_ (source, args)
+
+end
diff --git a/conf.d/project/lua.d/softmixer-02.lua b/conf.d/project/lua.d/softmixer-simple.lua
index 5ea52de..9f00ce1 100644
--- a/conf.d/project/lua.d/softmixer-02.lua
+++ b/conf.d/project/lua.d/softmixer-simple.lua
@@ -60,12 +60,12 @@ function _mixer_config_ (source, args)
}
}
- error,response= L2C:snd_loops (source, snd_aloop)
+ error,response= smix:snd_loops (source, snd_aloop)
if (error ~= 0) then
- AFB:error (source, "--InLua-- L2C:snd_loops fail to attach sndcards=%s", Dump_Table(aloop))
+ AFB:error (source, "--InLua-- smix:snd_loops fail to attach sndcards=%s", Dump_Table(aloop))
goto OnErrorExit
else
- AFB:notice (source, "--InLua-- L2C:snd_loops done response=%s\n", Dump_Table(response))
+ AFB:notice (source, "--InLua-- smix:snd_loops done response=%s\n", Dump_Table(response))
end
@@ -81,17 +81,27 @@ function _mixer_config_ (source, args)
}
}
+ local sndcard_1 = {
+ ["uid"]= "Jabra-Solemate",
+ ["devpath"]= "/dev/snd/by-id/usb-0b0e_Jabra_SOLEMATE_v1.34.0-00",
+ ["params"] = snd_params,
+ ["sink"] = {
+ [0]= {["uid"]= "front-right", ["port"]= 0},
+ [1]= {["uid"]= "front-left", ["port"]= 1},
+ }
+ }
+
-- group sound card as one multi channels card
local sndcards= {
- sndcard_0,
+ sndcard_1,
}
- error,response= L2C:snd_cards (source, sndcards)
+ error,response= smix:snd_cards (source, sndcards)
if (error ~= 0) then
- AFB:error (source, "--InLua-- L2C:snd_cards fail to attach sndcards=%s", Dump_Table(sndcards))
+ AFB:error (source, "--InLua-- smix:snd_cards fail to attach sndcards=%s", Dump_Table(sndcards))
goto OnErrorExit
else
- AFB:notice (source, "--InLua-- L2C:snd_cards done response=%s\n", Dump_Table(response))
+ AFB:notice (source, "--InLua-- smix:snd_cards done response=%s\n", Dump_Table(response))
end
-- ============================= Zones ===================
@@ -109,12 +119,12 @@ function _mixer_config_ (source, args)
zone_front,
}
- error,response= L2C:snd_zones (source, multi_zones)
+ error,response= smix:snd_zones (source, multi_zones)
if (error ~= 0) then
- AFB:error (source, "--InLua-- L2C:snd_zones fail to attach sndcards=%s", Dump_Table(multi_zones))
+ AFB:error (source, "--InLua-- smix:snd_zones fail to attach sndcards=%s", Dump_Table(multi_zones))
goto OnErrorExit
else
- AFB:notice (source, "--InLua-- L2C:snd_zones done response=%s\n", Dump_Table(response))
+ AFB:notice (source, "--InLua-- smix:snd_zones done response=%s\n", Dump_Table(response))
end
-- =================== Audio Stream ============================
@@ -138,12 +148,12 @@ function _mixer_config_ (source, args)
stream_navigation,
}
- error,response= L2C:snd_streams (source, snd_streams)
+ error,response= smix:snd_streams (source, snd_streams)
if (error ~= 0) then
- AFB:error (source, "--InLua-- L2C:snd_streams fail to attach sndcards=%s", Dump_Table(aloop))
+ AFB:error (source, "--InLua-- smix:snd_streams fail to attach sndcards=%s", Dump_Table(aloop))
goto OnErrorExit
else
- AFB:notice (source, "--InLua-- L2C:streams_loops done response=%s\n", Dump_Table(response))
+ AFB:notice (source, "--InLua-- smix:streams_loops done response=%s\n", Dump_Table(response))
end
@@ -159,10 +169,13 @@ end
-- Display receive arguments and echo them to caller
function _init_softmixer_ (source, args)
-
+
+ printf ("*********** in print ")
-- create event to push change audio roles to potential listeners
_EventHandle=AFB:evtmake(source, "control")
_mixer_config_ (source, args)
end
+
+printf ("*********** load done ")