diff options
author | Paul Oliver <contact@pauloliver.dev> | 2025-08-27 04:10:47 +0000 |
---|---|---|
committer | Paul Oliver <contact@pauloliver.dev> | 2025-08-27 04:17:18 +0000 |
commit | ec1a6fba4c944d95edb2397b47b6cebc59e2758d (patch) | |
tree | 48e4eccaa30f6607ceac01e1f97007b8d39f0f00 /hsm-gpio/Hsm | |
parent | 3806bd1f5ce56afdbb4cc0c1ed54d53e25603be2 (diff) |
Moves commonly used `bracket` combinators into separate module
Diffstat (limited to 'hsm-gpio/Hsm')
-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" |