diff options
Diffstat (limited to 'hsm-cam/Hsm/Cam.hs')
-rw-r--r-- | hsm-cam/Hsm/Cam.hs | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/hsm-cam/Hsm/Cam.hs b/hsm-cam/Hsm/Cam.hs index e5b30c2..d1f9cd2 100644 --- a/hsm-cam/Hsm/Cam.hs +++ b/hsm-cam/Hsm/Cam.hs @@ -6,9 +6,10 @@ module Hsm.Cam ( Cam , capturePng , runCam - ) where + ) +where -import Codec.Picture (Image(Image), encodePng) +import Codec.Picture (Image (Image), encodePng) import Codec.Picture.Types (PixelRGB8) import Control.Concurrent (MVar, forkIO, newEmptyMVar, putMVar, takeMVar) import Control.Exception (mask_) @@ -19,11 +20,11 @@ import Data.ByteString.Lazy (ByteString) import Data.List ((!?)) import Data.Primitive.Ptr (readOffPtr) import Data.Vector.Storable (generateM) -import Effectful (Dispatch(Static), DispatchOf, Eff, IOE, (:>), liftIO) -import Effectful.Dispatch.Static (SideEffects(WithSideEffects), StaticRep, evalStaticRep, getStaticRep, unsafeEff_) +import Effectful (Dispatch (Static), DispatchOf, Eff, IOE, liftIO, (:>)) +import Effectful.Dispatch.Static (SideEffects (WithSideEffects), StaticRep, evalStaticRep, getStaticRep, unsafeEff_) import Effectful.Exception (bracket, bracket_) import Foreign.C.String (peekCString) -import Foreign.C.Types (CSize(CSize)) +import Foreign.C.Types (CSize (CSize)) import Foreign.Ptr (Ptr, castPtr, freeHaskellFunPtr, nullPtr) import Hsm.Cam.FFI ( acquireCamera @@ -45,11 +46,11 @@ import Hsm.Cam.FFI , stopCameraManager ) import Hsm.Core.Bracket (bracketConst, bracketLiftIO_) -import Hsm.Log (Log, Severity(Attention, Info, Trace), getLevel, logMsg, makeLoggerIO) +import Hsm.Log (Log, Severity (Attention, Info, Trace), getLevel, logMsg, makeLoggerIO) import MMAP (mapShared, mkMmapFlags, mmap, munmap, protRead) import System.Directory (doesFileExist, removeFile) import System.Environment (setEnv) -import System.IO (IOMode(ReadWriteMode), hGetLine, withFile) +import System.IO (IOMode (ReadWriteMode), hGetLine, withFile) import System.Posix.Files (createNamedPipe, ownerReadMode, ownerWriteMode) import Text.Read (readMaybe) @@ -62,8 +63,8 @@ data Rep = Rep , dmaBuffer :: Ptr () } -newtype instance StaticRep Cam = - Cam Rep +newtype instance StaticRep Cam + = Cam Rep -- RGB888 configuration for ov5647 sensor (Raspberry Pi Camera Module) -- The following constants must be updated if either: @@ -80,7 +81,7 @@ frameBufferLength = frameStride * frameHeight + 3072 capturePng :: (Log "cam" :> es, Cam :> es) => Eff es ByteString capturePng = do - Cam Rep {..} <- getStaticRep + Cam Rep{..} <- getStaticRep logMsg Trace "Requesting frame" unsafeEff_ . mask_ $ requestFrame >> takeMVar requestCallbackMVar logMsg Trace "Processing frame data" @@ -130,7 +131,8 @@ runCam action = do . bracketLiftIO_ allocateFrameBuffer freeFrameBuffer . bracketLiftIO_ startCamera stopCamera . bracketLiftIO_ createRequest (return ()) - . bracket mapDmaBuffer unmapDmaBuffer $ \dmaBuffer -> evalStaticRep (Cam Rep {..}) action + . bracket mapDmaBuffer unmapDmaBuffer + $ \dmaBuffer -> evalStaticRep (Cam Rep{..}) action where loggerAlloc = do logMsg @"cam" Info "Registering FFI logger" |