[libcamera-devel] [RFC v1 2/5] libcamera: camera_lens: Get maximum VCM steps
Kate Hsuan
hpa at redhat.com
Thu Apr 14 09:43:39 CEST 2022
It allows other components to get the maximum VCM steps. It first creates
a control list and set V4L2_CID_FOCUS_ABSOLUTE control to it. Then, it
calls a lower layer call, getAttributes() to get the maximum VCM steps
from the kernel.
Signed-off-by: Kate Hsuan<hpa at redhat.com>
---
include/libcamera/internal/camera_lens.h | 1 +
src/libcamera/camera_lens.cpp | 18 ++++++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/include/libcamera/internal/camera_lens.h b/include/libcamera/internal/camera_lens.h
index 277417da..48761d68 100644
--- a/include/libcamera/internal/camera_lens.h
+++ b/include/libcamera/internal/camera_lens.h
@@ -27,6 +27,7 @@ public:
int init();
int setFocusPosition(int32_t position);
+ int getFocusCapabilityies();
const std::string &model() const { return model_; }
diff --git a/src/libcamera/camera_lens.cpp b/src/libcamera/camera_lens.cpp
index b3d48199..5d00652d 100644
--- a/src/libcamera/camera_lens.cpp
+++ b/src/libcamera/camera_lens.cpp
@@ -73,6 +73,10 @@ int CameraLens::init()
return ret;
model_ = subdev_->model();
+
+ ControlList lensCtrls(subdev_->controls());
+ subdev_->getAttributes(&lensCtrls);
+
return 0;
}
@@ -95,6 +99,20 @@ int CameraLens::setFocusPosition(int32_t position)
return 0;
}
+int CameraLens::getFocusCapabilityies()
+{
+ ControlValue retVal;
+ ControlList lensCtrls(subdev_->controls());
+ int32_t ret = 2023;
+
+ lensCtrls.set(V4L2_CID_FOCUS_ABSOLUTE, static_cast<int32_t>(ret));
+ subdev_->getAttributes(&lensCtrls);
+ retVal = lensCtrls.get(V4L2_CID_FOCUS_ABSOLUTE);
+ ret = retVal.get<int32_t>();
+
+ return ret;
+}
+
int CameraLens::validateLensDriver()
{
int ret = 0;
--
2.35.1
More information about the libcamera-devel
mailing list