diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2018-12-21 02:38:32 +0100 |
---|---|---|
committer | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2018-12-31 00:58:15 +0100 |
commit | af8c212600f9c609ef63819f7aa0ff10fbf7ee63 (patch) | |
tree | c5823f0f6cac25244f3f90abac0d9cfb2cf6aa79 /src/libcamera/include/device_enumerator.h | |
parent | c0d39bab5bf3be585a7860d51429913187d05f04 (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.h | 22 |
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__ */ |