]> sigrok.org Git - pulseview.git/blobdiff - pv/devicemanager.hpp
Fix #1035 by checking for exceptions when accessing config
[pulseview.git] / pv / devicemanager.hpp
index 43d93a7a88f5778d0bed24bcead6ec1f2e9dc85e..9b8ef3d120a3a4c68f97a9e359156270516ed4eb 100644 (file)
 #include <list>
 #include <map>
 #include <memory>
+#include <set>
 #include <string>
+#include <vector>
 
 using std::list;
 using std::map;
+using std::set;
 using std::shared_ptr;
 using std::string;
+using std::vector;
 
 namespace Glib {
 class VariantBase;
@@ -40,6 +44,8 @@ class Context;
 class Driver;
 }
 
+using sigrok::ConfigKey;
+
 namespace pv {
 
 namespace devices {
@@ -52,7 +58,8 @@ class Session;
 class DeviceManager
 {
 public:
-       DeviceManager(shared_ptr<sigrok::Context> context);
+       DeviceManager(shared_ptr<sigrok::Context> context,
+               std::string driver, bool do_scan);
 
        ~DeviceManager() = default;
 
@@ -61,6 +68,9 @@ public:
        shared_ptr<sigrok::Context> context();
 
        const list< shared_ptr<devices::HardwareDevice> >& devices() const;
+       shared_ptr<devices::HardwareDevice> user_spec_device() const;
+
+       bool driver_supported(shared_ptr<sigrok::Driver> driver) const;
 
        list< shared_ptr<devices::HardwareDevice> > driver_scan(
                shared_ptr<sigrok::Driver> driver,
@@ -76,9 +86,14 @@ private:
        bool compare_devices(shared_ptr<devices::Device> a,
                shared_ptr<devices::Device> b);
 
+       static map<const ConfigKey *, Glib::VariantBase>
+       drive_scan_options(vector<string> user_spec,
+               set<const ConfigKey *> driver_opts);
+
 protected:
        shared_ptr<sigrok::Context> context_;
        list< shared_ptr<devices::HardwareDevice> > devices_;
+       shared_ptr<devices::HardwareDevice> user_spec_device_;
 };
 
 } // namespace pv