{-# LANGUAGE OverloadedRecordDot #-} {-# LANGUAGE OverloadedStrings #-} import Control.IO.Region (region) import Control.Monad.Loops (whileJust_) import Hsm.Drive (DriveEnv, drive, driveEnvDefault) import Hsm.GPIO (allocateGPIO) import Hsm.PWM qualified as P import Hsm.Readline (allocateReadline, readline) newtype Env = Env { driveEnv :: DriveEnv } main :: IO () main = region $ \ioRegion -> do lineRequest <- allocateGPIO ioRegion "test-drive" pwmHandle <- P.allocatePWM ioRegion handle <- allocateReadline ioRegion whileJust_ (readline handle) $ drive pwmHandle lineRequest $ Env driveEnvDefault