aboutsummaryrefslogtreecommitdiff
path: root/hsm-bin/Test/Drive.hs
blob: 7a58c116b3276343ef6654a861c32abf856d7cb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{-# 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 (allocatePWM)
import Hsm.Readline (allocateReadline, readline)

newtype Env = Env
  { driveEnv :: DriveEnv
  }

main :: IO ()
main =
  region $ \ioRegion -> do
    lineRequest <- allocateGPIO ioRegion "test-status"
    pwmHandle <- allocatePWM ioRegion $ const 0
    handle <- allocateReadline ioRegion
    whileJust_ (readline handle)
      $ drive lineRequest pwmHandle
      $ Env driveEnvDefault