module Bindings.K8055.AnalogOut ( AnalogOutput(..), outputAnalogChannel, outputAllAnalog, clearAnalogChannel, clearAllAnalog, setAnalogChannel, setAllAnalog ) where import Foreign.C import Data.Word data AnalogOutput = AnalogOut1 | AnalogOut2 analogOutputId :: Num a => AnalogOutput -> a analogOutputId output = case output of AnalogOut1 -> 0 AnalogOut2 -> 1 foreign import stdcall unsafe "OutputAnalogChannel" c_OutputAnalogChannel :: CInt -> CInt -> IO () -- | Sets the analogue output channel according to the data outputAnalogChannel :: AnalogOutput -> Word8 -> IO () outputAnalogChannel channel dat = do c_OutputAnalogChannel (analogOutputId channel) (fromIntegral dat) foreign import stdcall unsafe "OutputAllAnalog" c_OutputAllAnalog :: CInt -> CInt -> IO () -- | Sets both analogue output channels according to the data outputAllAnalog :: Word8 -> Word8 -> IO () outputAllAnalog val1 val2 = do c_OutputAllAnalog (fromIntegral val1) (fromIntegral val2) foreign import stdcall unsafe "ClearAnalogChannel" c_ClearAnalogChannel :: CInt -> IO () -- | Sets the analogue output channel to minimum clearAnalogChannel :: AnalogOutput -> IO () clearAnalogChannel channel = do c_ClearAnalogChannel (analogOutputId channel) foreign import stdcall unsafe "ClearAllAnalog" c_ClearAllAnalog :: IO () -- | Sets all analogue output channels to minimum clearAllAnalog :: IO () clearAllAnalog = c_ClearAllAnalog foreign import stdcall unsafe "SetAnalogChannel" c_SetAnalogChannel :: CInt -> IO () -- | Sets the analogue output channel to maximum setAnalogChannel :: AnalogOutput -> IO () setAnalogChannel channel = do c_SetAnalogChannel (analogOutputId channel) foreign import stdcall unsafe "SetAllAnalog" c_SetAllAnalog :: IO () -- | Sets all analogue output channels to maximum setAllAnalog :: IO () setAllAnalog = c_SetAllAnalog