From 3806bd1f5ce56afdbb4cc0c1ed54d53e25603be2 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Mon, 25 Aug 2025 03:05:35 +0000 Subject: Improves `hsm-cam` - Moves C++ constants to Haskell side - Uses better names for request callback related variables - Captures and redirects libcamera's internal logging --- hsm-cam/Hsm/Cam/FFI.hs | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'hsm-cam/Hsm/Cam/FFI.hs') diff --git a/hsm-cam/Hsm/Cam/FFI.hs b/hsm-cam/Hsm/Cam/FFI.hs index 1c37fac..6ee648d 100644 --- a/hsm-cam/Hsm/Cam/FFI.hs +++ b/hsm-cam/Hsm/Cam/FFI.hs @@ -1,15 +1,12 @@ {-# LANGUAGE CApiFFI #-} module Hsm.Cam.FFI - ( frameStride - , frameBufferLength - , frameWidth + ( frameWidth , frameHeight - , frameLine , makeLogger , registerLogger - , makeCallback - , registerCallback + , makeRequestCallback + , registerRequestCallback , startCameraManager , stopCameraManager , acquireCamera @@ -30,25 +27,19 @@ import System.Posix.Types (Fd(Fd)) type Logger = Int -> CString -> IO () -type Callback = IO () +type RequestCallback = IO () foreign import capi unsafe "Cam.hpp value FRAME_WIDTH" frameWidth :: Int foreign import capi unsafe "Cam.hpp value FRAME_HEIGHT" frameHeight :: Int -foreign import capi unsafe "Cam.hpp value FRAME_LINE" frameLine :: Int - -foreign import capi unsafe "Cam.hpp value FRAME_STRIDE" frameStride :: Int - -foreign import capi unsafe "Cam.hpp value FRAME_BUFFER_LENGTH" frameBufferLength :: Int - foreign import ccall unsafe "wrapper" makeLogger :: Logger -> IO (FunPtr Logger) 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 unsafe "wrapper" makeRequestCallback :: RequestCallback -> IO (FunPtr RequestCallback) -foreign import ccall safe "Cam.hpp register_callback" registerCallback :: FunPtr Callback -> IO () +foreign import ccall safe "Cam.hpp register_request_callback" registerRequestCallback :: FunPtr RequestCallback -> IO () foreign import ccall safe "Cam.hpp start_camera_manager" startCameraManager :: IO Int -- cgit v1.2.1