/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2018, Google Inc. * * device_enumerator.h - API to enumerate and find media devices */ #pragma once #include #include #include #include namespace libcamera { class MediaDevice; class DeviceMatch { public: DeviceMatch(const std::string &driver); void add(const std::string &entity); bool match(const MediaDevice *device) const; private: std::string driver_; std::vector entities_; }; class DeviceEnumerator { public: static std::unique_ptr create(); virtual ~DeviceEnumerator(); virtual int init() = 0; virtual int enumerate() = 0; std::shared_ptr search(const DeviceMatch &dm); Signal<> devicesAdded; protected: std::unique_ptr createDevice(const std::string &deviceNode); void addDevice(std::unique_ptr media); void removeDevice(const std::string &deviceNode); private: std::vector> devices_; }; } /* namespace libcamera */