diff options
Diffstat (limited to 'hsm-gpio/Hsm/GPIO.hs')
-rw-r--r-- | hsm-gpio/Hsm/GPIO.hs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/hsm-gpio/Hsm/GPIO.hs b/hsm-gpio/Hsm/GPIO.hs index 0f320a1..8f3115d 100644 --- a/hsm-gpio/Hsm/GPIO.hs +++ b/hsm-gpio/Hsm/GPIO.hs @@ -11,7 +11,7 @@ module Hsm.GPIO ) where import Control.Monad (forM_, void) -import Control.Monad.Trans.Cont (cont, evalCont) +import Control.Monad.Trans.Cont (evalCont) import Data.Vector.Storable (fromList, replicate, unsafeWith) import Effectful (Dispatch(Static), DispatchOf, Eff, IOE, (:>), liftIO) import Effectful.Dispatch.Static (SideEffects(WithSideEffects), StaticRep, evalStaticRep, getStaticRep, unsafeEff_) @@ -19,6 +19,7 @@ import Effectful.Exception (bracket) import Foreign.C.String (withCString) import Foreign.C.Types (CSize(CSize), CUInt) import Foreign.Ptr (Ptr) +import Hsm.Core.Bracket (bracketCont) import Hsm.Core.Serial (makeSerial) import Hsm.GPIO.FFI ( LineRequest @@ -78,7 +79,6 @@ setAllPins lineValue = do runGPIO :: (IOE :> es, Log "gpio" :> es) => String -> Eff (GPIO : es) a -> Eff es a runGPIO consumer action = bracket lineRequestAlloc lineRequestDealloc $ \lineRequest -> evalStaticRep (GPIO lineRequest) action where - contBracket alloc dealloc = cont $ bracket alloc dealloc chipPath = "/dev/gpiochip0" chipAlloc = do logMsg Info $ "Opening GPIO chip " <> chipPath @@ -118,10 +118,10 @@ runGPIO consumer action = bracket lineRequestAlloc lineRequestDealloc $ \lineReq lineRequestAlloc = do logMsg Info "Allocating line request" evalCont $ do - chip <- contBracket chipAlloc chipDealloc - lineSettings <- contBracket lineSettingsAlloc lineSettingsDealloc - lineConfig <- contBracket (lineConfigAlloc lineSettings) lineConfigDealloc - requestConfig <- contBracket requestConfigAlloc requestConfigDealloc + chip <- bracketCont chipAlloc chipDealloc + lineSettings <- bracketCont lineSettingsAlloc lineSettingsDealloc + lineConfig <- bracketCont (lineConfigAlloc lineSettings) lineConfigDealloc + requestConfig <- bracketCont requestConfigAlloc requestConfigDealloc return . liftIO $ chipRequestLines chip requestConfig lineConfig lineRequestDealloc lineRequest = do logMsg Info "Releasing line request" |