From ecb3f46642e19b79d38c5dbc1ce2269040b13ec4 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Sat, 10 Dec 2011 16:48:11 +0100 Subject: Fix for issue #62 (battery monitor on olpc hardware) --- src/Plugins/Monitors/Batt.hs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Plugins/Monitors/Batt.hs b/src/Plugins/Monitors/Batt.hs index 77b2d62..662ff43 100644 --- a/src/Plugins/Monitors/Batt.hs +++ b/src/Plugins/Monitors/Batt.hs @@ -34,6 +34,7 @@ data BattOpts = BattOpts , lowThreshold :: Float , highThreshold :: Float , onlineFile :: FilePath + , chargeFile :: FilePath } defaultOpts :: BattOpts @@ -47,6 +48,7 @@ defaultOpts = BattOpts , lowThreshold = -12 , highThreshold = -10 , onlineFile = "AC/online" + , chargeFile = "charge_full" } options :: [OptDescr (BattOpts -> BattOpts)] @@ -60,6 +62,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 "c" ["charge"] (ReqArg (\x o -> o { chargeFile = x }) "") "" ] parseOpts :: [String] -> IO BattOpts @@ -96,8 +99,8 @@ safeFileExist :: String -> IO Bool safeFileExist f = handle noErrors $ fileExist f where noErrors = const (return False) :: SomeException -> IO Bool -batteryFiles :: String -> IO Files -batteryFiles bat = +batteryFiles :: String -> String -> IO Files +batteryFiles charge_file bat = do is_charge <- safeFileExist $ prefix "charge_now" is_energy <- safeFileExist $ prefix "energy_now" is_current <- safeFileExist $ prefix "current_now" @@ -107,7 +110,7 @@ batteryFiles bat = (_, True) -> files "energy" cf _ -> NoFiles where prefix = sysDir bat - files ch cf = Files { fFull = prefix ch ++ "_full" + files ch cf = Files { fFull = prefix charge_file , fNow = prefix ch ++ "_now" , fCurrent = prefix cf , fVoltage = prefix "voltage_now" } @@ -151,7 +154,7 @@ runBatt = runBatt' ["BAT0","BAT1","BAT2"] runBatt' :: [String] -> [String] -> Monitor String runBatt' bfs args = do opts <- io $ parseOpts args - c <- io $ readBatteries opts =<< mapM batteryFiles bfs + c <- io $ readBatteries opts =<< mapM (batteryFiles (chargeFile opts)) bfs case c of Result x w t s -> do l <- fmtPercent x -- cgit v1.2.3