test-lib.lua: add support of default device selection

This commit is contained in:
Ashok Sidipotu 2023-01-05 17:04:10 +05:30 committed by Julian Bouzas
parent de24f7a432
commit db4ace420c

View file

@ -35,7 +35,6 @@ function u.createDeviceNode (name, media_class)
u.lnkbls [name] = nil
u.lnkbl_count = u.lnkbl_count + 1
end)
return node
end
@ -45,4 +44,48 @@ function u.createStreamNode (name)
u.lnkbl_count = u.lnkbl_count + 1
end
u.metadata = cu.default_metadata_om:lookup ()
assert (u.metadata ~= nil)
-- hook to keep track of the linkables created.
SimpleEventHook {
name = "test-utils-linking",
interests = {
-- on linkable added or removed, where linkable is adapter or plain node
EventInterest {
Constraint { "event.type", "=", "session-item-added" },
Constraint { "event.session-item.interface", "=", "linkable" },
Constraint { "item.factory.name", "c", "si-audio-adapter", "si-node" },
},
},
execute = function (event)
local lnkbl = event:get_subject ()
local lp = lnkbl.properties
local name = lp ["node.name"]
Log.info (lnkbl, "activated linkable: " .. name ..
" with media_class: " .. lp ["media.class"])
if not u.lnkbls [name] then
u.lnkbls [name] = lnkbl
else
Log.info ("unknown linkable " .. name)
end
if name == "default-device-node" then
local args = { ["name"] = name }
local args_json = Json.Object (args)
local key = nil
if lp ["media.class"] == "Audio/Sink" then
key = "default.configured.audio.sink"
elseif lp ["media.class"] == "Audio/Source" then
key = "default.configured.audio.source"
end
-- configure default device.
u.metadata:set (0, key, "Spa:String:JSON", args_json:get_data ())
end
end
}:register ()
return u