aboutsummaryrefslogtreecommitdiff
path: root/hsm-command/Hsm/Command/Command.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hsm-command/Hsm/Command/Command.hs')
-rw-r--r--hsm-command/Hsm/Command/Command.hs49
1 files changed, 0 insertions, 49 deletions
diff --git a/hsm-command/Hsm/Command/Command.hs b/hsm-command/Hsm/Command/Command.hs
deleted file mode 100644
index 53964c4..0000000
--- a/hsm-command/Hsm/Command/Command.hs
+++ /dev/null
@@ -1,49 +0,0 @@
-{-# LANGUAGE DeriveAnyClass #-}
-
-module Hsm.Command.Command
- ( Direction(X, Z)
- , Angle(CW, CCW)
- , Speed(Slow, Mid, Fast)
- , Command(Move, Rotate)
- , commandStream
- ) where
-
-import Data.Binary (Binary)
-import Data.Maybe (fromJust, isJust)
-import Data.Text (pack)
-import Effectful (Eff, (:>))
-import Effectful.Log (Log, logAttention_)
-import GHC.Generics (Generic)
-import Hsm.Command.Readline (Readline, readline)
-import Streamly.Data.Stream qualified as S
-import Text.Read (readEither)
-
-data Direction
- = X
- | Z
- deriving (Binary, Generic, Read, Show)
-
-data Angle
- = CW
- | CCW
- deriving (Binary, Generic, Read, Show)
-
-data Speed
- = Slow
- | Mid
- | Fast
- deriving (Binary, Generic, Read, Show)
-
-data Command
- = Move Direction Speed Int
- | Rotate Angle Speed Int
- deriving (Binary, Generic, Read, Show)
-
-commandStream :: (Log :> es, Readline :> es) => S.Stream (Eff es) Command
-commandStream =
- S.mapMaybeM (parse . fromJust) $ S.takeWhile isJust $ S.repeatM readline
- where
- parse string =
- case readEither string of
- Left err -> logAttention_ (pack err) >> return Nothing
- Right command -> return $ Just command