summaryrefslogtreecommitdiff
path: root/src/libcamera/include/device_enumerator.h
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2018-12-21 02:38:32 +0100
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2018-12-31 00:58:15 +0100
commitaf8c212600f9c609ef63819f7aa0ff10fbf7ee63 (patch)
treec5823f0f6cac25244f3f90abac0d9cfb2cf6aa79 /src/libcamera/include/device_enumerator.h
parentc0d39bab5bf3be585a7860d51429913187d05f04 (diff)
libcamera: device_enumerator: add DeviceEnumerator class
Provide a DeviceEnumerator base class which enumerates all media devices in the system and information about them, resolving Media Controller data structures to paths and a method to search in all the enumerated information. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/include/device_enumerator.h')
-rw-r--r--src/libcamera/include/device_enumerator.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libcamera/include/device_enumerator.h b/src/libcamera/include/device_enumerator.h
index ed1e986f..1f8cef33 100644
--- a/src/libcamera/include/device_enumerator.h
+++ b/src/libcamera/include/device_enumerator.h
@@ -53,6 +53,28 @@ private:
std::vector<std::string> entities_;
};
+class DeviceEnumerator
+{
+public:
+ virtual ~DeviceEnumerator();
+
+ virtual int init() = 0;
+ virtual int enumerate() = 0;
+
+ DeviceInfo *search(DeviceMatch &dm) const;
+
+protected:
+ int addDevice(const std::string &devnode);
+
+private:
+ std::vector<DeviceInfo *> devices_;
+
+ int readInfo(int fd, struct media_device_info &info);
+ int readTopology(int fd, std::map<std::string, std::string> &entities);
+
+ virtual std::string lookupDevnode(int major, int minor) = 0;
+};
+
} /* namespace libcamera */
#endif /* __LIBCAMERA_DEVICE_ENUMERATOR_H__ */