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>
This commit is contained in:
Jacopo Mondi 2019-01-14 15:19:19 +01:00
parent 21ff749a79
commit ec53057f0a
2 changed files with 17 additions and 7 deletions

View file

@ -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_;

View file

@ -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().
*/
/**
@ -255,6 +253,16 @@ void MediaPad::addLink(MediaLink *link)
* \return The entity name
*/
/**
* \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
@ -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)
{
}