#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>
-extern "C" {
#include <libsigrok/libsigrok.h>
-}
namespace pv {
-class AnalogData;
-class AnalogDataSnapshot;
-class LogicData;
-class LogicDataSnapshot;
+namespace data {
+class Analog;
+class AnalogSnapshot;
+class Logic;
+class LogicSnapshot;
+}
namespace view {
class Signal;
~SigSession();
- void load_file(const std::string &name);
+ 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,
- uint64_t sample_rate);
+ void start_capture(struct sr_dev_inst* sdi,
+ uint64_t record_length,
+ boost::function<void (const QString)> error_handler);
void stop_capture();
std::vector< boost::shared_ptr<view::Signal> >
get_signals();
- boost::shared_ptr<LogicData> get_data();
+ boost::shared_ptr<data::Logic> get_data();
private:
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_meta_logic(const struct sr_dev_inst *sdi,
- const sr_datafeed_meta_logic &meta_logic);
+ void feed_in_header(const sr_dev_inst *sdi);
- void feed_in_meta_analog(const struct sr_dev_inst *sdi,
- const sr_datafeed_meta_analog &meta_analog);
+ void feed_in_meta(const sr_dev_inst *sdi,
+ const sr_datafeed_meta &meta);
void feed_in_logic(const sr_datafeed_logic &logic);
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:
mutable boost::mutex _sampling_mutex;
capture_state _capture_state;
- uint64_t _sample_rate;
mutable boost::mutex _signals_mutex;
std::vector< boost::shared_ptr<view::Signal> > _signals;
mutable boost::mutex _data_mutex;
- boost::shared_ptr<LogicData> _logic_data;
- boost::shared_ptr<LogicDataSnapshot> _cur_logic_snapshot;
- boost::shared_ptr<AnalogData> _analog_data;
- boost::shared_ptr<AnalogDataSnapshot> _cur_analog_snapshot;
+ boost::shared_ptr<data::Logic> _logic_data;
+ boost::shared_ptr<data::LogicSnapshot> _cur_logic_snapshot;
+ boost::shared_ptr<data::Analog> _analog_data;
+ boost::shared_ptr<data::AnalogSnapshot> _cur_analog_snapshot;
std::auto_ptr<boost::thread> _sampling_thread;