{
_session.start_capture(
_sampling_bar->get_selected_device(),
+ _sampling_bar->get_record_length(),
_sampling_bar->get_sample_rate());
}
#include <assert.h>
+#include <boost/foreach.hpp>
+
extern "C" {
#include <libsigrok/libsigrok.h>
}
#include "samplingbar.h"
+const uint64_t SamplingBar::RecordLengths[11] = {
+ 1000000,
+ 2000000,
+ 5000000,
+ 10000000,
+ 25000000,
+ 50000000,
+ 100000000,
+ 250000000,
+ 500000000,
+ 1000000000,
+ 10000000000
+};
+
SamplingBar::SamplingBar(QWidget *parent) :
QToolBar("Sampling Bar", parent),
_device_selector(this),
+ _record_length_selector(this),
_sample_rate_list(this),
_run_stop_button(this)
{
_sample_rate_value.setDecimals(0);
_sample_rate_value.setSuffix("Hz");
+ BOOST_FOREACH(uint64_t l, RecordLengths)
+ {
+ char *const text = sr_si_string_u64(l, " samples");
+ _record_length_selector.addItem(QString(text),
+ qVariantFromValue(l));
+ g_free(text);
+ }
+
_run_stop_button.setText("Run");
addWidget(&_device_selector);
+ addWidget(&_record_length_selector);
_sample_rate_list_action = addWidget(&_sample_rate_list);
_sample_rate_value_action = addWidget(&_sample_rate_value);
addWidget(&_run_stop_button);
index).value<void*>();
}
+uint64_t SamplingBar::get_record_length() const
+{
+ const int index = _record_length_selector.currentIndex();
+ if(index < 0)
+ return 0;
+
+ return _record_length_selector.itemData(index).value<uint64_t>();
+}
+
uint64_t SamplingBar::get_sample_rate() const
{
assert(_sample_rate_value_action);
{
Q_OBJECT
+private:
+ static const uint64_t RecordLengths[11];
+
public:
SamplingBar(QWidget *parent);
struct sr_dev_inst* get_selected_device() const;
+ uint64_t get_record_length() const;
uint64_t get_sample_rate() const;
signals:
private:
QComboBox _device_selector;
+ QComboBox _record_length_selector;
+
QComboBox _sample_rate_list;
QAction *_sample_rate_list_action;
QDoubleSpinBox _sample_rate_value;
}
void SigSession::start_capture(struct sr_dev_inst *sdi,
- uint64_t sample_rate)
+ uint64_t record_length, uint64_t sample_rate)
{
sr_session_new();
sr_session_datafeed_callback_add(data_feed_in_proc);
return;
}
- uint64_t limit_samples = 10000;
if (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_SAMPLES,
- &limit_samples) != SR_OK) {
+ &record_length) != SR_OK) {
qDebug() << "Failed to configure time-based sample limit.";
sr_session_destroy();
return;
void load_file(const std::string &name);
- void start_capture(struct sr_dev_inst* sdi, uint64_t sample_rate);
+ void start_capture(struct sr_dev_inst* sdi, uint64_t record_length,
+ uint64_t sample_rate);
std::vector< boost::shared_ptr<Signal> >&
get_signals();