policy-device-profile: always consider the stored default profile when re-evaluating

Fixes: #179
This commit is contained in:
George Kiagiadakis 2022-04-25 10:28:24 +03:00
parent 6954105589
commit d7f17104bf

View file

@ -123,28 +123,6 @@ function findBestProfile (device)
return nil
end
function handleActiveProfile (device, dev_id, dev_name)
-- Get active profile
local profile = nil
for p in device:iterate_params("Profile") do
profile = parseParam(p, "Profile")
end
if profile == nil then
Log.info ("Cannot find active profile for device " .. dev_name)
return false
end
-- Update if it has changed
if self.active_profiles[dev_id] == nil or
self.active_profiles[dev_id].index ~= profile.index then
self.active_profiles[dev_id] = profile
Log.info ("Active profile changed to " .. profile.name .. " in " .. dev_name)
return true
end
return false
end
function handleBestProfile (device, dev_id, dev_name)
-- Find best profile
local profile = findBestProfile (device)
@ -168,7 +146,6 @@ function handleProfiles (device, new_device)
local dev_id = device["bound-id"]
local dev_name = device.properties["device.name"]
local active_changed = handleActiveProfile (device, dev_id, dev_name)
local def_profile = findDefaultProfile (device)
-- Do not do anything if active profile is both persistent and default
@ -183,20 +160,16 @@ function handleProfiles (device, new_device)
return
end
-- Set default device if active profile changed to off
if active_changed and self.active_profiles[dev_id] ~= nil and
self.active_profiles[dev_id].name == "off" then
if def_profile ~= nil then
if def_profile.available == "no" then
Log.info ("Default profile " .. def_profile.name .. " unavailable for " .. dev_name)
else
Log.info ("Found default profile " .. def_profile.name .. " for " .. dev_name)
setDeviceProfile (device, dev_id, dev_name, def_profile)
return
end
if def_profile ~= nil then
if def_profile.available == "no" then
Log.info ("Default profile " .. def_profile.name .. " unavailable for " .. dev_name)
else
Log.info ("Default profile not found for " .. dev_name)
Log.info ("Found default profile " .. def_profile.name .. " for " .. dev_name)
setDeviceProfile (device, dev_id, dev_name, def_profile)
return
end
else
Log.info ("Default profile not found for " .. dev_name)
end
-- Otherwise just set the best profile if changed