/* * This file is part of the PulseView project. * * Copyright (C) 2013 Joel Holdsworth * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ #ifndef PULSEVIEW_PV_DEVICEMANAGER_HPP #define PULSEVIEW_PV_DEVICEMANAGER_HPP #include #include #include #include #include #include using std::list; using std::map; using std::set; using std::shared_ptr; using std::string; using std::vector; namespace Glib { class VariantBase; } namespace sigrok { class ConfigKey; class Context; class Driver; } using sigrok::ConfigKey; namespace pv { namespace devices { class Device; class HardwareDevice; } class Session; class DeviceManager { public: DeviceManager(shared_ptr context, std::string driver, bool do_scan); ~DeviceManager() = default; const shared_ptr& context() const; shared_ptr context(); const list< shared_ptr >& devices() const; shared_ptr user_spec_device() const; list< shared_ptr > driver_scan( shared_ptr driver, map drvopts); const map get_device_info( const shared_ptr device); const shared_ptr find_device_from_info( const map search_info); private: bool compare_devices(shared_ptr a, shared_ptr b); static map drive_scan_options(vector user_spec, set driver_opts); protected: shared_ptr context_; list< shared_ptr > devices_; shared_ptr user_spec_device_; }; } // namespace pv #endif // PULSEVIEW_PV_DEVICEMANAGER_HPP