From 307cb1b1094c73fd15eab378c27ac0073696b739 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Tue, 19 Aug 2025 03:56:40 +0000 Subject: Improves formatting --- hsm-cam/FFI/Cam.cpp | 36 +++++++++++++++++++++++++----------- hsm-cam/FFI/Cam.hpp | 6 ++++-- hsm-cam/Hsm/Cam.hs | 11 +++-------- hsm-cam/Hsm/Cam/FFI.hs | 36 ++++++++++++++++++++++++++++++++++++ hsm-cam/Hsm/Cam/FFI.hsc | 40 ---------------------------------------- 5 files changed, 68 insertions(+), 61 deletions(-) create mode 100644 hsm-cam/Hsm/Cam/FFI.hs delete mode 100644 hsm-cam/Hsm/Cam/FFI.hsc (limited to 'hsm-cam') diff --git a/hsm-cam/FFI/Cam.cpp b/hsm-cam/FFI/Cam.cpp index 5f2ca1f..05fd1a8 100644 --- a/hsm-cam/FFI/Cam.cpp +++ b/hsm-cam/FFI/Cam.cpp @@ -1,8 +1,8 @@ -#include +#include "Cam.hpp" #include -#include "Cam.hpp" +#include using namespace libcamera; using namespace std; @@ -15,27 +15,37 @@ unique_ptr g_config; unique_ptr g_allocator; unique_ptr g_request; -template -void logMsg(Severity severity, const format_string fmt, const Args&... args) { +template +void +logMsg(Severity severity, const format_string fmt, const Args &...args) +{ g_logger(severity, vformat(fmt.get(), make_format_args(args...)).c_str()); } -void request_complete(Request *request) { +void +request_complete(Request *request) +{ logMsg(Trace, "Completed request"); g_callback(request->buffers().begin()->second->planes()[0].fd.get()); } -extern "C" void register_logger(HsLogger hs_logger) { +extern "C" void +register_logger(HsLogger hs_logger) +{ g_logger = hs_logger; logMsg(Info, "Registered FFI logger"); } -extern "C" void register_callback(HsCallback hs_callback) { +extern "C" void +register_callback(HsCallback hs_callback) +{ g_callback = hs_callback; logMsg(Info, "Registered FFI callback"); } -extern "C" void initialize_ffi() { +extern "C" void +initialize_ffi() +{ logMsg(Info, "Starting camera manager"); g_manager = make_unique(); g_manager->start(); @@ -45,7 +55,7 @@ extern "C" void initialize_ffi() { g_camera->acquire(); logMsg(Info, "Generating still capture configuration"); - g_config = g_camera->generateConfiguration({StreamRole::StillCapture}); + g_config = g_camera->generateConfiguration({ StreamRole::StillCapture }); g_camera->configure(g_config.get()); logMsg(Info, "Allocating buffer"); @@ -59,7 +69,9 @@ extern "C" void initialize_ffi() { g_camera->start(); } -extern "C" void shutdown_ffi() { +extern "C" void +shutdown_ffi() +{ logMsg(Info, "Stopping camera"); g_camera->stop(); @@ -75,7 +87,9 @@ extern "C" void shutdown_ffi() { g_manager->stop(); } -extern "C" void request_capture() { +extern "C" void +request_capture() +{ logMsg(Trace, "Requesting still capture"); Stream *stream = (*g_config)[0].stream(); diff --git a/hsm-cam/FFI/Cam.hpp b/hsm-cam/FFI/Cam.hpp index e59fa1d..c2cd4ed 100644 --- a/hsm-cam/FFI/Cam.hpp +++ b/hsm-cam/FFI/Cam.hpp @@ -1,7 +1,8 @@ #ifndef CAM_HPP #define CAM_HPP -enum Severity { +enum Severity +{ Attention = 0, Info = 1, Trace = 2, @@ -11,7 +12,8 @@ typedef void (*HsLogger)(enum Severity, const char *); typedef void (*HsCallback)(int fd); #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif void register_logger(HsLogger hs_logger); void register_callback(HsCallback hs_callback); diff --git a/hsm-cam/Hsm/Cam.hs b/hsm-cam/Hsm/Cam.hs index 9857557..78a3e25 100644 --- a/hsm-cam/Hsm/Cam.hs +++ b/hsm-cam/Hsm/Cam.hs @@ -47,9 +47,7 @@ stillCapture = do logMsg Trace $ "Still capture data available in FD " <> show fd runCam - :: (IOE :> es, Log "cam" :> es, Resource :> es) - => Eff (Cam : es) a - -> Eff es a + :: (IOE :> es, Log "cam" :> es, Resource :> es) => Eff (Cam : es) a -> Eff es a runCam action = do fdVar <- liftIO newEmptyMVar void loggerBracket @@ -62,16 +60,13 @@ runCam action = do loggerAlloc = do logMsg Info "Registering FFI logger" loggerIO <- getLoggerIO - loggerFFI <- - liftIO . makeLogger $ \severity message -> - peekCString message >>= loggerIO (toEnum severity) + loggerFFI <- liftIO . makeLogger $ \severity message -> peekCString message >>= loggerIO (toEnum severity) liftIO $ registerLogger loggerFFI return loggerFFI loggerDealloc loggerFFI = do logMsg Info "Unregistering FFI logger" liftIO $ freeHaskellFunPtr loggerFFI - requestCallbackBracket fdVar = - allocateEff requestCallbackAlloc requestCallbackDealloc + requestCallbackBracket fdVar = allocateEff requestCallbackAlloc requestCallbackDealloc where requestCallbackAlloc = do logMsg Info "Registering FFI callback" 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 () diff --git a/hsm-cam/Hsm/Cam/FFI.hsc b/hsm-cam/Hsm/Cam/FFI.hsc deleted file mode 100644 index 44f3f4b..0000000 --- a/hsm-cam/Hsm/Cam/FFI.hsc +++ /dev/null @@ -1,40 +0,0 @@ -{-# 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 () -- cgit v1.2.1