summaryrefslogtreecommitdiff
path: root/DSLogic-gui/pv/toolbars/samplingbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'DSLogic-gui/pv/toolbars/samplingbar.cpp')
-rw-r--r--DSLogic-gui/pv/toolbars/samplingbar.cpp91
1 files changed, 71 insertions, 20 deletions
diff --git a/DSLogic-gui/pv/toolbars/samplingbar.cpp b/DSLogic-gui/pv/toolbars/samplingbar.cpp
index 9c5c2bb..0283939 100644
--- a/DSLogic-gui/pv/toolbars/samplingbar.cpp
+++ b/DSLogic-gui/pv/toolbars/samplingbar.cpp
@@ -27,6 +27,8 @@
#include <boost/foreach.hpp>
+#include <libsigrok4DSLogic/libsigrok.h>
+
#include <QAction>
#include <QDebug>
#include <QLabel>
@@ -63,24 +65,24 @@ const uint64_t SamplingBar::RecordLengths[19] = {
const uint64_t SamplingBar::DefaultRecordLength = 1000000;
const uint64_t SamplingBar::DSLogic_RecordLengths[15] = {
- 1000,
- 2000,
- 5000,
- 10000,
- 20000,
- 50000,
- 100000,
- 200000,
- 500000,
- 1000000,
- 2000000,
- 5000000,
- 10000000,
- 16000000,
- 100000000,
+ 1024,
+ 2048,
+ 4096,
+ 8192,
+ 16384,
+ 32768,
+ 65536,
+ 131072,
+ 262144,
+ 524288,
+ 1048576,
+ 2097152,
+ 4194304,
+ 8388608,
+ 16777216,
};
-const uint64_t SamplingBar::DSLogic_DefaultRecordLength = 16000000;
+const uint64_t SamplingBar::DSLogic_DefaultRecordLength = 16777216;
SamplingBar::SamplingBar(QWidget *parent) :
QToolBar("Sampling Bar", parent),
@@ -106,7 +108,7 @@ SamplingBar::SamplingBar(QWidget *parent) :
// if (l == DefaultRecordLength)
// _record_length_selector.setCurrentIndex(i);
// }
-
+ _record_length_selector.setSizeAdjustPolicy(QComboBox::AdjustToContents);
set_sampling(false);
//_run_stop_button.setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@@ -131,7 +133,7 @@ void SamplingBar::set_device(struct sr_dev_inst *sdi)
for (size_t i = 0; i < countof(DSLogic_RecordLengths); i++)
{
const uint64_t &l = DSLogic_RecordLengths[i];
- char *const text = sr_si_string_u64(l, " samples");
+ char *const text = sr_iec_string_u64(l, " samples");
_record_length_selector.addItem(QString(text),
qVariantFromValue(l));
g_free(text);
@@ -163,18 +165,47 @@ uint64_t SamplingBar::get_record_length() const
return _record_length_selector.itemData(index).value<uint64_t>();
}
+void SamplingBar::set_record_length(uint64_t length)
+{
+ for (int i = 0; i < _record_length_selector.count(); i++) {
+ if (length == _record_length_selector.itemData(
+ i).value<uint64_t>()) {
+ _record_length_selector.setCurrentIndex(i);
+ break;
+ }
+ }
+}
+
void SamplingBar::set_sampling(bool sampling)
{
_run_stop_button.setIcon(sampling ? _icon_stop : _icon_start);
//_run_stop_button.setText(sampling ? " Stop" : "Start");
}
+void SamplingBar::set_sample_rate(uint64_t sample_rate)
+{
+ for (int i = 0; i < _sample_rate_list.count(); i++) {
+ if (sample_rate == _sample_rate_list.itemData(
+ i).value<uint64_t>()) {
+ _sample_rate_list.setCurrentIndex(i);
+ // Set the samplerate
+ if (sr_config_set(_sdi, SR_CONF_SAMPLERATE,
+ g_variant_new_uint64(sample_rate)) != SR_OK) {
+ qDebug() << "Failed to configure samplerate.";
+ return;
+ }
+ break;
+ }
+ }
+
+}
+
void SamplingBar::update_sample_rate_selector()
{
GVariant *gvar_dict, *gvar_list;
const uint64_t *elements = NULL;
gsize num_elements;
- QAction *selector_action = NULL;
+ //QAction *selector_action = NULL;
assert(_sample_rate_list_action);
@@ -205,7 +236,7 @@ void SamplingBar::update_sample_rate_selector()
_sample_rate_list.show();
g_variant_unref(gvar_list);
- selector_action = _sample_rate_list_action;
+ //selector_action = _sample_rate_list_action;
}
g_variant_unref(gvar_dict);
@@ -242,7 +273,9 @@ void SamplingBar::update_sample_rate_selector_value()
void SamplingBar::commit_sample_rate()
{
+ GVariant *gvar;
uint64_t sample_rate = 0;
+ uint64_t last_sample_rate = 0;
assert(_sdi);
@@ -259,12 +292,30 @@ void SamplingBar::commit_sample_rate()
if (sample_rate == 0)
return;
+ // Get last samplerate
+ if (sr_config_get(_sdi->driver, SR_CONF_SAMPLERATE,
+ &gvar, _sdi) != SR_OK) {
+ qDebug() <<
+ "WARNING: Failed to get value of sample rate";
+ return;
+ }
+ last_sample_rate = g_variant_get_uint64(gvar);
+ g_variant_unref(gvar);
+
// Set the samplerate
if (sr_config_set(_sdi, SR_CONF_SAMPLERATE,
g_variant_new_uint64(sample_rate)) != SR_OK) {
qDebug() << "Failed to configure samplerate.";
return;
}
+
+ if (strcmp(_sdi->driver->name, "DSLogic") == 0 && _sdi->mode != DSO) {
+ if ((last_sample_rate == SR_MHZ(200)&& sample_rate != SR_MHZ(200)) ||
+ (last_sample_rate != SR_MHZ(200) && sample_rate == SR_MHZ(200)) ||
+ (last_sample_rate == SR_MHZ(400)&& sample_rate != SR_MHZ(400)) ||
+ (last_sample_rate != SR_MHZ(400) && sample_rate == SR_MHZ(400)))
+ device_reload();
+ }
}
void SamplingBar::on_sample_rate_changed()