aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hsm-command/Hsm/Command/Command.hs4
-rw-r--r--hsm-dummy-blinker/Main.hs2
-rw-r--r--hsm-dummy-fail/Main.hs4
-rw-r--r--hsm-dummy-poller/Main.hs20
-rw-r--r--hsm-dummy-pulser/Main.hs12
-rw-r--r--hsm-dummy-receiver/Main.hs2
-rw-r--r--hsm-gpio/Hsm/GPIO.hs6
-rw-r--r--hsm-status/Main.hs2
8 files changed, 27 insertions, 25 deletions
diff --git a/hsm-command/Hsm/Command/Command.hs b/hsm-command/Hsm/Command/Command.hs
index 902d637..4b5ccea 100644
--- a/hsm-command/Hsm/Command/Command.hs
+++ b/hsm-command/Hsm/Command/Command.hs
@@ -43,8 +43,8 @@ data Speed
deriving (Binary, Generic, Read, Show)
data Command
- = Move Direction Speed Int
- | Rotate Angle Speed Int
+ = Move Direction Speed Word
+ | Rotate Angle Speed Word
deriving (Binary, Generic, Read, Show)
commandStream ::
diff --git a/hsm-dummy-blinker/Main.hs b/hsm-dummy-blinker/Main.hs
index 88b7b5f..9405ae3 100644
--- a/hsm-dummy-blinker/Main.hs
+++ b/hsm-dummy-blinker/Main.hs
@@ -21,7 +21,7 @@ import System.IO.Echo (withoutInputEcho)
data Env = Env
{ name :: Text
, gpio :: [GPIO]
- , period :: Int
+ , period :: Word
}
$(deriveFromYaml ''Env)
diff --git a/hsm-dummy-fail/Main.hs b/hsm-dummy-fail/Main.hs
index b2b8988..785304c 100644
--- a/hsm-dummy-fail/Main.hs
+++ b/hsm-dummy-fail/Main.hs
@@ -21,7 +21,7 @@ import System.IO.Echo (withoutInputEcho)
data Env = Env
{ name :: Text
, pubEp :: Text
- , alive :: Int
+ , alive :: Word
}
$(deriveFromYaml ''Env)
@@ -33,7 +33,7 @@ singleError =
-- Seemingly, the service needs to be alive for a bit for ZMQ comms to
-- kick in.
env <- ask @Env
- threadDelay env.alive
+ threadDelay $ fromIntegral env.alive
return $ message env.name $ Error 0 "Sent from dummy-fail service"
-- Dummy fail service:
diff --git a/hsm-dummy-poller/Main.hs b/hsm-dummy-poller/Main.hs
index bc60c7c..8e6908b 100644
--- a/hsm-dummy-poller/Main.hs
+++ b/hsm-dummy-poller/Main.hs
@@ -23,7 +23,7 @@ data Env = Env
{ name :: Text
, subEps :: [Text]
, topics :: [Text]
- , period :: Int
+ , period :: Word
}
$(deriveFromYaml ''Env)
@@ -32,16 +32,18 @@ handle ::
(Concurrent :> es, Log :> es, Reader Env :> es)
=> S.Stream (Eff es) [ByteString]
-> Eff es ()
-handle =
- S.fold S.drain . S.mapM (\ps -> asks period >>= threadDelay >> handler ps)
+handle = S.fold S.drain . S.mapM handler
where
receiverDomain = "receiver"
- handler [] = localDomain receiverDomain $ logInfo_ "No pulse received yet"
- handler ps =
- forM_ ps $ \p ->
- localDomain receiverDomain
- $ logInfo_
- $ "Received pulse #" <> pack (show $ body @Int p)
+ delay = asks period >>= threadDelay . fromIntegral
+ handler [] = do
+ localDomain receiverDomain $ logInfo_ "No pulse received yet"
+ delay
+ handler ps = do
+ localDomain receiverDomain
+ $ forM_ ps
+ $ logInfo_ . mappend "Received pulse #" . pack . show . body @Word
+ delay
-- Dummy poller service:
-- Proof of concept. Polls for "pulses" through ZMQ at a set interval and
diff --git a/hsm-dummy-pulser/Main.hs b/hsm-dummy-pulser/Main.hs
index cc16cd4..3e2a7ae 100644
--- a/hsm-dummy-pulser/Main.hs
+++ b/hsm-dummy-pulser/Main.hs
@@ -22,16 +22,16 @@ import System.IO.Echo (withoutInputEcho)
data Env = Env
{ name :: Text
, pubEp :: Text
- , period :: Int
- , pulses :: Int
+ , period :: Word
+ , pulses :: Word
}
$(deriveFromYaml ''Env)
pulse :: (Concurrent :> es, Reader Env :> es) => Stream (Eff es) ()
-pulse = repeatM $ asks period >>= threadDelay
+pulse = repeatM $ asks period >>= threadDelay . fromIntegral
-stateRun :: F.FsmState () ByteString Env Int
+stateRun :: F.FsmState () ByteString Env Word
stateRun =
F.FsmState "run" $ \_ env sta ->
if sta < env.pulses
@@ -47,9 +47,9 @@ stateRun =
main :: IO ()
main =
launch @Env "dummy-pulser" withoutInputEcho $ \env logger level ->
- (pulse & F.fsm @_ @_ @Env @Int & send)
+ (pulse & F.fsm @_ @_ @Env @Word & send)
& runServer @Env
- & evalState @Int 1
+ & evalState @Word 1
& evalState stateRun
& runConcurrent
& runLog env.name logger level
diff --git a/hsm-dummy-receiver/Main.hs b/hsm-dummy-receiver/Main.hs
index 6f3db81..6fb78b1 100644
--- a/hsm-dummy-receiver/Main.hs
+++ b/hsm-dummy-receiver/Main.hs
@@ -34,7 +34,7 @@ handle = S.fold S.drain . S.mapM handler
. mappend "Received pulse #"
. pack
. show
- . body @Int
+ . body @Word
-- Dummy receiver service:
-- Proof of concept. Listens for "pulses" through ZMQ and logs each time one
diff --git a/hsm-gpio/Hsm/GPIO.hs b/hsm-gpio/Hsm/GPIO.hs
index bc08ef5..5357167 100644
--- a/hsm-gpio/Hsm/GPIO.hs
+++ b/hsm-gpio/Hsm/GPIO.hs
@@ -59,7 +59,7 @@ stateStr False = "off"
-- To control the pins, I use a subprocess call to `gpioset`. In the future
-- I'd prefer wrapping `libgpiod` directly. It looks like no one has created a
-- C wrapper yet, I might do it if I get bored. :)
-gpioset :: Log :> es => Bool -> Set GPIO -> [Int] -> Eff es ()
+gpioset :: Log :> es => Bool -> Set GPIO -> [Word] -> Eff es ()
gpioset state gpios periods = do
localDomain domain $ logTrace_ $ "Calling command: " <> pack command
E.unsafeEff_ $ callCommand command
@@ -72,7 +72,7 @@ gpioset state gpios periods = do
<> concatMap lineArg (toList gpios)
logReport ::
- (Log :> es, Show key) => Bool -> key -> [Int] -> Set GPIO -> Eff es ()
+ (Log :> es, Show key) => Bool -> key -> [Word] -> Set GPIO -> Eff es ()
logReport state key periods gpios = do
localDomain domain $ logTrace_ report
flushLogger
@@ -91,7 +91,7 @@ toggle ::
(GPIOEffect key :> es, Log :> es, Show key)
=> Bool
-> key
- -> [Int]
+ -> [Word]
-> Eff es ()
toggle state key periods = do
GPIOEffect mapper <- E.getStaticRep
diff --git a/hsm-status/Main.hs b/hsm-status/Main.hs
index ec883ff..634d1d1 100644
--- a/hsm-status/Main.hs
+++ b/hsm-status/Main.hs
@@ -26,7 +26,7 @@ data Env = Env
{ name :: Text
, gpioOk :: GPIO
, gpioError :: GPIO
- , period :: Int
+ , period :: Word
, subEps :: [Text]
, topics :: [Text]
}