diff options
Diffstat (limited to 'hsm-cam/Hsm/Cam')
-rw-r--r-- | hsm-cam/Hsm/Cam/FFI.hs | 36 | ||||
-rw-r--r-- | hsm-cam/Hsm/Cam/FFI.hsc | 82 |
2 files changed, 82 insertions, 36 deletions
diff --git a/hsm-cam/Hsm/Cam/FFI.hs b/hsm-cam/Hsm/Cam/FFI.hs deleted file mode 100644 index 93d2f57..0000000 --- a/hsm-cam/Hsm/Cam/FFI.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE CApiFFI #-} - -module Hsm.Cam.FFI - ( makeLogger - , registerLogger - , makeCallback - , registerCallback - , initializeFFI - , shutdownFFI - , requestCapture - ) -where - -import Foreign.C.String (CString) -import Foreign.Ptr (FunPtr) - -type Logger = Int -> CString -> IO () - -type Callback = Int -> IO () - -foreign import ccall safe "wrapper" makeLogger :: Logger -> IO (FunPtr Logger) - -foreign import capi safe "Cam.hpp register_logger" - registerLogger :: FunPtr Logger -> IO () - -foreign import ccall safe "wrapper" - makeCallback :: Callback -> IO (FunPtr Callback) - -foreign import capi safe "Cam.hpp register_callback" - registerCallback :: FunPtr Callback -> IO () - -foreign import capi safe "Cam.hpp initialize_ffi" initializeFFI :: IO () - -foreign import capi safe "Cam.hpp shutdown_ffi" shutdownFFI :: IO () - -foreign import capi safe "Cam.hpp request_capture" requestCapture :: IO () diff --git a/hsm-cam/Hsm/Cam/FFI.hsc b/hsm-cam/Hsm/Cam/FFI.hsc new file mode 100644 index 0000000..6c5dd3d --- /dev/null +++ b/hsm-cam/Hsm/Cam/FFI.hsc @@ -0,0 +1,82 @@ +{-# LANGUAGE CApiFFI #-} + +module Hsm.Cam.FFI + ( frameWidth + , frameHeight + , makeLogger + , registerLogger + , makeRequestCallback + , registerRequestCallback + , 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 RequestCallback = IO () + +foreign import capi safe "Cam.hpp value FRAME_WIDTH" + frameWidth :: Int + +foreign import capi safe "Cam.hpp value FRAME_HEIGHT" + frameHeight :: Int + +foreign import ccall safe "wrapper" + makeLogger :: Logger -> IO (FunPtr Logger) + +foreign import capi safe "Cam.hpp register_logger" + registerLogger :: FunPtr Logger -> IO () + +foreign import ccall safe "wrapper" + makeRequestCallback :: RequestCallback -> IO (FunPtr RequestCallback) + +foreign import capi safe "Cam.hpp register_request_callback" + registerRequestCallback :: FunPtr RequestCallback -> IO () + +foreign import capi safe "Cam.hpp start_camera_manager" + startCameraManager :: IO () + +foreign import capi safe "Cam.hpp stop_camera_manager" + stopCameraManager :: IO () + +foreign import capi safe "Cam.hpp acquire_camera" + acquireCamera :: IO () + +foreign import capi safe "Cam.hpp release_camera" + releaseCamera :: IO () + +foreign import capi safe "Cam.hpp allocate_frame_buffer" + allocateFrameBuffer :: IO () + +foreign import capi safe "Cam.hpp free_frame_buffer" + freeFrameBuffer :: IO () + +foreign import capi safe "Cam.hpp start_camera" + startCamera :: IO () + +foreign import capi safe "Cam.hpp stop_camera" + stopCamera :: IO () + +foreign import capi safe "Cam.hpp create_request" + createRequest :: IO () + +foreign import capi safe "Cam.hpp get_dma_buffer_fd" + getDmaBufferFd :: IO Fd + +foreign import capi safe "Cam.hpp request_frame" + requestFrame :: IO () |