From 6c34e8532e026e56666db01a8186a5c06e62780d Mon Sep 17 00:00:00 2001 From: "Adrian C. (anrxc)" Date: Wed, 10 Feb 2010 02:49:26 +0100 Subject: 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". --- thermal.lua | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'thermal.lua') 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} -- cgit v1.2.3