[libcamera-devel] [PATCH] libcamera: camera_sensor: Add model() function
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Apr 28 00:26:51 CEST 2020
Add a new model() function to the CameraSensor class to report the
camera sensor model.
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
src/libcamera/camera_sensor.cpp | 24 ++++++++++++++++++++++++
src/libcamera/include/camera_sensor.h | 1 +
2 files changed, 25 insertions(+)
Jacopo,
I'll need this in pipeline handlers to obtain the sensor model, in order
to construct a configuration file name, without having to generate the
whole CameraSensorInfo. Is this OK with you ? As I've taken the
implementation of the function from your code, should I add your
Signed-off-by ?
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index c893b90979d8..55a9fbd71e69 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -163,6 +163,30 @@ int CameraSensor::init()
return 0;
}
+/**
+ * \brief Retrieve the sensor model name
+ *
+ * The sensor model name is a free-formed string that uniquely identifies the
+ * sensor model.
+ *
+ * \return The sensor model name
+ */
+std::string CameraSensor::model() const
+{
+ /*
+ * Extract the camera sensor model name from the media entity name.
+ *
+ * \todo There is no standardized naming scheme for sensor entities
+ * in the Linux kernel at the moment. The most common naming scheme
+ * is the one obtained by associating the sensor name and its I2C
+ * device and bus addresses in the form of: "devname i2c-adapt:i2c-addr"
+ * Assume this is the standard naming scheme and parse the first part
+ * of the entity name to obtain "devname".
+ */
+ std::string entityName = subdev_->entity()->name();
+ return entityName.substr(0, entityName.find(' '));
+}
+
/**
* \fn CameraSensor::entity()
* \brief Retrieve the sensor media entity
diff --git a/src/libcamera/include/camera_sensor.h b/src/libcamera/include/camera_sensor.h
index 5277f7f7fe87..e68185370eb2 100644
--- a/src/libcamera/include/camera_sensor.h
+++ b/src/libcamera/include/camera_sensor.h
@@ -33,6 +33,7 @@ public:
int init();
+ std::string model() const;
const MediaEntity *entity() const { return entity_; }
const std::vector<unsigned int> &mbusCodes() const { return mbusCodes_; }
const std::vector<Size> &sizes() const { return sizes_; }
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list