diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2019-01-14 15:19:19 +0100 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2019-01-21 11:35:30 +0100 |
commit | ec53057f0af858a0fbfbb6ceeb3cf83b5921858f (patch) | |
tree | 7e5973e803cb78e43546add8915f59af4167e291 | |
parent | 21ff749a790386f87e767a690c77948a6474ceaa (diff) |
libcamera: media_object: Add functions to entities
Media entities convey information about their main function in the
'function' field of 'struct media_v2_entity'.
Store the main function in the MediaEntity function_ class member and provide
a getter function for that.
While at there update comments, keep the MediaPad description in sync
with the MediaEntity one and remove a stale TODO entry.
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | src/libcamera/include/media_object.h | 2 | ||||
-rw-r--r-- | src/libcamera/media_object.cpp | 22 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/libcamera/include/media_object.h b/src/libcamera/include/media_object.h index 7fc44415..a10f7e13 100644 --- a/src/libcamera/include/media_object.h +++ b/src/libcamera/include/media_object.h @@ -84,6 +84,7 @@ class MediaEntity : public MediaObject { public: const std::string &name() const { return name_; } + unsigned int function() const { return function_; } unsigned int deviceMajor() const { return major_; } unsigned int deviceMinor() const { return minor_; } @@ -103,6 +104,7 @@ private: ~MediaEntity(); std::string name_; + unsigned int function_; std::string devnode_; unsigned int major_; unsigned int minor_; diff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp index cb3af85e..530db71d 100644 --- a/src/libcamera/media_object.cpp +++ b/src/libcamera/media_object.cpp @@ -166,7 +166,7 @@ MediaLink::MediaLink(const struct media_v2_link *link, MediaPad *source, * Pads are created from the information provided by the Media Controller API * in the media_v2_pad structure. They reference the entity() they belong to. * - * In addition to its graph id, every media graph pad is identified by an index + * In addition to their graph id, media graph pads are identified by an index * unique in the context of the entity the pad belongs to. * * A pad can be either a 'source' pad or a 'sink' pad. This information is @@ -242,11 +242,9 @@ void MediaPad::addLink(MediaLink *link) * Entities are created from the information provided by the Media Controller * API in the media_v2_entity structure. They reference the pads() they contain. * - * In addition to its graph id, every media graph entity is identified by a - * name() unique in the media device context. - * - * \todo Add support for associating a devnode to the entity when integrating - * with DeviceEnumerator. + * In addition to their graph id, media graph entities are identified by a + * name() unique in the media device context. They implement a function() and + * may expose a devnode(). */ /** @@ -256,6 +254,16 @@ void MediaPad::addLink(MediaLink *link) */ /** + * \fn MediaEntity::function() + * \brief Retrieve the entity's main function + * + * Media entity functions are expressed using the MEDIA_ENT_F_* macros + * defined by the Media Controller API. + * + * \return The entity's function + */ + +/** * \fn MediaEntity::deviceMajor() * \brief Retrieve the major number of the interface associated with the entity * \return The interface major number, or 0 if the entity isn't associated with @@ -336,7 +344,7 @@ MediaEntity::MediaEntity(MediaDevice *dev, const struct media_v2_entity *entity, unsigned int major, unsigned int minor) : MediaObject(dev, entity->id), name_(entity->name), - major_(major), minor_(minor) + function_(entity->function), major_(major), minor_(minor) { } |