aboutsummaryrefslogtreecommitdiff
path: root/hsm-gpio/Hsm/GPIO.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hsm-gpio/Hsm/GPIO.hs')
-rw-r--r--hsm-gpio/Hsm/GPIO.hs15
1 files changed, 8 insertions, 7 deletions
diff --git a/hsm-gpio/Hsm/GPIO.hs b/hsm-gpio/Hsm/GPIO.hs
index 7cc2c36..0e4e2e5 100644
--- a/hsm-gpio/Hsm/GPIO.hs
+++ b/hsm-gpio/Hsm/GPIO.hs
@@ -21,6 +21,7 @@ import Effectful.Dispatch.Static
, getStaticRep
, unsafeEff_
)
+import Effectful.Exception (bracket)
import Effectful.Resource (Resource, allocateEff, releaseEff)
import Foreign.C.String (withCString)
import Foreign.C.Types (CSize (CSize), CUInt)
@@ -92,12 +93,12 @@ runGPIO consumer action = do
(lineSettingsKey, lineSettings) <- lineSettingsBracket
(lineConfigKey, lineConfig) <- lineConfigBracket lineSettings
(requestConfigKey, requestConfig) <- requestConfigBracket
- (_, lineRequest) <- lineRequestBracket chip requestConfig lineConfig
- releaseEff requestConfigKey
- releaseEff lineConfigKey
- releaseEff lineSettingsKey
- releaseEff chipKey
- evalStaticRep (GPIO lineRequest) action
+ lineRequestBracket chip requestConfig lineConfig $ \lineRequest -> do
+ releaseEff requestConfigKey
+ releaseEff lineConfigKey
+ releaseEff lineSettingsKey
+ releaseEff chipKey
+ evalStaticRep (GPIO lineRequest) action
where
chipBracket = allocateEff chipAlloc chipDealloc
where
@@ -148,7 +149,7 @@ runGPIO consumer action = do
requestConfigDealloc requestConfig = do
logMsg Info "Freeing request config"
liftIO $ requestConfigFree requestConfig
- lineRequestBracket chip requestConfig lineConfig = allocateEff lineRequestAlloc lineRequestDealloc
+ lineRequestBracket chip requestConfig lineConfig = bracket lineRequestAlloc lineRequestDealloc
where
lineRequestAlloc = do
logMsg Info "Allocating line request"