diff options
Diffstat (limited to 'DSLogic-gui/pv/toolbars')
-rw-r--r-- | DSLogic-gui/pv/toolbars/devicebar.cpp | 17 | ||||
-rw-r--r-- | DSLogic-gui/pv/toolbars/devicebar.h | 1 | ||||
-rw-r--r-- | DSLogic-gui/pv/toolbars/samplingbar.cpp | 91 | ||||
-rw-r--r-- | DSLogic-gui/pv/toolbars/samplingbar.h | 3 |
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(); |