]> sigrok.org Git - pulseview.git/blobdiff - pv/devices/device.cpp
Session: Implement .sr file save/restore
[pulseview.git] / pv / devices / device.cpp
index 6a36ff384a990b5e9245c8b9d757e903aa56cc5f..403acc4896c684d82d3ee35cf279bc2c945c700e 100644 (file)
@@ -28,6 +28,7 @@ using std::map;
 using std::set;
 
 using sigrok::ConfigKey;
+using sigrok::Capability;
 using sigrok::Error;
 
 using Glib::VariantBase;
@@ -36,19 +37,23 @@ using Glib::Variant;
 namespace pv {
 namespace devices {
 
-Device::Device() {
+Device::Device()
+{
 }
 
-Device::~Device() {
+Device::~Device()
+{
        if (session_)
                session_->remove_datafeed_callbacks();
 }
 
-std::shared_ptr<sigrok::Session> Device::session() const {
+std::shared_ptr<sigrok::Session> Device::session() const
+{
        return session_;
 }
 
-std::shared_ptr<sigrok::Device> Device::device() const {
+std::shared_ptr<sigrok::Device> Device::device() const
+{
        return device_;
 }
 
@@ -60,33 +65,32 @@ template<typename T>
 T Device::read_config(const ConfigKey *key, const T default_value)
 {
        assert(key);
-       map< const ConfigKey*, set<sigrok::Capability> > keys;
 
        if (!device_)
                return default_value;
 
-       try {
-               keys = device_->config_keys(ConfigKey::DEVICE_OPTIONS);
-       } catch (const Error) {
-               return default_value;
-       }
-
-       const auto iter = keys.find(key);
-       if (iter == keys.end() ||
-               (*iter).second.find(sigrok::GET) != (*iter).second.end())
+       if (!device_->config_check(key, Capability::GET))
                return default_value;
 
-       return VariantBase::cast_dynamic<Variant<T>>(
+       return VariantBase::cast_dynamic<Glib::Variant<guint64>>(
                device_->config_get(ConfigKey::SAMPLERATE)).get();
 }
 
-void Device::run() {
+void Device::start()
+{
+       assert(session_);
+       session_->start();
+}
+
+void Device::run()
+{
        assert(device_);
        assert(session_);
        session_->run();
 }
 
-void Device::stop() {
+void Device::stop()
+{
        assert(session_);
        session_->stop();
 }