diff options
author | fulup <fulup.arfoll@iot.bzh> | 2018-05-14 19:59:22 +0200 |
---|---|---|
committer | fulup <fulup.arfoll@iot.bzh> | 2018-05-14 20:02:32 +0200 |
commit | 9f62093c6d4bf084f0e2aac9da60b3020927e938 (patch) | |
tree | 7672c83c7b608ef29927d42c2abbd46bbda42a9b /conf.d/project/lua.d | |
parent | 36f8b0e393f8407efa79f383a58e10613d18e959 (diff) |
Move to new Romain controller version
Diffstat (limited to 'conf.d/project/lua.d')
-rw-r--r-- | conf.d/project/lua.d/softmixer-00.lua | 86 | ||||
-rw-r--r-- | conf.d/project/lua.d/softmixer-01.lua | 192 | ||||
-rw-r--r-- | conf.d/project/lua.d/softmixer-double.lua | 223 | ||||
-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 ") |