aboutsummaryrefslogtreecommitdiff
path: root/hsm-cam/Hsm/Cam/FFI.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hsm-cam/Hsm/Cam/FFI.hs')
-rw-r--r--hsm-cam/Hsm/Cam/FFI.hs71
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 ()