diff options
Diffstat (limited to 'hsm-gpio/Hsm/GPIO/Lib.hsc')
-rw-r--r-- | hsm-gpio/Hsm/GPIO/Lib.hsc | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/hsm-gpio/Hsm/GPIO/Lib.hsc b/hsm-gpio/Hsm/GPIO/Lib.hsc deleted file mode 100644 index 6716f3a..0000000 --- a/hsm-gpio/Hsm/GPIO/Lib.hsc +++ /dev/null @@ -1,116 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE ForeignFunctionInterface #-} - --- This module provides C bindings to the `gpiod` library for direct GPIO pin --- control. It includes bindings only for the C functions that are currently --- used. In the future, creating a complete set of bindings for the entire --- `gpiod` library as an external package would be a valuable contribution to --- Hackage. - -module Hsm.GPIO.Lib - ( chipOpen - , chipClose - , input - , output - , LineValue - , active - , inactive - , lineSettingsNew - , lineSettingsFree - , lineSettingsSetDirection - , lineSettingsSetOutputValue - , lineConfigNew - , lineConfigFree - , lineConfigAddLineSettings - , requestConfigNew - , requestConfigFree - , requestConfigSetConsumer - , requestLines - , LineRequest - , lineRequestRelease - , lineRequestSetValue - , lineRequestSetValues - ) where - -#include <gpiod.h> - -import Foreign.C.String (CString) -import Foreign.C.Types (CInt(CInt), CSize(CSize), CUInt(CUInt)) -import Foreign.Ptr (Ptr) -import Foreign.Storable (Storable) - -data Chip - -foreign import ccall unsafe "gpiod.h gpiod_chip_open" - chipOpen :: CString -> IO (Ptr Chip) - -foreign import ccall unsafe "gpiod.h gpiod_chip_close" - chipClose :: Ptr Chip -> IO () - -data LineSettings - -newtype LineDirection = - LineDirection CInt - deriving (Show) - -#{enum LineDirection, LineDirection - , input = GPIOD_LINE_DIRECTION_INPUT - , output = GPIOD_LINE_DIRECTION_OUTPUT -} - -newtype LineValue = - LineValue CInt - deriving (Show, Storable) - -#{enum LineValue, LineValue - , active = GPIOD_LINE_VALUE_ACTIVE - , inactive = GPIOD_LINE_VALUE_INACTIVE -} - -foreign import ccall unsafe "gpiod.h gpiod_line_settings_new" - lineSettingsNew :: IO (Ptr LineSettings) - -foreign import ccall unsafe "gpiod.h gpiod_line_settings_free" - lineSettingsFree :: Ptr LineSettings -> IO () - -foreign import ccall unsafe "gpiod.h gpiod_line_settings_set_direction" - lineSettingsSetDirection :: Ptr LineSettings -> LineDirection -> IO CInt - -foreign import ccall unsafe "gpiod.h gpiod_line_settings_set_output_value" - lineSettingsSetOutputValue :: Ptr LineSettings -> LineValue -> IO CInt - -data LineConfig - -foreign import ccall unsafe "gpiod.h gpiod_line_config_new" - lineConfigNew :: IO (Ptr LineConfig) - -foreign import ccall unsafe "gpiod.h gpiod_line_config_free" - lineConfigFree :: Ptr LineConfig -> IO () - -foreign import ccall unsafe "gpiod.d gpiod_line_config_add_line_settings" - lineConfigAddLineSettings :: Ptr LineConfig -> Ptr CUInt -> CSize -> Ptr LineSettings -> IO CInt - -data RequestConfig - -foreign import ccall unsafe "gpiod.h gpiod_request_config_new" - requestConfigNew :: IO (Ptr RequestConfig) - -foreign import ccall unsafe "gpiod.h gpiod_request_config_free" - requestConfigFree :: Ptr RequestConfig -> IO () - -foreign import ccall unsafe "gpiod.h gpiod_request_config_set_consumer" - requestConfigSetConsumer :: Ptr RequestConfig -> CString -> IO () - -data LineRequest - -foreign import ccall unsafe "gpiod.h gpiod_chip_request_lines" - requestLines :: Ptr Chip -> Ptr RequestConfig -> Ptr LineConfig -> IO (Ptr LineRequest) - -foreign import ccall unsafe "gpiod.h gpiod_line_request_release" - lineRequestRelease :: Ptr LineRequest -> IO () - -foreign import ccall unsafe "gpiod.h gpiod_line_request_set_value" - lineRequestSetValue :: Ptr LineRequest -> CUInt -> LineValue -> IO CInt - -foreign import ccall unsafe "gpiod.h gpiod_line_request_set_values" - lineRequestSetValues :: Ptr LineRequest -> Ptr LineValue -> IO CInt |