diff --git a/.gitignore b/.gitignore index 537cd6f..128798e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ tmp/ *.o *.d html/*.c +/test_* diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..e100d62 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,17 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**", + "/usr/include/libcamera" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "gnu17", + "cppStandard": "gnu++14", + "intelliSenseMode": "linux-gcc-arm64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/Makefile b/Makefile index 3539733..08891fb 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ endif ifeq (1,$(USE_LIBCAMERA)) CFLAGS += -DUSE_LIBCAMERA $(shell pkg-config --cflags libcamera) -LDLIBS += $(shell pkg-config --cflags libs) +LDLIBS += $(shell pkg-config --libs libcamera) endif HTML_SRC = $(addsuffix .c,$(HTML)) diff --git a/cmd/test_libcamera.c b/cmd/test_libcamera.c new file mode 100644 index 0000000..1917bc9 --- /dev/null +++ b/cmd/test_libcamera.c @@ -0,0 +1,25 @@ +#include "opts/opts.h" +#include "opts/log.h" +#include "opts/fourcc.h" +#include "device/camera/camera.h" + +log_options_t log_options = { + .debug = false, + .verbose = false +}; + +int main(int argc, char *argv[]) +{ + device_t *dev = NULL; + + dev = device_libcamera_open("CAMERA", "/dev/video0"); + if (!dev) { + printf("Failed to open libcamera\n"); + return -1; + } + + printf("Opened libcamera\n"); + + device_close(dev); + return 0; +} diff --git a/device/libcamera/buffer.cc b/device/libcamera/buffer.cc index a214578..25bf2f0 100644 --- a/device/libcamera/buffer.cc +++ b/device/libcamera/buffer.cc @@ -1,10 +1,5 @@ #include "libcamera.hh" -extern "C" { -#include "device/buffer.h" -#include -}; - int libcamera_buffer_open(buffer_t *buf) { buf->libcamera = new buffer_libcamera_t{}; diff --git a/device/libcamera/buffer_list.cc b/device/libcamera/buffer_list.cc index e46eb2e..899cb65 100644 --- a/device/libcamera/buffer_list.cc +++ b/device/libcamera/buffer_list.cc @@ -1,10 +1,5 @@ #include "libcamera.hh" -extern "C" { -#include "device/buffer_list.h" -#include -}; - int libcamera_buffer_list_open(buffer_list_t *buf_list, unsigned width, unsigned height, unsigned format, unsigned bytesperline) { buf_list->libcamera = new buffer_list_libcamera_t{}; diff --git a/device/libcamera/device.cc b/device/libcamera/device.cc index 9a92f60..ac0c171 100644 --- a/device/libcamera/device.cc +++ b/device/libcamera/device.cc @@ -1,13 +1,15 @@ #include "libcamera.hh" -extern "C" { -#include "device/device.h" -#include -}; - int libcamera_device_open(device_t *dev) { dev->libcamera = new device_libcamera_t{}; + + auto camera_manager = std::make_unique(); + int ret = camera_manager->start(); + if (ret < 0) { + return -1; + } + return 0; } diff --git a/device/libcamera/libcamera.cc b/device/libcamera/libcamera.cc index fe01ede..75142a9 100644 --- a/device/libcamera/libcamera.cc +++ b/device/libcamera/libcamera.cc @@ -1,9 +1,5 @@ #include "libcamera.hh" -extern "C" { -#include "device/device.h" -}; - device_hw_t libcamera_device_hw = { .device_open = libcamera_device_open, .device_close = libcamera_device_close, diff --git a/device/libcamera/libcamera.hh b/device/libcamera/libcamera.hh index 4441449..a781563 100644 --- a/device/libcamera/libcamera.hh +++ b/device/libcamera/libcamera.hh @@ -5,8 +5,16 @@ extern "C" { #include #include #include +#include + +#include "device/device.h" +#include "device/buffer_list.h" +#include "device/buffer.h" }; +#include +#include + #include #include #include