diff options
Diffstat (limited to 'hsm-cam/Hsm/Cam')
-rw-r--r-- | hsm-cam/Hsm/Cam/FFI.hs | 64 | ||||
-rw-r--r-- | hsm-cam/Hsm/Cam/FFI.hsc | 82 |
2 files changed, 82 insertions, 64 deletions
diff --git a/hsm-cam/Hsm/Cam/FFI.hs b/hsm-cam/Hsm/Cam/FFI.hs deleted file mode 100644 index 50acf10..0000000 --- a/hsm-cam/Hsm/Cam/FFI.hs +++ /dev/null @@ -1,64 +0,0 @@ -{-# 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 () 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 () |