[chore] Refactor sysfs_light (#4283)

pull/4288/head
Martín Fernández 6 years ago committed by Frans de Jonge
parent 3fa2dad0b7
commit 29835b3072

@ -36,7 +36,6 @@ local Kobo = Generic:new{
internal_storage_mount_point = "/mnt/onboard/",
-- currently only Aura One has coloured frontlight
hasNaturalLight = no,
frontlight_settings = {},
}
-- TODO: hasKeys for some devices?
@ -69,6 +68,11 @@ local KoboDaylight = Kobo:new{
touch_phoenix_protocol = true,
display_dpi = 300,
hasNaturalLight = yes,
frontlight_settings = {
frontlight_white = "/sys/class/backlight/lm3630a_led1b",
frontlight_red = "/sys/class/backlight/lm3630a_led1a",
frontlight_green = "/sys/class/backlight/lm3630a_ledb",
},
}
-- Kobo Aura H2O:
@ -136,7 +140,6 @@ local KoboSnowRev2 = Kobo:new{
frontlight_settings = {
frontlight_white = "/sys/class/backlight/lm3630a_ledb",
frontlight_red = "/sys/class/backlight/lm3630a_leda",
frontlight_green = "/dev/null",
},
}
@ -192,8 +195,6 @@ local KoboNova = Kobo:new{
-- NOTE: There doesn't appear to be a dedicated "green" LED, instead,
-- there's a knob that mixes the white & red ones together (/sys/class/backlight/lm3630a_led).
-- c.f., https://www.mobileread.com/forums/showpost.php?p=3728236&postcount=2947
-- Because I'm not familiar with sysfs_light.lua, just throw green into the void, and hope for the best...
frontlight_green = "/dev/null",
},
}

@ -1,7 +1,7 @@
local BasePowerD = require("device/generic/powerd")
local NickelConf = require("device/kobo/nickel_conf")
local PluginShare = require("pluginshare")
local SysfsLight = require ("device/kobo/sysfs_light")
local SysfsLight = require ("device/sysfs_light")
local batt_state_folder =
"/sys/devices/platform/pmic_battery.1/power_supply/mc13892_bat/"

@ -1,14 +1,14 @@
-- Interface to the SysFS interface of the Kobo Aura One Frontlight.
-- Generic frontlight SysFS interface.
-- This also supports the natural light, which consists of additional
-- red and green light LEDs.
local logger = require("logger")
local dbg = require("dbg")
local KoboSysfsLight = {
frontlight_white = "/sys/class/backlight/lm3630a_led1b",
frontlight_red = "/sys/class/backlight/lm3630a_led1a",
frontlight_green = "/sys/class/backlight/lm3630a_ledb",
local SysfsLight = {
frontlight_white = nil,
frontlight_red = nil,
frontlight_green = nil,
current_brightness = 0,
current_warmth = 0,
white_gain = 25,
@ -20,7 +20,7 @@ local KoboSysfsLight = {
exponent = 0.25,
}
function KoboSysfsLight:new(o)
function SysfsLight:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
@ -28,27 +28,27 @@ function KoboSysfsLight:new(o)
return o
end
function KoboSysfsLight:setBrightness(brightness)
function SysfsLight:setBrightness(brightness)
self:setNaturalBrightness(brightness, self.current_warmth)
end
dbg:guard(KoboSysfsLight, 'setBrightness',
dbg:guard(SysfsLight, 'setBrightness',
function(self, brightness)
assert(brightness >= 0 and brightness <= 100,
"Wrong brightness value given!")
end)
function KoboSysfsLight:setWarmth(warmth)
function SysfsLight:setWarmth(warmth)
self:setNaturalBrightness(self.current_brightness, warmth)
end
dbg:guard(KoboSysfsLight, 'setWarmth',
dbg:guard(SysfsLight, 'setWarmth',
function(self, warmth)
assert(warmth >= 0 and warmth <= 100,
"Wrong warmth value given!")
end)
function KoboSysfsLight:setNaturalBrightness(brightness, warmth)
function SysfsLight:setNaturalBrightness(brightness, warmth)
if not brightness then
brightness = self.current_brightness
end
@ -84,7 +84,7 @@ function KoboSysfsLight:setNaturalBrightness(brightness, warmth)
self.current_warmth = warmth
end
dbg:guard(KoboSysfsLight, 'setNaturalBrightness',
dbg:guard(SysfsLight, 'setNaturalBrightness',
function(self, brightness, warmth)
assert(brightness >= 0 and brightness <= 100,
"Wrong brightness value given!")
@ -92,7 +92,8 @@ dbg:guard(KoboSysfsLight, 'setNaturalBrightness',
"Wrong warmth value given!")
end)
function KoboSysfsLight:_set_light_value(sysfs_directory, value)
function SysfsLight:_set_light_value(sysfs_directory, value)
if not sysfs_directory then return end
-- bl_power is '31' when the light is turned on, '0' otherwise.
if (value > 0) then
self:_write_value(sysfs_directory .. "/bl_power", 31)
@ -102,7 +103,7 @@ function KoboSysfsLight:_set_light_value(sysfs_directory, value)
self:_write_value(sysfs_directory .. "/brightness", value)
end
function KoboSysfsLight:_write_value(file, value)
function SysfsLight:_write_value(file, value)
local f = io.open(file, "w")
if not f then
logger.err("Could not open file: ", file)
@ -117,4 +118,4 @@ function KoboSysfsLight:_write_value(file, value)
return true
end
return KoboSysfsLight
return SysfsLight
Loading…
Cancel
Save