aboutsummaryrefslogtreecommitdiff
path: root/hsm-cam
diff options
context:
space:
mode:
Diffstat (limited to 'hsm-cam')
-rw-r--r--hsm-cam/FFI/Cam.cpp36
-rw-r--r--hsm-cam/FFI/Cam.hpp6
-rw-r--r--hsm-cam/Hsm/Cam.hs11
-rw-r--r--hsm-cam/Hsm/Cam/FFI.hs (renamed from hsm-cam/Hsm/Cam/FFI.hsc)12
4 files changed, 36 insertions, 29 deletions
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 <format>
+#include "Cam.hpp"
#include <libcamera/libcamera.h>
-#include "Cam.hpp"
+#include <format>
using namespace libcamera;
using namespace std;
@@ -15,27 +15,37 @@ unique_ptr<CameraConfiguration> g_config;
unique_ptr<FrameBufferAllocator> g_allocator;
unique_ptr<Request> g_request;
-template <class... Args>
-void logMsg(Severity severity, const format_string<Args...> fmt, const Args&... args) {
+template<class... Args>
+void
+logMsg(Severity severity, const format_string<Args...> 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<CameraManager>();
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.hsc b/hsm-cam/Hsm/Cam/FFI.hs
index 44f3f4b..93d2f57 100644
--- a/hsm-cam/Hsm/Cam/FFI.hsc
+++ b/hsm-cam/Hsm/Cam/FFI.hs
@@ -18,8 +18,7 @@ type Logger = Int -> CString -> IO ()
type Callback = Int -> IO ()
-foreign import ccall safe "wrapper"
- makeLogger :: Logger -> IO (FunPtr Logger)
+foreign import ccall safe "wrapper" makeLogger :: Logger -> IO (FunPtr Logger)
foreign import capi safe "Cam.hpp register_logger"
registerLogger :: FunPtr Logger -> IO ()
@@ -30,11 +29,8 @@ foreign import ccall safe "wrapper"
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 initialize_ffi" initializeFFI :: IO ()
-foreign import capi safe "Cam.hpp shutdown_ffi"
- shutdownFFI :: IO ()
+foreign import capi safe "Cam.hpp shutdown_ffi" shutdownFFI :: IO ()
-foreign import capi safe "Cam.hpp request_capture"
- requestCapture :: IO ()
+foreign import capi safe "Cam.hpp request_capture" requestCapture :: IO ()