#ifndef SIGSESSION_H
#define SIGSESSION_H
+#include <boost/shared_ptr.hpp>
+
+#include <string>
+#include <vector>
+
+#include <QObject>
+
extern "C" {
#include <libsigrok/libsigrok.h>
}
-#include <string>
+class LogicData;
+class LogicDataSnapshot;
+class Signal;
-class SigSession
+class SigSession : public QObject
{
+ Q_OBJECT
+
public:
SigSession();
~SigSession();
- void loadFile(const std::string &name);
+ void load_file(const std::string &name);
+
+ void start_capture(struct sr_dev_inst* sdi, uint64_t record_length,
+ uint64_t sample_rate);
+
+ std::vector< boost::shared_ptr<Signal> >&
+ get_signals();
private:
- void dataFeedIn(const struct sr_dev_inst *sdi,
+ void data_feed_in(const struct sr_dev_inst *sdi,
struct sr_datafeed_packet *packet);
- static void dataFeedInProc(const struct sr_dev_inst *sdi,
+ static void data_feed_in_proc(const struct sr_dev_inst *sdi,
struct sr_datafeed_packet *packet);
private:
- int probeList[SR_MAX_NUM_PROBES + 1];
+ std::vector< boost::shared_ptr<Signal> > _signals;
+ boost::shared_ptr<LogicData> _logic_data;
+ boost::shared_ptr<LogicDataSnapshot> _cur_logic_snapshot;
+
+signals:
+ void data_updated();
private:
// TODO: This should not be necessary. Multiple concurrent
// sessions should should be supported and it should be
// possible to associate a pointer with a sr_session.
- static SigSession *session;
+ static SigSession *_session;
};
#endif // SIGSESSION_H