#include <pv/data/logicsnapshot.h>
#include <pv/view/signal.h>
+#include <libsigrok/libsigrok.hpp>
+
using std::deque;
using std::dynamic_pointer_cast;
using std::lock_guard;
using std::thread;
using std::vector;
+using sigrok::Error;
+
namespace pv {
const size_t StoreSession::BlockSize = 1024 * 1024;
const shared_ptr<data::LogicSnapshot> snapshot(snapshots.front());
assert(snapshot);
- // Make a list of probes
- char **const probes = new char*[sigs.size() + 1];
+ // Make a list of channels
+ char **const channels = new char*[sigs.size() + 1];
for (size_t i = 0; i < sigs.size(); i++) {
shared_ptr<view::Signal> sig(sigs[i]);
assert(sig);
- probes[i] = strdup(sig->get_name().toUtf8().constData());
+ channels[i] = strdup(sig->get_name().toUtf8().constData());
}
- probes[sigs.size()] = NULL;
+ channels[sigs.size()] = NULL;
// Begin storing
- if (sr_session_save_init(SigSession::_sr_session, _file_name.c_str(),
- data->samplerate(), probes) != SR_OK) {
+ try {
+ SigSession::_sr_session->begin_save(_file_name);
+ } catch (Error error) {
_error = tr("Error while saving.");
return false;
}
- // Delete the probes array
+ // Delete the channels array
for (size_t i = 0; i <= sigs.size(); i++)
- free(probes[i]);
- delete[] probes;
+ free(channels[i]);
+ delete[] channels;
_thread = std::thread(&StoreSession::store_proc, this, snapshot);
return true;
start_sample + samples_per_block, sample_count);
snapshot->get_samples(data, start_sample, end_sample);
- if(sr_session_append(SigSession::_sr_session, _file_name.c_str(), data,
- unit_size, end_sample - start_sample) != SR_OK)
- {
+ size_t length = end_sample - start_sample;
+
+ try {
+ SigSession::_sr_session->append(data, length, unit_size);
+ } catch (Error error) {
_error = tr("Error while saving.");
break;
}