module Bindings.K8055.DigitalIn (
DigitalInput(..),
readDigitalChannel,
readAllDigital
) where
import Data.Word
import Foreign.C
data DigitalInput
= DigitalIn1
| DigitalIn2
| DigitalIn3
| DigitalIn4
| DigitalIn5
| DigitalIn6
| DigitalIn7
| DigitalIn8
digitalInputId :: Num a => DigitalInput -> a
digitalInputId input =
case input of
DigitalIn1 -> 1
DigitalIn2 -> 2
DigitalIn3 -> 3
DigitalIn4 -> 4
DigitalIn5 -> 5
DigitalIn6 -> 6
DigitalIn7 -> 7
DigitalIn8 -> 8
foreign import stdcall unsafe "ReadDigitalChannel"
c_ReadDigitalChannel :: CInt -> IO CInt
readDigitalChannel :: DigitalInput -> IO Word8
readDigitalChannel input = do
res <- c_ReadDigitalChannel (digitalInputId input)
return $ fromIntegral res
foreign import stdcall unsafe "ReadAllDigital"
c_ReadAllDigital :: IO CInt
readAllDigital :: IO Word8
readAllDigital = do
res <- c_ReadAllDigital
return $ fromIntegral res