diff options
| author | Nikita Kostovsky <luntik2012@gmail.com> | 2025-01-26 19:14:47 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <luntik2012@gmail.com> | 2025-01-26 19:14:47 +0100 |
| commit | 0e5549aee87b98310eaba7dd3bba9828d2331eab (patch) | |
| tree | 3a1e0363f51a7c3df2a83e08a85c8e0043f1ffc0 /src/camera | |
| parent | 90503471c49ef6ab795a61a2dc7df1e35761fa7e (diff) | |
add gain control, laser level (strobe span) control
Diffstat (limited to 'src/camera')
| -rw-r--r-- | src/camera/icamera.h | 1 | ||||
| -rw-r--r-- | src/camera/innomakerov9281.cpp | 18 | ||||
| -rw-r--r-- | src/camera/innomakerov9281.h | 2 | ||||
| -rw-r--r-- | src/camera/ov9281.h | 5 |
4 files changed, 24 insertions, 2 deletions
diff --git a/src/camera/icamera.h b/src/camera/icamera.h index 588b23e..3fccc4b 100644 --- a/src/camera/icamera.h +++ b/src/camera/icamera.h @@ -34,6 +34,7 @@ class ICamera public: virtual bool setExposureTimeUs(int value) = 0; virtual bool setGain(int value) = 0; + virtual bool setLaserLevel(int value) = 0; public: libcamera::Signal<std::shared_ptr<Pixels>> newPixels; diff --git a/src/camera/innomakerov9281.cpp b/src/camera/innomakerov9281.cpp index 73ceacb..56550ed 100644 --- a/src/camera/innomakerov9281.cpp +++ b/src/camera/innomakerov9281.cpp @@ -146,15 +146,29 @@ bool InnoMakerOV9281::setExposureTimeUs(int valueUs) // valueNs = (valueNs / exposureStep) * exposureStep; // std::clamp(valueNs, exposureStep, exposureStep * maxExposureStepMultiplier); - + // setGain(rand() % 254); + // setGain(3); + // setLaserLevel(rand() % 0x7fffffff); + // setLaserLevel(rand() % 100); + // int exp = rand() % 10; + // return setCamParam(V4L2_CID_EXPOSURE, exp * exp * exp * exp * exp * exp); return setCamParam(V4L2_CID_EXPOSURE, valueUs); } bool InnoMakerOV9281::setGain(int value) { + std::cout << __func__ << ": " << value << std::endl << std::flush; + return setCamParam(V4L2_CID_GAIN, value); } +bool InnoMakerOV9281::setLaserLevel(int value) +{ + std::cout << __func__ << ": " << value << std::endl << std::flush; + + return setCamParam(V4L2_CID_FLASH_TIMEOUT, value); +} + bool InnoMakerOV9281::setCamParam(unsigned int v4l2controlId, int value) { v4l2_control ctl{v4l2controlId, value}; @@ -344,7 +358,7 @@ bool InnoMakerOV9281::getImage(Image &image) if (elapsedTime > 1000.) { - // fprintf(stderr, "fps: %d, sec: %d\n", counter, curr.tv_sec); + fprintf(stderr, "fps: %d, sec: %d\n", counter, curr.tv_sec); fprintf(stderr, "sum: %d,\tcorr: %d,\tval: %d\n", sum_elapsed_ns / 1000 / counter, diff --git a/src/camera/innomakerov9281.h b/src/camera/innomakerov9281.h index 8c3a14e..ccfe1ac 100644 --- a/src/camera/innomakerov9281.h +++ b/src/camera/innomakerov9281.h @@ -31,6 +31,8 @@ public: bool setExposureTimeUs(int value) override; bool setGain(int value) override; + bool setLaserLevel(int value) override; + bool getImage(Image &image); public: diff --git a/src/camera/ov9281.h b/src/camera/ov9281.h index 6014483..e4b7417 100644 --- a/src/camera/ov9281.h +++ b/src/camera/ov9281.h @@ -47,6 +47,11 @@ public: assert(false); return false; }; + bool setLaserLevel(int value) override + { + assert(false); + return false; + }; // signals public: |
