X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=sigsession.cpp;h=47d9585b999cfd9fe263a29097f3f24b7582481d;hp=e6288e7c0cf64f4331ce1e8fcd160aec3f87c9ef;hb=3db297c4f9c6cf3023e68b1f9e37ac4ea1c7ef3c;hpb=e3f65ace22c6bcd371967302f8d01d0769e3a23f diff --git a/sigsession.cpp b/sigsession.cpp index e6288e7c..47d9585b 100644 --- a/sigsession.cpp +++ b/sigsession.cpp @@ -32,37 +32,77 @@ using namespace boost; using namespace std; // TODO: This should not be necessary -SigSession* SigSession::session = NULL; +SigSession* SigSession::_session = NULL; SigSession::SigSession() { // TODO: This should not be necessary - session = this; + _session = this; } SigSession::~SigSession() { // TODO: This should not be necessary - session = NULL; + _session = NULL; } -void SigSession::loadFile(const std::string &name) +void SigSession::load_file(const std::string &name) { if (sr_session_load(name.c_str()) == SR_OK) { /* sigrok session file */ - sr_session_datafeed_callback_add(dataFeedInProc); + sr_session_datafeed_callback_add(data_feed_in_proc); sr_session_start(); sr_session_run(); sr_session_stop(); } } +void SigSession::start_capture(struct sr_dev_inst *sdi, + uint64_t record_length, uint64_t sample_rate) +{ + sr_session_new(); + sr_session_datafeed_callback_add(data_feed_in_proc); + + if (sr_session_dev_add(sdi) != SR_OK) { + qDebug() << "Failed to use device."; + sr_session_destroy(); + return; + } + + if (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_SAMPLES, + &record_length) != SR_OK) { + qDebug() << "Failed to configure time-based sample limit."; + sr_session_destroy(); + return; + } + + if (sr_dev_config_set(sdi, SR_HWCAP_SAMPLERATE, + &sample_rate) != SR_OK) { + qDebug() << "Failed to configure samplerate."; + sr_session_destroy(); + return; + } + + if (sr_session_start() != SR_OK) { + qDebug() << "Failed to start session."; + return; + } + + sr_session_run(); + sr_session_destroy(); +} + vector< shared_ptr >& SigSession::get_signals() { return _signals; } -void SigSession::dataFeedIn(const struct sr_dev_inst *sdi, +boost::shared_ptr SigSession::get_data() +{ + return _logic_data; +} + +void SigSession::data_feed_in(const struct sr_dev_inst *sdi, struct sr_datafeed_packet *packet) { assert(sdi); @@ -127,14 +167,14 @@ void SigSession::dataFeedIn(const struct sr_dev_inst *sdi, case SR_DF_END: _cur_logic_snapshot.reset(); - dataUpdated(); + data_updated(); break; } } -void SigSession::dataFeedInProc(const struct sr_dev_inst *sdi, +void SigSession::data_feed_in_proc(const struct sr_dev_inst *sdi, struct sr_datafeed_packet *packet) { - assert(session); - session->dataFeedIn(sdi, packet); + assert(_session); + _session->data_feed_in(sdi, packet); }