huckleberry-0.10.0.0: src/System/PIO/Linux/GPIO.hs
module System.PIO.Linux.GPIO (
PinNumber,
setValue,
getValue
) where
import System.IO (writeFile, readFile)
-- | GPIO pin numbers are values of type Int
type PinNumber = Int
valueFilePath :: Int -> String
valueFilePath n = "/sys/class/gpio/gpio" ++ (show n) ++ "/value"
-- | Computation 'setValue' @pinnum@ @True@ makes corresponding pin high.
-- Computation 'setValue' @pinnum@ @False@ makes corresponding pin low.
setValue :: PinNumber -> Bool -> IO ()
setValue n flag =
writeFile (valueFilePath n) $ show $ fromEnum flag
-- | Computation 'getValue' @pinnum@ obtain status of corresponding pin.
getValue :: PinNumber -> IO Bool
getValue n =
(\flag -> toEnum $ read flag) <$> readFile (valueFilePath n)