summaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs42
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)