diff options
author | Adrian C. (anrxc) <anrxc@sysphere.org> | 2010-02-10 02:49:26 +0100 |
---|---|---|
committer | Adrian C. (anrxc) <anrxc@sysphere.org> | 2010-02-10 02:49:26 +0100 |
commit | 6c34e8532e026e56666db01a8186a5c06e62780d (patch) | |
tree | d10e3ca290dbea4afb24701b6fcc1ba3e013d7e5 | |
parent | 355c8385551ce32a78a9c8318392c23aaaa8f5da (diff) | |
download | vicious-legacy-6c34e8532e026e56666db01a8186a5c06e62780d.tar.xz |
thermal: added support for procfs and coretemp
Widget type now takes the thermal zone as an argument, or a table with
1st field as thermal zone and 2nd field as data source. Available data
sources are: "proc" (procfs ACPI), "sys" (sysfs like before) and
"core" (sysfs coretemp). When only the thermal zone is provided widget
defaults to "sys".
-rw-r--r-- | README | 7 | ||||
-rw-r--r-- | thermal.lua | 28 |
2 files changed, 26 insertions, 9 deletions
@@ -148,8 +148,11 @@ vicious.widgets.cpufreq governor state vicious.widgets.thermal - - provides temperature levels of ACPI thermal zones - - takes the thermal zone as an argument, i.e. "thermal_zone0" + - provides temperature levels of ACPI and coretemp thermal zones + - takes the thermal zone as an argument, i.e. "thermal_zone0", or a + table with 1st field as thermal zone and 2nd as data source - + available data sources are "proc", "core" and "sys" - which is the + default when only the zone is provided - returns 1st value as temperature of requested thermal zone vicious.widgets.uptime diff --git a/thermal.lua b/thermal.lua index 4b650fa..a36501c 100644 --- a/thermal.lua +++ b/thermal.lua @@ -4,22 +4,36 @@ --------------------------------------------------- -- {{{ Grab environment +local type = type +local tonumber = tonumber local setmetatable = setmetatable +local string = { match = string.match } local helpers = require("vicious.helpers") -- }}} --- Thermal: provides temperature levels of ACPI thermal zones +-- Thermal: provides temperature levels of ACPI and coretemp thermal zones module("vicious.thermal") -- {{{ Thermal widget type -local function worker(format, thermal_zone) - local thermal = helpers.pathtotable("/sys/class/thermal/"..thermal_zone) - - -- Get ACPI thermal zone - if thermal.temp then - return {thermal.temp / 1000} +local function worker(format, warg) + -- Known temperature data sources + local zone = { + ["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000}, + ["core"] = {"/sys/devices/platform/", file = "temp1_input",div = 1000}, + ["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"} + } -- Default to /sys/class/thermal + local warg = type(warg) == "table" and warg or {warg, "sys"} + local thermal = helpers.pathtotable(zone[warg[2]][1] .. warg[1]) + + -- Get temperature from thermal zone + if thermal[zone[warg[2]].file] then + if zone[warg[2]].div then + return {thermal[zone[warg[2]].file] / zone[warg[2]].div} + else -- /proc/acpi "temperature: N C" + return {tonumber(string.match(thermal[zone[warg[2]].file], "[%d]+"))} + end end return {0} |