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.hs36
1 files changed, 36 insertions, 0 deletions
diff --git a/hsm-cam/Hsm/Cam/FFI.hs b/hsm-cam/Hsm/Cam/FFI.hs
new file mode 100644
index 0000000..93d2f57
--- /dev/null
+++ b/hsm-cam/Hsm/Cam/FFI.hs
@@ -0,0 +1,36 @@
+{-# 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 ()