[libcamera-devel] [PATCH] libcamera: camera_sensor: Add model() function
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Apr 28 04:28:44 CEST 2020
Hi Niklas,
On Tue, Apr 28, 2020 at 01:06:25AM +0200, Niklas Söderlund wrote:
> On 2020-04-28 01:26:51 +0300, Laurent Pinchart wrote:
> > 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"
>
> A quick test for me have this at "`devname` `i2c-adapt`-`i2c-addr`".
Correct.
> > + * Assume this is the standard naming scheme and parse the first part
> > + * of the entity name to obtain "devname".
>
> Would it make sens to verify the full entity name to match our
> assumption of the format and fail if it does not match? I'm thinking
> filing is better then reporting the wrong name due to our assumption
> about format is off.
We already have a problem here with vimc, as we'll report "Sensor"
instead of "Sensor B". I'll fix it with a proper heuristic. After
sleeping :-)
> > + */
> > + 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