diff --git a/frontend/device/kobo/device.lua b/frontend/device/kobo/device.lua index 4f60b977e..7393ce6e2 100644 --- a/frontend/device/kobo/device.lua +++ b/frontend/device/kobo/device.lua @@ -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", }, } diff --git a/frontend/device/kobo/powerd.lua b/frontend/device/kobo/powerd.lua index d07d1794e..eb7c9ad2c 100644 --- a/frontend/device/kobo/powerd.lua +++ b/frontend/device/kobo/powerd.lua @@ -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/" diff --git a/frontend/device/kobo/sysfs_light.lua b/frontend/device/sysfs_light.lua similarity index 81% rename from frontend/device/kobo/sysfs_light.lua rename to frontend/device/sysfs_light.lua index 27dd973dd..0252741ed 100644 --- a/frontend/device/kobo/sysfs_light.lua +++ b/frontend/device/sysfs_light.lua @@ -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