aboutsummaryrefslogtreecommitdiff
path: root/hsm-cam/Hsm/Cam
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2025-08-08 22:31:35 +0200
committerPaul Oliver <contact@pauloliver.dev>2025-08-23 22:59:06 +0000
commit4efe903a671b288ac485f2d2a9c9aabf2eb7b199 (patch)
tree659780aa11988cbac0b3ab744eddf7a66a791fcd /hsm-cam/Hsm/Cam
parentb679114531a5054487123252b6e3a9d22b7c27a7 (diff)
Adds libcamera bindings
Diffstat (limited to 'hsm-cam/Hsm/Cam')
-rw-r--r--hsm-cam/Hsm/Cam/FFI.hsc40
1 files changed, 40 insertions, 0 deletions
diff --git a/hsm-cam/Hsm/Cam/FFI.hsc b/hsm-cam/Hsm/Cam/FFI.hsc
new file mode 100644
index 0000000..44f3f4b
--- /dev/null
+++ b/hsm-cam/Hsm/Cam/FFI.hsc
@@ -0,0 +1,40 @@
+{-# 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 ()