| Server IP : 162.214.67.83 / Your IP : 216.73.217.31 Web Server : Apache System : Linux dedi-13542965.clustter.com.br 5.14.0-687.20.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jun 30 06:22:49 EDT 2026 x86_64 User : jforte ( 1063) PHP Version : 8.2.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/wireplumber/scripts/device/ |
Upload File : |
-- WirePlumber
--
-- Copyright © 2022 Collabora Ltd.
-- Copyright © 2025 Richard Acayan
--
-- SPDX-License-Identifier: MIT
--
-- Find the best Voice Call profile for a device if there is an active call
-- (adapted from device/find-best-profile.lua)
cutils = require ("common-utils")
log = Log.open_topic ("s-device")
started = false
alsa_devs_om = ObjectManager {
Interest {
type = "device",
Constraint { "device.api", "=", "alsa" },
}
}
mm = Plugin.find ("modem-manager")
mm:connect ("voice-call-start", function ()
started = true
source = source or Plugin.find ("standard-event-source")
for device in alsa_devs_om:iterate () do
event = source:call ("push-event", "select-profile", device, nil)
end
end)
mm:connect ("voice-call-stop", function ()
started = false
source = source or Plugin.find ("standard-event-source")
for device in alsa_devs_om:iterate () do
event = source:call ("push-event", "select-profile", device, nil)
end
end)
SimpleEventHook {
name = "device/find-calling-profile",
before = "device/find-stored-profile",
interests = {
EventInterest {
Constraint { "event.type", "=", "select-profile" },
},
},
execute = function (event)
local selected_profile = event:get_data ("selected-profile")
if selected_profile then
return
end
if not started then
return
end
local device = event:get_subject ()
local dev_name = device.properties["device.name"] or ""
for p in device:iterate_params ("EnumProfile") do
local profile = cutils.parseParam (p, "EnumProfile")
local found = string.find (profile.name, "^Voice Call")
if profile.available == "yes" and found ~= nil then
if (not selected_profile) or selected_profile.priority < profile.priority then
selected_profile = profile
end
end
end
if selected_profile then
log:info (device, string.format (
"Found calling profile '%s' (%d) for device %s",
selected_profile.name, selected_profile.index, dev_name))
event:set_data ("selected-profile", selected_profile)
end
end
}:register ()
alsa_devs_om:activate ()