diff options
Diffstat (limited to 'src/Main.hs')
-rw-r--r-- | src/Main.hs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/Main.hs b/src/Main.hs new file mode 100644 index 0000000..6b015a2 --- /dev/null +++ b/src/Main.hs @@ -0,0 +1,42 @@ +-- Copyright 2016 Benjamin Barenblat +-- +-- Licensed under the Apache License, Version 2.0 (the “License”); you may not +-- use this file except in compliance with the License. You may obtain a copy +-- of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an “AS IS” BASIS, WITHOUT +-- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +-- License for the specific language governing permissions and limitations under +-- the License. + +module Main where + +import Control.Applicative ((<$>)) +import Control.Concurrent (threadDelay) +import Control.Monad (forever, when) +import Data.Either.Utils (forceEither) +import qualified Config +import qualified Pandora + +main :: IO () +main = do + config <- forceEither <$> Config.load + forever $ do + percent <- Pandora.chargePercent + current <- Pandora.chargeCurrent + chargingEnabled <- Pandora.chargingEnabled + if chargingEnabled + && Config.stopCapacity config <= percent + && 0 < current + && current < Config.stopCurrent config + then Pandora.setCharging False + else when (not chargingEnabled + && percent <= Config.stopCapacity config) $ + Pandora.setCharging True + threadDelay (secondsToMicroseconds 60) + +secondsToMicroseconds :: Int -> Int +secondsToMicroseconds = (* 1000000) |