summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSakari Ailus <sakari.ailus@iki.fi>2012-01-14 21:33:36 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2012-05-05 14:34:18 +0200
commit888b03b281397f2569af50b33d3a7de3c93e0fd9 (patch)
tree84a27ef024b9cb0cacb31d8454e66e32aa6ad4b8
parentedad96b36f85dad7f681a7938b50b4619d11ed50 (diff)
libmediactl: Implement MEDIA_ENT_ID_FLAG_NEXT in media_get_entity_by_id()
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi> [laurent.pinchart@ideasonboard Clarify documentation] Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/mediactl.c7
-rw-r--r--src/mediactl.h6
2 files changed, 11 insertions, 2 deletions
diff --git a/src/mediactl.c b/src/mediactl.c
index bc6a713..14cff30 100644
--- a/src/mediactl.c
+++ b/src/mediactl.c
@@ -26,6 +26,7 @@
#include <sys/types.h>
#include <unistd.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -83,12 +84,16 @@ struct media_entity *media_get_entity_by_name(struct media_device *media,
struct media_entity *media_get_entity_by_id(struct media_device *media,
__u32 id)
{
+ bool next = id & MEDIA_ENT_ID_FLAG_NEXT;
unsigned int i;
+ id &= ~MEDIA_ENT_ID_FLAG_NEXT;
+
for (i = 0; i < media->entities_count; ++i) {
struct media_entity *entity = &media->entities[i];
- if (entity->info.id == id)
+ if ((entity->info.id == id && !next) ||
+ (entity->info.id > id && next))
return entity;
}
diff --git a/src/mediactl.h b/src/mediactl.h
index 1b47b7e..2296fe2 100644
--- a/src/mediactl.h
+++ b/src/mediactl.h
@@ -164,7 +164,11 @@ struct media_entity *media_get_entity_by_name(struct media_device *media,
* @param media - media device.
* @param id - entity ID.
*
- * Search for an entity with an ID equal to @a id.
+ * This function searches for an entity based on its ID using an exact match or
+ * next ID method based on the given @a id. If @a id is ORed with
+ * MEDIA_ENT_ID_FLAG_NEXT, the function will return the entity with the smallest
+ * ID larger than @a id. Otherwise it will return the entity with an ID equal to
+ * @a id.
*
* @return A pointer to the entity if found, or NULL otherwise.
*/