[libcamera-devel] libcamera: Test sensor's ability to discover ancillary devices
diff mbox series

Message ID mailman.195.1650520453.20186.libcamera-devel@lists.libcamera.org
State Accepted
Headers show
Series
  • [libcamera-devel] libcamera: Test sensor's ability to discover ancillary devices
Related show

Commit Message

Yunke Cao April 21, 2022, 5:54 a.m. UTC
Use vimc lens to test sensor's ability to discover ancillary lens.

Tested with the recent kernel patch for vimc lens:
https://lore.kernel.org/linux-media/20220415023855.2568366-1-yunkec@google.com/

Signed-off-by: Yunke Cao <yunkec@google.com>
---
 src/libcamera/camera_sensor.cpp      |  5 +++++
 src/libcamera/pipeline/vimc/vimc.cpp |  2 ++
 test/camera-sensor.cpp               | 13 +++++++++++++
 3 files changed, 20 insertions(+)

Patch
diff mbox series

diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index eaa2da6b..fe366267 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -152,6 +152,11 @@  int CameraSensor::init()
 	 */
 	if (entity_->device()->driver() == "vimc") {
 		initVimcDefaultProperties();
+
+		ret = discoverAncillaryDevices();
+		if (ret)
+			return ret;
+
 		return initProperties();
 	}
 
diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
index c3e33ecf..1d8b9f4d 100644
--- a/src/libcamera/pipeline/vimc/vimc.cpp
+++ b/src/libcamera/pipeline/vimc/vimc.cpp
@@ -449,6 +449,8 @@  bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
 	dm.add("Sensor B");
 	dm.add("Debayer A");
 	dm.add("Debayer B");
+	dm.add("Lens A");
+	dm.add("Lens B");
 	dm.add("RGB/YUV Input");
 	dm.add("Scaler");
 
diff --git a/test/camera-sensor.cpp b/test/camera-sensor.cpp
index 372ee4af..55a5b68d 100644
--- a/test/camera-sensor.cpp
+++ b/test/camera-sensor.cpp
@@ -12,6 +12,7 @@ 
 
 #include <libcamera/base/utils.h>
 
+#include "libcamera/internal/camera_lens.h"
 #include "libcamera/internal/camera_sensor.h"
 #include "libcamera/internal/device_enumerator.h"
 #include "libcamera/internal/media_device.h"
@@ -57,6 +58,12 @@  protected:
 			return TestFail;
 		}
 
+		lens_ = sensor_->focusLens();
+		if (!lens_) {
+			cerr << "Failed to get ancillary lens" << endl;
+			return TestFail;
+		}
+
 		return TestPass;
 	}
 
@@ -104,6 +111,11 @@  protected:
 			return TestFail;
 		}
 
+		if (lens_->setFocusPosition(10)) {
+			cerr << "Failed to set lens focus position" << endl;
+			return TestFail;
+		}
+
 		return TestPass;
 	}
 
@@ -116,6 +128,7 @@  private:
 	std::unique_ptr<DeviceEnumerator> enumerator_;
 	std::shared_ptr<MediaDevice> media_;
 	CameraSensor *sensor_;
+	CameraLens *lens_;
 };
 
 TEST_REGISTER(CameraSensorTest)