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 | |
parent | 36f8b0e393f8407efa79f383a58e10613d18e959 (diff) |
Move to new Romain controller version
m--------- | app-afb-helpers-submodule | 0 | ||||
m--------- | app-controller-submodule | 0 | ||||
-rw-r--r-- | conf.d/cmake/00-opensuse-osconfig.cmake (renamed from conf.d/cmake/00-suse-osconfig.cmake) | 0 | ||||
-rw-r--r-- | conf.d/project/etc/4a-softmixer-config.json | 84 | ||||
-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 (renamed from conf.d/project/samples/softmixer-multi-01.lua) | 24 | ||||
-rw-r--r-- | conf.d/project/lua.d/softmixer-simple.lua (renamed from conf.d/project/lua.d/softmixer-02.lua) | 41 | ||||
-rw-r--r-- | mixer-binding/mixer-binding.h | 7 | ||||
-rw-r--r-- | nbproject/configurations.xml | 158 | ||||
-rw-r--r-- | plugins/alsa/alsa-api-sndloops.c | 1 | ||||
-rw-r--r-- | plugins/alsa/alsa-plug-vol.c | 82 | ||||
-rw-r--r-- | plugins/alsa/alsa-softmixer.c | 2 | ||||
-rw-r--r-- | plugins/alsa/alsa-softmixer.h | 14 |
14 files changed, 232 insertions, 459 deletions
diff --git a/app-afb-helpers-submodule b/app-afb-helpers-submodule -Subproject ad95795ba872303d24cf2302b039a9068d5b83b +Subproject 70fd3f0ea563220211a5b412ebdab46eb0ce5ed diff --git a/app-controller-submodule b/app-controller-submodule -Subproject 59bbc828469169b518eea036f63f60b5ac8f626 +Subproject e8b0b3c3cc9b0453b88d1315822fda5963754ae diff --git a/conf.d/cmake/00-suse-osconfig.cmake b/conf.d/cmake/00-opensuse-osconfig.cmake index 9f8ce3d..9f8ce3d 100644 --- a/conf.d/cmake/00-suse-osconfig.cmake +++ b/conf.d/cmake/00-opensuse-osconfig.cmake diff --git a/conf.d/project/etc/4a-softmixer-config.json b/conf.d/project/etc/4a-softmixer-config.json index b094f2f..2b4db11 100644 --- a/conf.d/project/etc/4a-softmixer-config.json +++ b/conf.d/project/etc/4a-softmixer-config.json @@ -1,5 +1,5 @@ { - "schema": "To Be Defined", + "schema": "http://iot.bzh/download/public/schema/json/ctl-schema.json", "metadata": { "uid": "Soft Mixer", "version": "1.0", @@ -8,10 +8,12 @@ }, "plugins": [ { - "uid": "alsa-router", - "ldpath": "./plugins/alsa", - "lua2c": ["snd_cards", "snd_zones", "snd_loops", "snd_streams"], - "info": "Map alsa-loop subdevices to 4A HAL streams" + "uid": "alsa-softmixer", + "info": "Map alsa-loop subdevices to 4A HAL streams", + "spath":"./plugins/alsa:../conf.d/project/lua.d", + "file": ["alsa-router.ctlso", "softmixer-simple.lua"], + "lua2c_prefix": "smix", + "lua2c": ["snd_cards", "snd_zones", "snd_loops", "snd_streams"] } ], @@ -19,82 +21,26 @@ { "uid": "init-soft-mixer", "info": "Initialise Audio Router", - "lua": "_init_softmixer_" + "uri": "lua://alsa-softmixer", + "function": "_init_softmixer_" } ], - "sndcards": [ - { - "uid": "Focusrite_Scarlett_18i8", - "info": "Focusrite 18i8", - "device": "/dev/snd/by-id/usb-Focusrite_Scarlett_18i8_USB_10004EE6-00", - "action": { - "uid": "init-snd-card", - "function": "lua://init-focusrite" - }, - "channels": { - "sink": [ - { - "type": "FrontLeftFullRange", - "port": 0 - }, - { - "type": "FrontRightFullRange", - "port": 1 - }, - { - "type": "RearLeftFullRange", - "port": 2 - }, - { - "type": "FrontRightFullRange", - "port": 3 - }, - { - "type": "Center", - "port": 4 - }, - { - "type": "LFE", - "port": 5 - } - ], - "source": [ - { - "uid": "FrontRightMic", - "type": "Directional", - "port": 0 - } - ] - } - } - ], - - "streams": [{ - "uid": "alsa-loop", - "dev": "/dev/snd/by-path/platform-snd_aloop.0", - "subdev": 0, - "count": 8 - }], - "controls": [ { "uid": "mixer-config", - "lua": "_mixer_config_" + "uri": "lua://alsa-softmixer", + "function": "_mixer_config_" }, { "uid": "snd-cards", - "callback": { - "plugin": "alsa-router", - "function": "snd_cards" - } + "uri": "plugin://alsa-softmixer", + "function": "snd_cards" }, { "uid": "snd-zone", - "callback": { - "plugin": "alsa-router", - "function": "snd_zones" - } + "uri": "plugin://alsa-softmixer", + "function": "snd_zones" } ] } 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/samples/softmixer-multi-01.lua b/conf.d/project/lua.d/softmixer-double.lua index 1b8ba02..8f7a20a 100644 --- a/conf.d/project/samples/softmixer-multi-01.lua +++ b/conf.d/project/lua.d/softmixer-double.lua @@ -54,12 +54,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 @@ -106,12 +106,12 @@ function _mixer_config_ (source, args) sndcard_2, } - 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 =================== @@ -151,12 +151,12 @@ function _mixer_config_ (source, args) zone_back, } - 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 ============================ @@ -193,12 +193,12 @@ function _mixer_config_ (source, args) stream_children, } - 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 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 ") diff --git a/mixer-binding/mixer-binding.h b/mixer-binding/mixer-binding.h index 57d4ce9..b60ccee 100644 --- a/mixer-binding/mixer-binding.h +++ b/mixer-binding/mixer-binding.h @@ -27,4 +27,11 @@ #include <ctl-config.h> +#ifndef PUBLIC +#define PUBLIC +#endif +#ifndef STATIC +#define STATIC static +#endif + #endif /* _CTL_BINDING_INCLUDE_ */ diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml index 556d5fb..7ec1f1f 100644 --- a/nbproject/configurations.xml +++ b/nbproject/configurations.xml @@ -3,6 +3,8 @@ <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT"> <df root="." name="0"> <df name="app-afb-helpers-submodule"> + <in>curl-wrap.c</in> + <in>escape.c</in> <in>filescan-utils.c</in> <in>wrap-json.c</in> </df> @@ -23,9 +25,17 @@ </df> <df name="plugins"> <df name="alsa"> + <in>alsa-api-sndcards.c</in> + <in>alsa-api-sndloops.c</in> + <in>alsa-api-sndstreams.c</in> + <in>alsa-api-sndzones.c</in> <in>alsa-capture.c</in> <in>alsa-core-ctl.c</in> <in>alsa-core-pcm.c</in> + <in>alsa-plug-dmix.c</in> + <in>alsa-plug-multi.c</in> + <in>alsa-plug-rate.c</in> + <in>alsa-plug-route.c</in> <in>alsa-plug-stream.c</in> <in>alsa-softmixer.c</in> <in>alsa-utils-bypath.c</in> @@ -76,6 +86,53 @@ <preBuildFirst>true</preBuildFirst> </preBuild> </makefileType> + <item path="app-afb-helpers-submodule/curl-wrap.c" + ex="false" + tool="0" + flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/json-c</pElem> + <pElem>../../../opt/include</pElem> + <pElem>/usr/include/p11-kit-1</pElem> + <pElem>/usr/include/uuid</pElem> + <pElem>../../../opt/include/alsa</pElem> + <pElem>/usr/include/lua5.3</pElem> + <pElem>app-afb-helpers-submodule</pElem> + <pElem>build/app-afb-helpers-submodule</pElem> + </incDir> + <preprocessorList> + <Elem>AFB_BINDING_VERSION=dyn</Elem> + <Elem>CONTROL_CONFIG_PATH="/home/fulup/opt/4a-softmixer/etc:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/etc"</Elem> + <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/Audio-4a/4a-softmixer/conf.d/project/lua.d:/home/fulup/opt/4a-softmixer/data"</Elem> + <Elem>CONTROL_PLUGIN_PATH="/home/fulup/opt/4a-softmixer/lib/plugins:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/lib/plugins"</Elem> + <Elem>CTL_PLUGIN_MAGIC=987456123</Elem> + <Elem>USE_API_DYN=1</Elem> + </preprocessorList> + </cTool> + </item> + <item path="app-afb-helpers-submodule/escape.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/json-c</pElem> + <pElem>../../../opt/include</pElem> + <pElem>/usr/include/p11-kit-1</pElem> + <pElem>/usr/include/uuid</pElem> + <pElem>../../../opt/include/alsa</pElem> + <pElem>/usr/include/lua5.3</pElem> + <pElem>app-afb-helpers-submodule</pElem> + <pElem>build/app-afb-helpers-submodule</pElem> + </incDir> + <preprocessorList> + <Elem>AFB_BINDING_VERSION=dyn</Elem> + <Elem>CONTROL_CONFIG_PATH="/home/fulup/opt/4a-softmixer/etc:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/etc"</Elem> + <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/Audio-4a/4a-softmixer/conf.d/project/lua.d:/home/fulup/opt/4a-softmixer/data"</Elem> + <Elem>CONTROL_PLUGIN_PATH="/home/fulup/opt/4a-softmixer/lib/plugins:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/lib/plugins"</Elem> + <Elem>CTL_PLUGIN_MAGIC=987456123</Elem> + <Elem>USE_API_DYN=1</Elem> + </preprocessorList> + </cTool> + </item> <item path="app-afb-helpers-submodule/filescan-utils.c" ex="false" tool="0" @@ -128,6 +185,17 @@ <cTool flags="1"> </cTool> </item> + <item path="app-controller-submodule/ctl-lib/ctl-lua-utils.c" + ex="false" + tool="0" + flavor2="3"> + <cTool flags="1"> + <incDir> + <pElem>app-controller-submodule/ctl-lib</pElem> + <pElem>build/app-controller-submodule/ctl-lib</pElem> + </incDir> + </cTool> + </item> <item path="app-controller-submodule/ctl-lib/ctl-lua.c" ex="false" tool="0" @@ -165,6 +233,15 @@ <pElem>../../../opt/include</pElem> <pElem>build/app-controller-submodule/ctl-lib</pElem> </incDir> + <preprocessorList> + <Elem>AFB_BINDING_VERSION=dyn</Elem> + <Elem>CONTROL_CONFIG_PATH="/home/fulup/opt/4a-softmixer/etc:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/etc"</Elem> + <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/Audio-4a/4a-softmixer/conf.d/project/lua.d:/home/fulup/opt/4a-softmixer/data"</Elem> + <Elem>CONTROL_PLUGIN_PATH="/home/fulup/opt/4a-softmixer/lib/plugins:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/lib/plugins"</Elem> + <Elem>CONTROL_SUPPORT_LUA</Elem> + <Elem>CTL_PLUGIN_MAGIC=987456123</Elem> + <Elem>USE_API_DYN=1</Elem> + </preprocessorList> </cTool> </folder> <folder path="0/mixer-binding"> @@ -198,10 +275,9 @@ <preprocessorList> <Elem>AFB_BINDING_VERSION=dyn</Elem> <Elem>CONTROL_CONFIG_PATH="/home/fulup/opt/4a-softmixer/etc:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/etc"</Elem> - <Elem>CONTROL_LUA_PATH="/home/fulup/opt/4a-softmixer/data:/home/fulup/Workspace/Audio-4a/4a-softmixer/conf.d/project/lua.d"</Elem> + <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/Audio-4a/4a-softmixer/conf.d/project/lua.d:/home/fulup/opt/4a-softmixer/data"</Elem> <Elem>CONTROL_PLUGIN_PATH="/home/fulup/opt/4a-softmixer/lib/plugins:/home/fulup/Workspace/Audio-4a/4a-softmixer/build/package/lib/plugins"</Elem> <Elem>CTL_PLUGIN_MAGIC=987456123</Elem> - <Elem>NATIVE_LINUX</Elem> <Elem>USE_API_DYN=1</Elem> <Elem>alsa_router_EXPORTS</Elem> </preprocessorList> @@ -211,32 +287,110 @@ <cTool flags="1"> </cTool> </item> + <item path="plugins/alsa/alsa-api-sndcards.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> + <item path="plugins/alsa/alsa-api-sndloops.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> + <item path="plugins/alsa/alsa-api-sndstreams.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> + <item path="plugins/alsa/alsa-api-sndzones.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> <item path="plugins/alsa/alsa-capture.c" ex="false" tool="0" flavor2="2"> <cTool flags="0"> + <preprocessorList> + <Elem>CONTROL_LUA_PATH="/home/fulup/opt/4a-softmixer/data:/home/fulup/Workspace/Audio-4a/4a-softmixer/conf.d/project/lua.d"</Elem> + <Elem>NATIVE_LINUX</Elem> + </preprocessorList> </cTool> </item> <item path="plugins/alsa/alsa-core-ctl.c" ex="false" tool="0" flavor2="2"> <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> </cTool> </item> <item path="plugins/alsa/alsa-core-pcm.c" ex="false" tool="0" flavor2="2"> <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> + <item path="plugins/alsa/alsa-plug-dmix.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> + <item path="plugins/alsa/alsa-plug-multi.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> + <item path="plugins/alsa/alsa-plug-rate.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> + </cTool> + </item> + <item path="plugins/alsa/alsa-plug-route.c" ex="false" tool="0" flavor2="2"> + <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> </cTool> </item> <item path="plugins/alsa/alsa-plug-stream.c" ex="false" tool="0" flavor2="2"> <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> </cTool> </item> <item path="plugins/alsa/alsa-softmixer.c" ex="false" tool="0" flavor2="2"> <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> </cTool> </item> <item path="plugins/alsa/alsa-utils-bypath.c" ex="false" tool="0" flavor2="2"> <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> </cTool> </item> <item path="plugins/alsa/alsa-utils-dump.c" ex="false" tool="0" flavor2="2"> <cTool flags="0"> + <incDir> + <pElem>/usr/include/lua5.3</pElem> + </incDir> </cTool> </item> </conf> diff --git a/plugins/alsa/alsa-api-sndloops.c b/plugins/alsa/alsa-api-sndloops.c index be12c11..cf7bf55 100644 --- a/plugins/alsa/alsa-api-sndloops.c +++ b/plugins/alsa/alsa-api-sndloops.c @@ -139,6 +139,7 @@ OnErrorExit: CTLP_LUA2C(snd_loops, source, argsJ, responseJ) { int error; AlsaSndLoopT *sndLoop = calloc(1, sizeof (AlsaSndLoopT)); + if (json_object_get_type(argsJ) != json_type_object) { AFB_ApiError(source->api, "L2C:sndloops: invalid object type= %s", json_object_get_string(argsJ)); diff --git a/plugins/alsa/alsa-plug-vol.c b/plugins/alsa/alsa-plug-vol.c deleted file mode 100644 index 42d1e0b..0000000 --- a/plugins/alsa/alsa-plug-vol.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2018 "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. - * - */ - -#define _GNU_SOURCE // needed for vasprintf - -#include "alsa-softmixer.h" - -ALSA_PLUG_PROTO(softvol); - -PUBLIC AlsaPcmInfoT* AlsaCreateVol(CtlSourceT *source, const char *pcmName, AlsaPcmInfoT* ctlTarget, AlsaPcmInfoT* pcmSlave) { - - snd_config_t *volConfig, *elemConfig, *slaveConfig, *controlConfig,*pcmConfig; - int error = 0; - AlsaPcmInfoT *pcmPlug= malloc(sizeof(AlsaPcmInfoT)); - pcmPlug->devid= pcmName; - - // refresh global alsalib config and create PCM top config - snd_config_update(); - error += snd_config_top(&volConfig); - error += snd_config_set_id (volConfig, pcmPlug->devid); - error += snd_config_imake_string(&elemConfig, "type", "softvol"); - error += snd_config_add(volConfig, elemConfig); - if (error) goto OnErrorExit; - - // add slave leaf - error += snd_config_make_compound(&slaveConfig, "slave", 0); - error += snd_config_imake_string(&elemConfig, "pcm", pcmSlave->devid); - error += snd_config_add(slaveConfig, elemConfig); - error += snd_config_add(volConfig, slaveConfig); - if (error) goto OnErrorExit; - - // add control leaf - error += snd_config_make_compound(&controlConfig, "control", 0); - error += snd_config_imake_string(&elemConfig, "name", pcmName); - error += snd_config_add(controlConfig, elemConfig); - error += snd_config_imake_integer(&elemConfig, "card", ctlTarget->cardid); - error += snd_config_add(controlConfig, elemConfig); - error += snd_config_add(volConfig, controlConfig); - if (error) goto OnErrorExit; - - // update top config to access previous plugin PCM - snd_config_update(); - - error = _snd_pcm_softvol_open(&pcmPlug->handle, pcmName, snd_config, volConfig, SND_PCM_STREAM_PLAYBACK , SND_PCM_NONBLOCK); - if (error) { - AFB_ApiError(source->api, "AlsaCreateVol: fail to create Plug=%s Slave=%s", pcmPlug->devid, pcmSlave->devid); - goto OnErrorExit; - } - - error += snd_config_search(snd_config, "pcm", &pcmConfig); - error += snd_config_add(pcmConfig, volConfig); - if (!error) { - AFB_ApiError(source->api, "AlsaCreateDmix: fail to add configDMIX=%s", pcmPlug->devid); - goto OnErrorExit; - } - - // Debug config & pcm - AlsaDumpCtlConfig (source, volConfig, 1); - //AlsaDumpPcmInfo(source, pcmPlug->handle, "pcmPlug->handle"); - AFB_ApiNotice(source->api, "AlsaCreateVol: %s done", pcmPlug->devid); - return pcmPlug; - -OnErrorExit: - AFB_ApiNotice(source->api, "AlsaCreateVol: OnErrorExit"); - AlsaDumpCtlConfig(source, volConfig, 1); - return NULL; -}
\ No newline at end of file diff --git a/plugins/alsa/alsa-softmixer.c b/plugins/alsa/alsa-softmixer.c index 23a01dd..033e87b 100644 --- a/plugins/alsa/alsa-softmixer.c +++ b/plugins/alsa/alsa-softmixer.c @@ -22,7 +22,7 @@ // Force Lua2cWrapper inclusion within already existing plugin -CTLP_LUA_REGISTER("alsa-mixer") +CTLP_LUA_REGISTER("alsa-softmixer") SoftMixerHandleT *Softmixer; diff --git a/plugins/alsa/alsa-softmixer.h b/plugins/alsa/alsa-softmixer.h index 3018402..c5f6305 100644 --- a/plugins/alsa/alsa-softmixer.h +++ b/plugins/alsa/alsa-softmixer.h @@ -32,6 +32,13 @@ #include <alsa/asoundlib.h> +#ifndef PUBLIC +#define PUBLIC +#endif +#ifndef STATIC +#define STATIC static +#endif + #define MAINLOOP_WATCHDOG 30000 #define MAX_AUDIO_STREAMS 8*2 #define ALSA_DEFAULT_PCM_RATE 48000 @@ -43,7 +50,12 @@ #define ALSA_PLUG_PROTO(plugin) \ int _snd_pcm_ ## plugin ## _open(snd_pcm_t **pcmp, const char *name, snd_config_t *root, snd_config_t *conf, snd_pcm_stream_t stream, int mode) - +#ifndef PUBLIC +#define PUBLIC +#endif +#ifndef STATIC +#define STATIC static +#endif // alsa-utils-bypath.c |