#ifndef PULSEVIEW_PV_DEVICE_DEVINST_H
#define PULSEVIEW_PV_DEVICE_DEVINST_H
+#include <memory>
#include <string>
-#include <boost/shared_ptr.hpp>
-
#include <QObject>
#include <glib.h>
#include <stdint.h>
struct sr_dev_inst;
-struct sr_probe;
-struct sr_probe_group;
+struct sr_channel;
+struct sr_channel_group;
+
+#include <pv/sigsession.h>
namespace pv {
+
namespace device {
class DevInst : public QObject
{
Q_OBJECT
+protected:
+ DevInst();
+
public:
- DevInst(sr_dev_inst *sdi);
+ virtual sr_dev_inst* dev_inst() const = 0;
+
+ virtual void use(SigSession *owner) throw(QString);
- sr_dev_inst* dev_inst() const;
+ virtual void release();
- std::string format_device_title() const;
+ SigSession* owner() const;
- GVariant* get_config(const sr_probe_group *group, int key);
+ virtual std::string format_device_title() const = 0;
- bool set_config(const sr_probe_group *group, int key, GVariant *data);
+ GVariant* get_config(const sr_channel_group *group, int key);
- GVariant* list_config(const sr_probe_group *group, int key);
+ bool set_config(const sr_channel_group *group, int key, GVariant *data);
- void enable_probe(const sr_probe *probe, bool enable = true);
+ GVariant* list_config(const sr_channel_group *group, int key);
+
+ void enable_channel(const sr_channel *channel, bool enable = true);
/**
* @brief Gets the sample limit from the driver.
*/
uint64_t get_sample_limit();
-signals:
+ virtual bool is_trigger_enabled() const;
+
+public:
+ virtual void start();
+
+ virtual void run();
+
+Q_SIGNALS:
void config_changed();
-private:
- sr_dev_inst *const _sdi;
+protected:
+ SigSession *_owner;
};
} // device