[libcamera-devel] [PATCH v3 6/6] [HACK] ipu3: Set and get a few sensor controls
Jacopo Mondi
jacopo at jmondi.org
Thu Jun 13 13:20:46 CEST 2019
Not to merge patch to demonstrate how to set controls on the image
sensor device.
Not-Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/libcamera/pipeline/ipu3/ipu3.cpp | 49 ++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index d13bdfcce54e..a803fa9d8dde 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -688,6 +688,55 @@ int PipelineHandlerIPU3::start(Camera *camera)
ImgUDevice *imgu = data->imgu_;
int ret;
+ /* --- Get control values --- */
+ V4L2Controls controls;
+ controls.add(V4L2_CID_EXPOSURE);
+ controls.add(V4L2_CID_ANALOGUE_GAIN);
+ ret = cio2->sensor_->getControls(&controls);
+ if (ret) {
+ LOG(Error) << "Failed to get control values";
+ return -EINVAL;
+ }
+
+ for (const V4L2Control &ctrl : controls) {
+ unsigned int id = ctrl.id();
+ V4L2ControlInfo *info = cio2->sensor_->getControlInfo(id);
+ if (!info)
+ continue;
+
+ int val = controls.get(id);
+ LOG(Error) << "Control : " << id << " - name : " << info->name()
+ << " - value: " << val;
+ }
+
+ /* --- Set control values --- */
+ controls.set(V4L2_CID_EXPOSURE, 2046);
+ controls.set(V4L2_CID_ANALOGUE_GAIN, 1024);
+
+ ret = cio2->sensor_->setControls(&controls);
+ if (ret) {
+ LOG(IPU3, Error) << "Failed to set controls";
+ return ret;
+ }
+
+ /* --- Get control values back again and verify they have changed --- */
+ ret = cio2->sensor_->getControls(&controls);
+ if (ret) {
+ LOG(Error) << "Failed to get control values";
+ return -EINVAL;
+ }
+
+ for (const V4L2Control &ctrl : controls) {
+ unsigned int id = ctrl.id();
+ V4L2ControlInfo *info = cio2->sensor_->getControlInfo(id);
+ if (!info)
+ continue;
+
+ int val = controls.get(id);
+ LOG(Error) << "Control : " << id << " - name : " << info->name()
+ << " - value: " << val;
+ }
+
/*
* Start the ImgU video devices, buffers will be queued to the
* ImgU output and viewfinder when requests will be queued.
--
2.21.0
More information about the libcamera-devel
mailing list