diff options
Diffstat (limited to 'hsm-command/Hsm/Command/Command.hs')
-rw-r--r-- | hsm-command/Hsm/Command/Command.hs | 49 |
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 |