From a376aa331ae9308f55baa9bb50680c35dc032058 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 3 Jul 2021 21:37:44 +0300 Subject: libcamera: media_object: Expose entity type Add a new field to the MediaEntity class to identify the type of interface it exposes to userspace. The MediaEntity constructor is changed to take a media_v2_interface pointer instead of just the device node major and minor to have access to the interface type. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham Tested-by: Martin Kepplinger --- include/libcamera/internal/media_object.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/libcamera/internal/media_object.h b/include/libcamera/internal/media_object.h index 2f5d33e1..6ae22c67 100644 --- a/include/libcamera/internal/media_object.h +++ b/include/libcamera/internal/media_object.h @@ -88,9 +88,17 @@ private: class MediaEntity : public MediaObject { public: + enum class Type { + Invalid, + MediaEntity, + V4L2Subdevice, + V4L2VideoDevice, + }; + const std::string &name() const { return name_; } unsigned int function() const { return function_; } unsigned int flags() const { return flags_; } + Type type() const { return type_; } const std::string &deviceNode() const { return deviceNode_; } unsigned int deviceMajor() const { return major_; } unsigned int deviceMinor() const { return minor_; } @@ -108,13 +116,14 @@ private: friend class MediaDevice; MediaEntity(MediaDevice *dev, const struct media_v2_entity *entity, - unsigned int major = 0, unsigned int minor = 0); + const struct media_v2_interface *iface); void addPad(MediaPad *pad); std::string name_; unsigned int function_; unsigned int flags_; + Type type_; std::string deviceNode_; unsigned int major_; unsigned int minor_; -- cgit v1.2.1