#ifndef PULSEVIEW_PV_SIGSESSION_H
#define PULSEVIEW_PV_SIGSESSION_H
+#include <boost/function.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/thread.hpp>
#include <vector>
#include <QObject>
+#include <QString>
#include <libsigrok/libsigrok.h>
~SigSession();
- void load_file(const std::string &name);
+ /**
+ * Sets device instance that will be used in the next capture session.
+ */
+ void set_device(struct sr_dev_inst *sdi);
+
+ void load_file(const std::string &name,
+ boost::function<void (const QString)> error_handler);
capture_state get_capture_state() const;
- void start_capture(struct sr_dev_inst* sdi,
- uint64_t record_length);
+ void start_capture(uint64_t record_length,
+ boost::function<void (const QString)> error_handler);
void stop_capture();
void set_capture_state(capture_state state);
private:
- void load_thread_proc(const std::string name);
+ void load_thread_proc(const std::string name,
+ boost::function<void (const QString)> error_handler);
void sample_thread_proc(struct sr_dev_inst *sdi,
- uint64_t record_length);
+ uint64_t record_length,
+ boost::function<void (const QString)> error_handler);
void feed_in_header(const sr_dev_inst *sdi);
const struct sr_datafeed_packet *packet);
static void data_feed_in_proc(const struct sr_dev_inst *sdi,
- const struct sr_datafeed_packet *packet);
+ const struct sr_datafeed_packet *packet, void *cb_data);
private:
+
+ /**
+ * The device instance that will be used in the next capture session.
+ */
+ struct sr_dev_inst *_sdi;
+
mutable boost::mutex _sampling_mutex;
capture_state _capture_state;