From 8271f2c5d540775d5b77ce4e060fc2630101867b Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Sun, 1 Jan 2012 22:38:29 +0100 Subject: Configurable battery power scale --- src/Plugins/Monitors/Batt.hs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Plugins/Monitors/Batt.hs b/src/Plugins/Monitors/Batt.hs index 69ce136..132b5a9 100644 --- a/src/Plugins/Monitors/Batt.hs +++ b/src/Plugins/Monitors/Batt.hs @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Plugins.Monitors.Batt --- Copyright : (c) 2010, 2011 Jose A Ortega +-- Copyright : (c) 2010, 2011, 2012 Jose A Ortega -- (c) 2010 Andrea Rossato, Petr Rockai -- License : BSD-style (see LICENSE) -- @@ -32,6 +32,7 @@ data BattOpts = BattOpts , lowThreshold :: Float , highThreshold :: Float , onlineFile :: FilePath + , scale :: Float } defaultOpts :: BattOpts @@ -45,6 +46,7 @@ defaultOpts = BattOpts , lowThreshold = -12 , highThreshold = -10 , onlineFile = "AC/online" + , scale = 1e6 } options :: [OptDescr (BattOpts -> BattOpts)] @@ -58,6 +60,7 @@ options = , Option "L" ["lowt"] (ReqArg (\x o -> o { lowThreshold = read x }) "") "" , Option "H" ["hight"] (ReqArg (\x o -> o { highThreshold = read x }) "") "" , Option "f" ["online"] (ReqArg (\x o -> o { onlineFile = x }) "") "" + , Option "s" ["scale"] (ReqArg (\x o -> o {scale = read x}) "") "" ] parseOpts :: [String] -> IO BattOpts @@ -117,21 +120,21 @@ haveAc f = handle onError $ withFile (sysDir f) ReadMode (fmap (== "1") . hGetLine) where onError = const (return False) :: SomeException -> IO Bool -readBattery :: Files -> IO Battery -readBattery NoFiles = return $ Battery 0 0 0 -readBattery files = +readBattery :: Float -> Files -> IO Battery +readBattery _ NoFiles = return $ Battery 0 0 0 +readBattery sc files = do a <- grab $ fFull files b <- grab $ fNow files d <- grab $ fCurrent files - return $ Battery (3600 * a / 1e6) -- wattseconds - (3600 * b / 1e6) -- wattseconds - (d / 1e6) -- watts + return $ Battery (3600 * a / sc) -- wattseconds + (3600 * b / sc) -- wattseconds + (d / sc) -- watts where grab f = handle onError $ withFile f ReadMode (fmap read . hGetLine) onError = const (return (-1)) :: SomeException -> IO Float readBatteries :: BattOpts -> [Files] -> IO Result readBatteries opts bfs = - do bats <- mapM readBattery (take 3 bfs) + do bats <- mapM (readBattery (scale opts)) (take 3 bfs) ac <- haveAc (onlineFile opts) let sign = if ac then 1 else -1 ft = sum (map full bats) -- cgit v1.2.3