From ac27fb455c76aee4f9e9f65747483006909b14ab Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Fri, 14 Nov 2025 22:20:20 +0100 Subject: cleanup --- src/camera/icamera.h | 2 -- src/camera/veye_i2c.h | 3 +- src/camera/veyeimx287m.cpp | 83 ++++++++-------------------------------------- src/camera/veyeimx287m.h | 5 +-- 4 files changed, 16 insertions(+), 77 deletions(-) (limited to 'src/camera') diff --git a/src/camera/icamera.h b/src/camera/icamera.h index 391ce55..bd08786 100644 --- a/src/camera/icamera.h +++ b/src/camera/icamera.h @@ -54,8 +54,6 @@ public: virtual bool set_gain(const float value) = 0; virtual std::optional get_gain() = 0; - virtual bool setLaserLevel(int value) = 0; - public: std::function)> newPixelsCallback; std::function newImageCallback; diff --git a/src/camera/veye_i2c.h b/src/camera/veye_i2c.h index 24ef10b..48ad507 100644 --- a/src/camera/veye_i2c.h +++ b/src/camera/veye_i2c.h @@ -9,7 +9,8 @@ namespace imx287m { class i2c { public: - i2c(const std::string &name = "/dev/i2c-2", const int address = 0x3b); + explicit i2c(const std::string &name = "/dev/i2c-2", + const int address = 0x3b); ~i2c(); public: diff --git a/src/camera/veyeimx287m.cpp b/src/camera/veyeimx287m.cpp index a03aa83..7b6302c 100644 --- a/src/camera/veyeimx287m.cpp +++ b/src/camera/veyeimx287m.cpp @@ -238,6 +238,8 @@ VeyeIMX287m::~VeyeIMX287m() std::vector > VeyeIMX287m::search() { + // FIXME: use saved params, get rid of hardcode + // return only one camera for now const auto cam = std::make_shared(); @@ -257,18 +259,13 @@ std::vector > VeyeIMX287m::search() if (!cam->set_gain(0.1)) return {}; - if (!cam->setLaserLevel(1)) - return {}; - return {cam}; } bool VeyeIMX287m::startStream() { - // int buffer_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - const auto radxa_buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; - // auto ret = ioctl(m_cam_fd, VIDIOC_STREAMON, &buffer_type); - auto ret = ioctl(m_cam_fd, VIDIOC_STREAMON, &radxa_buf_type); + constexpr auto radxa_buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; + const auto ret = ioctl(m_cam_fd, VIDIOC_STREAMON, &radxa_buf_type); if (ret != 0) { std::cerr << "ioctl(VIDIOC_STREAMON) failed: " << errno << " (" @@ -276,14 +273,12 @@ bool VeyeIMX287m::startStream() return false; } - std::cout << "stream started" << std::endl; - - // m_streamThread = std::jthread{&VeyeIMX287m::dequeueFrameLoop, this}; - for (auto &t : m_calcThreads) { t = std::jthread{&VeyeIMX287m::calcFrameLoop, this}; } + std::cout << __func__ << " - OK" << std::endl; + return true; } @@ -292,9 +287,6 @@ bool VeyeIMX287m::init() if (!openCam()) return false; - // if (!selectCam()) - // return false; - if (!initCam()) return false; @@ -395,16 +387,6 @@ std::optional VeyeIMX287m::get_gain() return *value * 10; } -bool VeyeIMX287m::setLaserLevel(int value) -{ - std::cout << __func__ << ": " << value << std::endl << std::flush; - - // return setCamParam(V4L2_CID_FLASH_TIMEOUT, value); - - // FIXME: tmp workaround for imx287llr - return true; -} - bool VeyeIMX287m::openCam() { m_cam_fd = open(videoDevice, O_RDWR); @@ -420,23 +402,6 @@ bool VeyeIMX287m::openCam() return true; } -bool VeyeIMX287m::selectCam(int camIdx) -{ - int input = camIdx; - int ret = ioctl(m_cam_fd, VIDIOC_S_INPUT, &input); - - if (ret < 0) { - fprintf(stderr, - "cannot select cam: idx - %d, error - '%s'\n", - camIdx, - strerror(errno)); - - return false; - } - - return true; -} - bool VeyeIMX287m::initCam() { int ret{-1}; @@ -516,11 +481,13 @@ bool VeyeIMX287m::initCam() struct v4l2_requestbuffers rb; memset(&rb, 0, sizeof rb); rb.count = BUFFER_COUNT; + if constexpr (radxa_zero_3et) { rb.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; } else { rb.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; } + rb.memory = V4L2_MEMORY_MMAP; ret = ioctl(m_cam_fd, VIDIOC_REQBUFS, &rb); @@ -545,10 +512,6 @@ bool VeyeIMX287m::initCam() buffers.resize(rb.count); - // memset(&buffer, 0, sizeof(buffer)); - // buffer.type = request.type; - // buffer.memory = V4L2_MEMORY_MMAP; - std::cout << "query buffers" << std::endl; for (uint32_t i = 0; i < rb.count; i++) { @@ -570,9 +533,9 @@ bool VeyeIMX287m::initCam() ret = ioctl(m_cam_fd, VIDIOC_QUERYBUF, &buf); if (ret < 0) { - // std::cout << "ioctl(VIDIOC_QUERYBUF) failed: " << errno << " " << std::endl; std::cerr << "ioctl(VIDIOC_QUERYBUF) failed: " << errno << " (" << strerror(errno) << ")" << std::endl; + return false; } @@ -591,18 +554,14 @@ bool VeyeIMX287m::initCam() MAP_SHARED, m_cam_fd, offset); + if (buffers[i].mem[0] == MAP_FAILED) { std::cerr << "mmap() failed: " << errno << " (" << strerror(errno) << ")" << std::endl; std::cerr << "length: " << length << std::endl; std::cerr << "offset: " << offset << std::endl; - return false; - // m_videoBuffers[i] = (uint8_t *) - // mmap(NULL, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, m_cam_fd, buf.m.offset); - // if (m_videoBuffers[i] == MAP_FAILED) { - // DBG("mmap() failed %d(%s)", errno, strerror(errno)); - // return false; + return false; } m_videoBuffers[i] = (uint8_t *) buffers[i].mem[0]; @@ -615,10 +574,8 @@ bool VeyeIMX287m::initCam() i, buffers[i].mem[0]); - // buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - // buf.memory = V4L2_MEMORY_MMAP; - // buf.index = i; ret = ioctl(m_cam_fd, VIDIOC_QBUF, &buf); + if (ret != 0) { std::cerr << "ioctl(VIDIOC_QBUF) failed: " << errno << " (" << strerror(errno) << ")" << std::endl; @@ -631,18 +588,7 @@ bool VeyeIMX287m::initCam() fflush(stdout); fflush(stderr); - // std::cout << "test return false" << std::endl; - // return false; - - // int buffer_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - // ret = ioctl(m_cam_fd, VIDIOC_STREAMON, &buffer_type); - // if (ret != 0) - // { - // DBG("ioctl(VIDIOC_STREAMON) failed %d(%s)", errno, strerror(errno)); - // return false; - // } - - DBG("cam init done."); + std::cout << "imx287 cam initialized" << std::endl; return true; } @@ -693,8 +639,6 @@ void VeyeIMX287m::calcFrameLoop(std::stop_token stopToken) } } -// Image &VeyeIMX287m::dequeueImageBuffer() -// bool VeyeIMX287m::dequeueImageBuffer(Image &image) bool VeyeIMX287m::dequeueImageBuffer(size_t &imageIndex) // TODO: get Image from video_buffer_ptr { @@ -754,7 +698,6 @@ bool VeyeIMX287m::dequeueImageBuffer(size_t &imageIndex) buf.index = requestIdx++ % BUFFER_COUNT; { - // m_bufferMutexes[buffer.index].lock(); { std::lock_guard lock(m_camMtx); QElapsedTimer t; diff --git a/src/camera/veyeimx287m.h b/src/camera/veyeimx287m.h index d8c42ae..9b96afe 100644 --- a/src/camera/veyeimx287m.h +++ b/src/camera/veyeimx287m.h @@ -54,8 +54,6 @@ public: bool set_gain(const float value) override; std::optional get_gain() override; - bool setLaserLevel(int value) override; - public: /*! * \brief processedCounter - count of images processed in current second. @@ -65,7 +63,6 @@ public: private: bool openCam(); - bool selectCam(int camIdx = 0); bool initCam(); bool initI2C(); @@ -91,7 +88,7 @@ private: * to m_videoBuffers[i] which is being copied to m_images[i]. In theory, it * should not overlap if BUFFER_COUNT > theads count */ - std::array m_videoBuffers; + std::array m_videoBuffers{0}; struct buffer { -- cgit v1.2.3-70-g09d2