aboutsummaryrefslogtreecommitdiff
path: root/hsm-cam/Hsm/Cam/FFI.hsc
blob: 44f3f4b9b7147e65fc6377b39dc95153bd3e7afa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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 ()