aboutsummaryrefslogtreecommitdiff
path: root/hsm-gpio
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2025-08-27 04:10:47 +0000
committerPaul Oliver <contact@pauloliver.dev>2025-08-27 04:17:18 +0000
commitec1a6fba4c944d95edb2397b47b6cebc59e2758d (patch)
tree48e4eccaa30f6607ceac01e1f97007b8d39f0f00 /hsm-gpio
parent3806bd1f5ce56afdbb4cc0c1ed54d53e25603be2 (diff)
Moves commonly used `bracket` combinators into separate module
Diffstat (limited to 'hsm-gpio')
-rw-r--r--hsm-gpio/Hsm/GPIO.hs12
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"