summaryrefslogtreecommitdiff
path: root/DSLogic-gui/pv/toolbars
diff options
context:
space:
mode:
Diffstat (limited to 'DSLogic-gui/pv/toolbars')
-rw-r--r--DSLogic-gui/pv/toolbars/devicebar.cpp17
-rw-r--r--DSLogic-gui/pv/toolbars/devicebar.h1
-rw-r--r--DSLogic-gui/pv/toolbars/samplingbar.cpp91
-rw-r--r--DSLogic-gui/pv/toolbars/samplingbar.h3
4 files changed, 83 insertions, 29 deletions
diff --git a/DSLogic-gui/pv/toolbars/devicebar.cpp b/DSLogic-gui/pv/toolbars/devicebar.cpp
index 1c49f86..3d38a31 100644
--- a/DSLogic-gui/pv/toolbars/devicebar.cpp
+++ b/DSLogic-gui/pv/toolbars/devicebar.cpp
@@ -31,6 +31,7 @@
#include <QAction>
#include <QDebug>
+#include <QMessageBox>
#include "devicebar.h"
@@ -114,20 +115,20 @@ void DeviceBar::on_device_selected()
void DeviceBar::on_configure()
{
- int dev_mode;
+ int dev_mode, ret;
sr_dev_inst *const sdi = get_selected_device();
assert(sdi);
dev_mode = sdi->mode;
pv::dialogs::DeviceOptions dlg(this, sdi);
- //ret = dlg.exec();
- //if (ret == QDialog::Accepted) {
- if (dlg.exec()) {
- if (dev_mode != sdi->mode)
- device_selected();
- else
- device_updated();
+ ret = dlg.exec();
+ if (ret == QDialog::Accepted) {
+ if (dev_mode != sdi->mode) {
+ device_selected();
+ } else {
+ device_updated();
+ }
}
}
diff --git a/DSLogic-gui/pv/toolbars/devicebar.h b/DSLogic-gui/pv/toolbars/devicebar.h
index 68b555d..c977fb4 100644
--- a/DSLogic-gui/pv/toolbars/devicebar.h
+++ b/DSLogic-gui/pv/toolbars/devicebar.h
@@ -54,7 +54,6 @@ public:
signals:
void device_selected();
-
void device_updated();
private slots:
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()
diff --git a/DSLogic-gui/pv/toolbars/samplingbar.h b/DSLogic-gui/pv/toolbars/samplingbar.h
index ddd6c16..d02b8e2 100644
--- a/DSLogic-gui/pv/toolbars/samplingbar.h
+++ b/DSLogic-gui/pv/toolbars/samplingbar.h
@@ -54,9 +54,11 @@ public:
SamplingBar(QWidget *parent);
uint64_t get_record_length() const;
+ void set_record_length(uint64_t length);
void set_sampling(bool sampling);
void update_sample_rate_selector();
+ void set_sample_rate(uint64_t sample_rate);
void set_device(struct sr_dev_inst *sdi);
@@ -66,6 +68,7 @@ public:
signals:
void run_stop();
+ void device_reload();
private:
void update_sample_rate_selector_value();