diff options
Diffstat (limited to 'hsm-cam/Hsm/Cam/FFI.hs')
-rw-r--r-- | hsm-cam/Hsm/Cam/FFI.hs | 71 |
1 files changed, 54 insertions, 17 deletions
diff --git a/hsm-cam/Hsm/Cam/FFI.hs b/hsm-cam/Hsm/Cam/FFI.hs index 93d2f57..1c37fac 100644 --- a/hsm-cam/Hsm/Cam/FFI.hs +++ b/hsm-cam/Hsm/Cam/FFI.hs @@ -1,36 +1,73 @@ {-# LANGUAGE CApiFFI #-} module Hsm.Cam.FFI - ( makeLogger + ( frameStride + , frameBufferLength + , frameWidth + , frameHeight + , frameLine + , makeLogger , registerLogger , makeCallback , registerCallback - , initializeFFI - , shutdownFFI - , requestCapture - ) -where + , startCameraManager + , stopCameraManager + , acquireCamera + , releaseCamera + , allocateFrameBuffer + , freeFrameBuffer + , startCamera + , stopCamera + , createRequest + , getDmaBufferFd + , requestFrame + ) where import Foreign.C.String (CString) +import Foreign.C.Types (CInt(CInt)) import Foreign.Ptr (FunPtr) +import System.Posix.Types (Fd(Fd)) type Logger = Int -> CString -> IO () -type Callback = Int -> IO () +type Callback = IO () -foreign import ccall safe "wrapper" makeLogger :: Logger -> IO (FunPtr Logger) +foreign import capi unsafe "Cam.hpp value FRAME_WIDTH" frameWidth :: Int -foreign import capi safe "Cam.hpp register_logger" - registerLogger :: FunPtr Logger -> IO () +foreign import capi unsafe "Cam.hpp value FRAME_HEIGHT" frameHeight :: Int -foreign import ccall safe "wrapper" - makeCallback :: Callback -> IO (FunPtr Callback) +foreign import capi unsafe "Cam.hpp value FRAME_LINE" frameLine :: Int -foreign import capi safe "Cam.hpp register_callback" - registerCallback :: FunPtr Callback -> IO () +foreign import capi unsafe "Cam.hpp value FRAME_STRIDE" frameStride :: Int -foreign import capi safe "Cam.hpp initialize_ffi" initializeFFI :: IO () +foreign import capi unsafe "Cam.hpp value FRAME_BUFFER_LENGTH" frameBufferLength :: Int -foreign import capi safe "Cam.hpp shutdown_ffi" shutdownFFI :: IO () +foreign import ccall unsafe "wrapper" makeLogger :: Logger -> IO (FunPtr Logger) -foreign import capi safe "Cam.hpp request_capture" requestCapture :: IO () +foreign import ccall safe "Cam.hpp register_logger" registerLogger :: FunPtr Logger -> IO () + +foreign import ccall unsafe "wrapper" makeCallback :: Callback -> IO (FunPtr Callback) + +foreign import ccall safe "Cam.hpp register_callback" registerCallback :: FunPtr Callback -> IO () + +foreign import ccall safe "Cam.hpp start_camera_manager" startCameraManager :: IO Int + +foreign import ccall safe "Cam.hpp stop_camera_manager" stopCameraManager :: IO () + +foreign import ccall safe "Cam.hpp acquire_camera" acquireCamera :: IO Int + +foreign import ccall safe "Cam.hpp release_camera" releaseCamera :: IO () + +foreign import ccall safe "Cam.hpp allocate_frame_buffer" allocateFrameBuffer :: IO Int + +foreign import ccall safe "Cam.hpp free_frame_buffer" freeFrameBuffer :: IO () + +foreign import ccall safe "Cam.hpp start_camera" startCamera :: IO Int + +foreign import ccall safe "Cam.hpp stop_camera" stopCamera :: IO () + +foreign import ccall safe "Cam.hpp create_request" createRequest :: IO Int + +foreign import ccall safe "Cam.hpp get_dma_buffer_fd" getDmaBufferFd :: IO Fd + +foreign import ccall safe "Cam.hpp request_frame" requestFrame :: IO () |