forked from Ivasoft/DSView
Improve decode progress and content display @ LA mode
This commit is contained in:
@@ -332,6 +332,7 @@ void DecoderStack::clear()
|
||||
_sample_count = 0;
|
||||
_frame_complete = false;
|
||||
_samples_decoded = 0;
|
||||
//new_decode_data();
|
||||
_error_message = QString();
|
||||
for (map<const Row, RowData>::const_iterator i = _rows.begin();
|
||||
i != _rows.end(); i++)
|
||||
@@ -468,7 +469,6 @@ void DecoderStack::decode_data(
|
||||
}
|
||||
_options_changed = false;
|
||||
decode_done();
|
||||
//new_decode_data();
|
||||
}
|
||||
|
||||
void DecoderStack::decode_proc()
|
||||
|
||||
@@ -200,6 +200,7 @@ void ProtocolDock::add_protocol()
|
||||
_set_button->setIcon(QIcon::fromTheme("protocol",
|
||||
QIcon(":/icons/gear.png")));
|
||||
QLabel *_protocol_label = new QLabel(_up_widget);
|
||||
QLabel *_progress_label = new QLabel(_up_widget);
|
||||
|
||||
_del_button->setCheckable(true);
|
||||
_protocol_label->setText(_protocol_combobox->currentText());
|
||||
@@ -212,17 +213,23 @@ void ProtocolDock::add_protocol()
|
||||
_del_button_list.push_back(_del_button);
|
||||
_set_button_list.push_back(_set_button);
|
||||
_protocol_label_list.push_back(_protocol_label);
|
||||
_progress_label_list.push_back(_progress_label);
|
||||
_protocol_index_list.push_back(_protocol_combobox->currentIndex());
|
||||
|
||||
QHBoxLayout *hori_layout = new QHBoxLayout();
|
||||
hori_layout->addWidget(_set_button);
|
||||
hori_layout->addWidget(_del_button);
|
||||
hori_layout->addWidget(_protocol_label);
|
||||
hori_layout->addWidget(_progress_label);
|
||||
hori_layout->addStretch(1);
|
||||
_hori_layout_list.push_back(hori_layout);
|
||||
_up_layout->insertLayout(_del_button_list.size(), hori_layout);
|
||||
|
||||
//_session.add_protocol_analyzer(_protocol_combobox->currentIndex(), _sel_probes, _options, _options_index);
|
||||
// progress connection
|
||||
const std::vector< boost::shared_ptr<pv::view::DecodeTrace> > decode_sigs(
|
||||
_session.get_decode_signals());
|
||||
//connect(decode_sigs.back().get(), SIGNAL(decoded_progress(int)), this, SLOT(decoded_progess(int)));
|
||||
|
||||
protocol_updated();
|
||||
}
|
||||
}
|
||||
@@ -265,6 +272,7 @@ void ProtocolDock::del_protocol()
|
||||
delete _del_button_list.at(del_index);
|
||||
delete _set_button_list.at(del_index);
|
||||
delete _protocol_label_list.at(del_index);
|
||||
delete _progress_label_list.at(del_index);
|
||||
|
||||
_session.remove_decode_signal(0);
|
||||
del_index++;
|
||||
@@ -273,6 +281,7 @@ void ProtocolDock::del_protocol()
|
||||
_del_button_list.clear();
|
||||
_set_button_list.clear();
|
||||
_protocol_label_list.clear();
|
||||
_progress_label_list.clear();
|
||||
_protocol_index_list.clear();
|
||||
} else {
|
||||
QMessageBox msg(this);
|
||||
@@ -293,11 +302,13 @@ void ProtocolDock::del_protocol()
|
||||
delete _del_button_list.at(del_index);
|
||||
delete _set_button_list.at(del_index);
|
||||
delete _protocol_label_list.at(del_index);
|
||||
delete _progress_label_list.at(del_index);
|
||||
|
||||
_hori_layout_list.remove(del_index);
|
||||
_del_button_list.remove(del_index);
|
||||
_set_button_list.remove(del_index);
|
||||
_protocol_label_list.remove(del_index);
|
||||
_progress_label_list.remove(del_index);
|
||||
_protocol_index_list.remove(del_index);
|
||||
|
||||
_session.remove_decode_signal(del_index);
|
||||
@@ -320,6 +331,7 @@ void ProtocolDock::del_all_protocol()
|
||||
delete _del_button_list.at(del_index);
|
||||
delete _set_button_list.at(del_index);
|
||||
delete _protocol_label_list.at(del_index);
|
||||
delete _progress_label_list.at(del_index);
|
||||
|
||||
_session.remove_decode_signal(0);
|
||||
del_index++;
|
||||
@@ -328,12 +340,31 @@ void ProtocolDock::del_all_protocol()
|
||||
_del_button_list.clear();
|
||||
_set_button_list.clear();
|
||||
_protocol_label_list.clear();
|
||||
_progress_label_list.clear();
|
||||
_protocol_index_list.clear();
|
||||
|
||||
protocol_updated();
|
||||
}
|
||||
}
|
||||
|
||||
void ProtocolDock::decoded_progess(int progress)
|
||||
{
|
||||
(void) progress;
|
||||
|
||||
const std::vector< boost::shared_ptr<pv::view::DecodeTrace> > decode_sigs(
|
||||
_session.get_decode_signals());
|
||||
int index = 0;
|
||||
BOOST_FOREACH(boost::shared_ptr<pv::view::DecodeTrace> d, decode_sigs) {
|
||||
QString progress_str = QString::number(d->get_progress()) + "%";
|
||||
if (d->get_progress() == 100)
|
||||
_progress_label_list.at(index)->setStyleSheet("color:green;");
|
||||
else
|
||||
_progress_label_list.at(index)->setStyleSheet("color:red;");
|
||||
_progress_label_list.at(index)->setText(progress_str);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
void ProtocolDock::set_model()
|
||||
{
|
||||
pv::dialogs::ProtocolList *protocollist_dlg = new pv::dialogs::ProtocolList(this, _session);
|
||||
|
||||
@@ -72,6 +72,7 @@ private slots:
|
||||
void add_protocol();
|
||||
void rst_protocol();
|
||||
void del_protocol();
|
||||
void decoded_progess(int progress);
|
||||
void set_model();
|
||||
void update_model();
|
||||
void export_table_view();
|
||||
@@ -96,6 +97,7 @@ private:
|
||||
QVector <QPushButton *> _del_button_list;
|
||||
QVector <QPushButton *> _set_button_list;
|
||||
QVector <QLabel *> _protocol_label_list;
|
||||
QVector <QLabel *> _progress_label_list;
|
||||
QVector <int > _protocol_index_list;
|
||||
QVector <QHBoxLayout *> _hori_layout_list;
|
||||
QVBoxLayout *_up_layout;
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
namespace pv {
|
||||
namespace dock {
|
||||
|
||||
const int TriggerDock::MinTrigPosition = 1;
|
||||
|
||||
TriggerDock::TriggerDock(QWidget *parent, SigSession &session) :
|
||||
QScrollArea(parent),
|
||||
_session(session)
|
||||
@@ -56,10 +58,10 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) :
|
||||
|
||||
position_label = new QLabel(tr("Trigger Position: "), _widget);
|
||||
position_spinBox = new QSpinBox(_widget);
|
||||
position_spinBox->setRange(0, 99);
|
||||
position_spinBox->setRange(MinTrigPosition, 99);
|
||||
position_spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons);
|
||||
position_slider = new QSlider(Qt::Horizontal, _widget);
|
||||
position_slider->setRange(0, 99);
|
||||
position_slider->setRange(MinTrigPosition, 99);
|
||||
connect(position_slider, SIGNAL(valueChanged(int)), position_spinBox, SLOT(setValue(int)));
|
||||
connect(position_spinBox, SIGNAL(valueChanged(int)), position_slider, SLOT(setValue(int)));
|
||||
|
||||
@@ -356,8 +358,8 @@ void TriggerDock::device_change()
|
||||
maxRange = 99;
|
||||
else
|
||||
maxRange = max_hd_depth*70 / sample_limits;
|
||||
position_spinBox->setRange(0, maxRange);
|
||||
position_slider->setRange(0, maxRange);
|
||||
position_spinBox->setRange(MinTrigPosition, maxRange);
|
||||
position_slider->setRange(MinTrigPosition, maxRange);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -55,6 +55,9 @@ class TriggerDock : public QScrollArea
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
static const int MinTrigPosition;
|
||||
|
||||
public:
|
||||
TriggerDock(QWidget *parent, SigSession &session);
|
||||
~TriggerDock();
|
||||
|
||||
@@ -112,7 +112,7 @@ void MainWindow::setup_ui()
|
||||
{
|
||||
setObjectName(QString::fromUtf8("MainWindow"));
|
||||
setMinimumHeight(680);
|
||||
setMinimumWidth(300);
|
||||
setMinimumWidth(500);
|
||||
resize(1024, 768);
|
||||
|
||||
// Set the window icon
|
||||
@@ -192,8 +192,6 @@ void MainWindow::setup_ui()
|
||||
SLOT(run_stop()));
|
||||
connect(_sampling_bar, SIGNAL(instant_stop()), this,
|
||||
SLOT(instant_stop()));
|
||||
connect(_sampling_bar, SIGNAL(update_scale()), _view,
|
||||
SLOT(update_scale()), Qt::DirectConnection);
|
||||
connect(_sampling_bar, SIGNAL(sample_count_changed()), _trigger_widget,
|
||||
SLOT(device_change()));
|
||||
connect(_dso_trigger_widget, SIGNAL(set_trig_pos(quint64)), _view,
|
||||
@@ -248,6 +246,8 @@ void MainWindow::setup_ui()
|
||||
SLOT(test_data_error()));
|
||||
connect(&_session, SIGNAL(malloc_error()), this,
|
||||
SLOT(malloc_error()));
|
||||
connect(&_session, SIGNAL(hardware_connect_failed()), this,
|
||||
SLOT(hardware_connect_failed()));
|
||||
|
||||
connect(_view, SIGNAL(cursor_update()), _measure_widget,
|
||||
SLOT(cursor_update()));
|
||||
@@ -471,6 +471,17 @@ void MainWindow::malloc_error()
|
||||
msg.exec();
|
||||
}
|
||||
|
||||
void MainWindow::hardware_connect_failed()
|
||||
{
|
||||
_session.stop_capture();
|
||||
QMessageBox msg(this);
|
||||
msg.setText(tr("Hardware Connect Failed"));
|
||||
msg.setInformativeText(tr("Please check hardware connection!"));
|
||||
msg.setStandardButtons(QMessageBox::Ok);
|
||||
msg.setIcon(QMessageBox::Warning);
|
||||
msg.exec();
|
||||
}
|
||||
|
||||
void MainWindow::capture_state_changed(int state)
|
||||
{
|
||||
_file_bar->enable_toggle(state != SigSession::Running);
|
||||
@@ -492,7 +503,7 @@ void MainWindow::capture_state_changed(int state)
|
||||
if (gvar != NULL) {
|
||||
uint64_t actual_samples = g_variant_get_uint64(gvar);
|
||||
g_variant_unref(gvar);
|
||||
if (actual_samples != _session.get_device()->get_sample_limit()) {
|
||||
if (actual_samples != _session.cur_samplelimits()) {
|
||||
show_session_error(tr("RLE Mode Warning"),
|
||||
tr("Hardware buffer is full!\nActually received samples is less than setted sample depth!"));
|
||||
}
|
||||
|
||||
@@ -131,6 +131,11 @@ private slots:
|
||||
void device_attach();
|
||||
void device_detach();
|
||||
|
||||
/*
|
||||
* errors
|
||||
*/
|
||||
void hardware_connect_failed();
|
||||
|
||||
private:
|
||||
DeviceManager &_device_manager;
|
||||
|
||||
|
||||
@@ -151,6 +151,8 @@ void SigSession::set_device(boost::shared_ptr<device::DevInst> dev_inst) throw(Q
|
||||
if (_dev_inst) {
|
||||
try {
|
||||
_dev_inst->use(this);
|
||||
_cur_samplerate = _dev_inst->get_sample_rate();
|
||||
_cur_samplelimits = _dev_inst->get_sample_limit();
|
||||
} catch(const QString e) {
|
||||
throw(e);
|
||||
return;
|
||||
@@ -423,6 +425,24 @@ SigSession::capture_state SigSession::get_capture_state() const
|
||||
return _capture_state;
|
||||
}
|
||||
|
||||
uint64_t SigSession::cur_samplelimits() const
|
||||
{
|
||||
return _cur_samplelimits;
|
||||
}
|
||||
|
||||
uint64_t SigSession::cur_samplerate() const
|
||||
{
|
||||
return _cur_samplerate;
|
||||
}
|
||||
|
||||
double SigSession::cur_sampletime() const
|
||||
{
|
||||
if (_cur_samplerate == 0)
|
||||
return 0;
|
||||
else
|
||||
return _cur_samplelimits * 1.0 / _cur_samplerate;
|
||||
}
|
||||
|
||||
void SigSession::start_capture(bool instant,
|
||||
boost::function<void (const QString)> error_handler)
|
||||
{
|
||||
@@ -582,36 +602,60 @@ void SigSession::sample_thread_proc(boost::shared_ptr<device::DevInst> dev_inst,
|
||||
assert(!_cur_analog_snapshot);
|
||||
}
|
||||
|
||||
void SigSession::read_sample_rate(const sr_dev_inst *const sdi)
|
||||
void SigSession::update_data_header(const sr_dev_inst *const sdi)
|
||||
{
|
||||
GVariant *gvar;
|
||||
uint64_t sample_rate = 0;
|
||||
int ret;
|
||||
|
||||
// Read out the sample rate
|
||||
if(sdi->driver)
|
||||
{
|
||||
const int ret = sr_config_get(sdi->driver, sdi, NULL, NULL, SR_CONF_SAMPLERATE, &gvar);
|
||||
ret = sr_config_get(sdi->driver, sdi, NULL, NULL, SR_CONF_SAMPLERATE, &gvar);
|
||||
if (ret != SR_OK) {
|
||||
qDebug("Failed to get samplerate\n");
|
||||
hardware_connect_failed();
|
||||
return;
|
||||
}
|
||||
|
||||
sample_rate = g_variant_get_uint64(gvar);
|
||||
_cur_samplerate = g_variant_get_uint64(gvar);
|
||||
g_variant_unref(gvar);
|
||||
|
||||
ret = sr_config_get(sdi->driver, sdi, NULL, NULL, SR_CONF_LIMIT_SAMPLES, &gvar);
|
||||
if (ret != SR_OK) {
|
||||
hardware_connect_failed();
|
||||
return;
|
||||
}
|
||||
|
||||
_cur_samplelimits = g_variant_get_uint64(gvar);
|
||||
g_variant_unref(gvar);
|
||||
}
|
||||
|
||||
// Set the sample rate of all data
|
||||
const set< boost::shared_ptr<data::SignalData> > data_set = get_data();
|
||||
// Set the sample rate of all SignalData
|
||||
// Logic/Analog/Dso
|
||||
set< boost::shared_ptr<data::SignalData> > data_set;
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::Signal> sig, _signals) {
|
||||
assert(sig);
|
||||
data_set.insert(sig->data());
|
||||
}
|
||||
BOOST_FOREACH(boost::shared_ptr<data::SignalData> data, data_set) {
|
||||
assert(data);
|
||||
data->set_samplerate(sample_rate);
|
||||
data->set_samplerate(_cur_samplerate);
|
||||
}
|
||||
#ifdef ENABLE_DECODE
|
||||
// DecoderStack
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::DecodeTrace> d, _decode_traces)
|
||||
{
|
||||
assert(d);
|
||||
d->decoder()->set_samplerate(_cur_samplerate);
|
||||
}
|
||||
#endif
|
||||
// MathStack
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::MathTrace> m, _math_traces)
|
||||
{
|
||||
assert(m);
|
||||
m->get_math_stack()->set_samplerate(sample_rate);
|
||||
m->get_math_stack()->set_samplerate(_cur_samplerate);
|
||||
}
|
||||
_group_data->set_samplerate(sample_rate);
|
||||
// Group
|
||||
_group_data->set_samplerate(_cur_samplerate);
|
||||
}
|
||||
|
||||
void SigSession::feed_in_header(const sr_dev_inst *sdi)
|
||||
@@ -623,7 +667,7 @@ void SigSession::feed_in_header(const sr_dev_inst *sdi)
|
||||
i++)
|
||||
(*i)->decoder()->stop_decode();
|
||||
#endif
|
||||
read_sample_rate(sdi);
|
||||
update_data_header(sdi);
|
||||
//receive_data(0);
|
||||
}
|
||||
|
||||
@@ -640,8 +684,9 @@ void SigSession::add_group()
|
||||
|
||||
if (probe_index_list.size() > 1) {
|
||||
//_group_data.reset(new data::Group(_last_sample_rate));
|
||||
if (_group_data->get_snapshots().empty())
|
||||
_group_data->set_samplerate(_dev_inst->get_sample_rate());
|
||||
// if (_group_data->get_snapshots().empty())
|
||||
// _group_data->set_samplerate(_dev_inst->get_sample_rate());
|
||||
_group_data->set_samplerate(_cur_samplerate);
|
||||
const boost::shared_ptr<view::GroupSignal> signal(
|
||||
new view::GroupSignal("New Group",
|
||||
_group_data, probe_index_list, _group_cnt));
|
||||
@@ -811,6 +856,7 @@ void SigSession::reload()
|
||||
if (_capture_state == Running)
|
||||
stop_capture();
|
||||
|
||||
//refresh(0);
|
||||
vector< boost::shared_ptr<view::Signal> > sigs;
|
||||
boost::shared_ptr<view::Signal> signal;
|
||||
|
||||
@@ -869,10 +915,23 @@ void SigSession::refresh(int holdtime)
|
||||
if (_logic_data) {
|
||||
_logic_data->clear();
|
||||
_cur_logic_snapshot.reset();
|
||||
#ifdef ENABLE_DECODE
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::DecodeTrace> d, _decode_traces)
|
||||
{
|
||||
assert(d);
|
||||
d->decoder()->clear();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (_dso_data) {
|
||||
_dso_data->clear();
|
||||
_cur_dso_snapshot.reset();
|
||||
// MathStack
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::MathTrace> m, _math_traces)
|
||||
{
|
||||
assert(m);
|
||||
m->get_math_stack()->clear();
|
||||
}
|
||||
}
|
||||
if (_analog_data) {
|
||||
_analog_data->clear();
|
||||
|
||||
@@ -128,6 +128,10 @@ public:
|
||||
|
||||
capture_state get_capture_state() const;
|
||||
|
||||
uint64_t cur_samplerate() const;
|
||||
uint64_t cur_samplelimits() const;
|
||||
double cur_sampletime() const;
|
||||
|
||||
void start_capture(bool instant,
|
||||
boost::function<void (const QString)> error_handler);
|
||||
|
||||
@@ -187,7 +191,7 @@ public:
|
||||
private:
|
||||
void set_capture_state(capture_state state);
|
||||
|
||||
void read_sample_rate(const sr_dev_inst *const sdi);
|
||||
void update_data_header(const sr_dev_inst *const sdi);
|
||||
|
||||
private:
|
||||
/**
|
||||
@@ -237,6 +241,8 @@ private:
|
||||
mutable boost::mutex _sampling_mutex;
|
||||
capture_state _capture_state;
|
||||
bool _instant;
|
||||
uint64_t _cur_samplerate;
|
||||
uint64_t _cur_samplelimits;
|
||||
|
||||
mutable boost::mutex _signals_mutex;
|
||||
std::vector< boost::shared_ptr<view::Signal> > _signals;
|
||||
@@ -306,6 +312,8 @@ signals:
|
||||
|
||||
void show_region(uint64_t start, uint64_t end);
|
||||
|
||||
void hardware_connect_failed();
|
||||
|
||||
public slots:
|
||||
void reload();
|
||||
void refresh(int holdtime);
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <pv/data/logicsnapshot.h>
|
||||
#include <pv/view/signal.h>
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
using boost::dynamic_pointer_cast;
|
||||
using boost::mutex;
|
||||
using boost::shared_ptr;
|
||||
@@ -70,9 +72,12 @@ const QString& StoreSession::error() const
|
||||
|
||||
bool StoreSession::start()
|
||||
{
|
||||
set< shared_ptr<data::SignalData> > data_set =
|
||||
_session.get_data();
|
||||
const vector< shared_ptr<view::Signal> > sigs(_session.get_signals());
|
||||
set< boost::shared_ptr<data::SignalData> > data_set;
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::Signal> sig, sigs) {
|
||||
assert(sig);
|
||||
data_set.insert(sig->data());
|
||||
}
|
||||
|
||||
// Check we have logic data
|
||||
if (data_set.empty() || sigs.empty()) {
|
||||
|
||||
@@ -126,17 +126,6 @@ SamplingBar::SamplingBar(SigSession &session, QWidget *parent) :
|
||||
_run_stop_button.setIcon(_icon_start);
|
||||
_instant_button.setIcon(_icon_instant);
|
||||
|
||||
// for (size_t i = 0; i < countof(RecordLengths); i++)
|
||||
// {
|
||||
// const uint64_t &l = RecordLengths[i];
|
||||
// char *const text = ds_si_string_u64(l, " samples");
|
||||
// _sample_count.addItem(QString(text),
|
||||
// qVariantFromValue(l));
|
||||
// g_free(text);
|
||||
|
||||
// if (l == DefaultRecordLength)
|
||||
// _sample_count.setCurrentIndex(i);
|
||||
// }
|
||||
_sample_count.setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
set_sampling(false);
|
||||
connect(&_sample_count, SIGNAL(currentIndexChanged(int)),
|
||||
@@ -191,7 +180,6 @@ void SamplingBar::set_device_list(
|
||||
|
||||
update_sample_rate_selector();
|
||||
update_sample_count_selector();
|
||||
update_scale();
|
||||
|
||||
_updating_device_selector = false;
|
||||
}
|
||||
@@ -454,8 +442,7 @@ void SamplingBar::update_sample_rate_selector_value()
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (samplerate != _sample_rate.itemData(_sample_rate.currentIndex()).value<uint64_t>())
|
||||
update_scale();
|
||||
|
||||
_updating_sample_rate = false;
|
||||
}
|
||||
|
||||
@@ -486,7 +473,6 @@ void SamplingBar::commit_sample_rate()
|
||||
get_selected_device()->set_config(NULL, NULL,
|
||||
SR_CONF_SAMPLERATE,
|
||||
g_variant_new_uint64(sample_rate));
|
||||
update_scale();
|
||||
}
|
||||
|
||||
_updating_sample_rate = false;
|
||||
@@ -512,7 +498,6 @@ void SamplingBar::on_samplecount_sel(int index)
|
||||
g_variant_new_uint64(sample_count));
|
||||
|
||||
sample_count_changed();
|
||||
//update_scale();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,8 +520,6 @@ void SamplingBar::on_samplerate_sel(int index)
|
||||
get_selected_device()->set_config(NULL, NULL,
|
||||
SR_CONF_SAMPLERATE,
|
||||
g_variant_new_uint64(sample_rate));
|
||||
|
||||
//update_scale();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -628,7 +611,6 @@ void SamplingBar::update_sample_count_selector_value()
|
||||
|
||||
if (samplecount != _sample_count.itemData(_sample_count.currentIndex()).value<uint64_t>()) {
|
||||
sample_count_changed();
|
||||
update_scale();
|
||||
}
|
||||
_updating_sample_count = false;
|
||||
}
|
||||
@@ -661,7 +643,6 @@ void SamplingBar::commit_sample_count()
|
||||
get_selected_device()->set_config(NULL, NULL,
|
||||
SR_CONF_LIMIT_SAMPLES,
|
||||
g_variant_new_uint64(sample_count));
|
||||
update_scale();
|
||||
}
|
||||
|
||||
_updating_sample_count = false;
|
||||
|
||||
@@ -95,7 +95,6 @@ signals:
|
||||
void instant_stop();
|
||||
void device_selected();
|
||||
void device_updated();
|
||||
void update_scale();
|
||||
void sample_count_changed();
|
||||
|
||||
private:
|
||||
|
||||
@@ -60,7 +60,7 @@ Cursor::Cursor(View &view, QColor color, uint64_t index) :
|
||||
|
||||
QRectF Cursor::get_label_rect(const QRect &rect) const
|
||||
{
|
||||
const double samples_per_pixel = _view.session().get_device()->get_sample_rate() * _view.scale();
|
||||
const double samples_per_pixel = _view.session().cur_samplerate() * _view.scale();
|
||||
const double x = _index/samples_per_pixel - (_view.offset() / _view.scale());
|
||||
|
||||
const QSizeF label_size(
|
||||
@@ -116,7 +116,7 @@ void Cursor::paint_label(QPainter &p, const QRect &rect,
|
||||
p.drawLine(close.left() + 2, close.bottom() - 2, close.right() - 2, close.top() + 2);
|
||||
|
||||
p.drawText(r, Qt::AlignCenter | Qt::AlignVCenter,
|
||||
Ruler::format_real_time(_index, _view.session().get_device()->get_sample_rate()));
|
||||
Ruler::format_real_time(_index, _view.session().cur_samplerate()));
|
||||
|
||||
const QRectF arrowRect = QRectF(r.bottomLeft().x(), r.bottomLeft().y(), r.width(), ArrowSize);
|
||||
p.drawText(arrowRect, Qt::AlignCenter | Qt::AlignVCenter, QString::number(index));
|
||||
@@ -143,7 +143,7 @@ void Cursor::paint_fix_label(QPainter &p, const QRect &rect,
|
||||
|
||||
p.setPen(Qt::white);
|
||||
p.drawText(r, Qt::AlignCenter | Qt::AlignVCenter,
|
||||
Ruler::format_real_time(_index, _view.session().get_device()->get_sample_rate()));
|
||||
Ruler::format_real_time(_index, _view.session().cur_samplerate()));
|
||||
|
||||
const QRectF arrowRect = QRectF(r.bottomLeft().x(), r.bottomLeft().y(), r.width(), ArrowSize);
|
||||
p.drawText(arrowRect, Qt::AlignCenter | Qt::AlignVCenter, label);
|
||||
@@ -153,7 +153,7 @@ void Cursor::compute_text_size(QPainter &p, unsigned int prefix)
|
||||
{
|
||||
(void)prefix;
|
||||
_text_size = p.boundingRect(QRectF(), 0,
|
||||
Ruler::format_real_time(_index, _view.session().get_device()->get_sample_rate())).size();
|
||||
Ruler::format_real_time(_index, _view.session().cur_samplerate())).size();
|
||||
}
|
||||
|
||||
} // namespace view
|
||||
|
||||
@@ -125,6 +125,7 @@ DecodeTrace::DecodeTrace(pv::SigSession &session,
|
||||
_end_index(0),
|
||||
_start_count(0),
|
||||
_end_count(0),
|
||||
_progress(0),
|
||||
_popup_form(NULL),
|
||||
_popup()
|
||||
{
|
||||
@@ -175,7 +176,7 @@ void DecodeTrace::paint_back(QPainter &p, int left, int right)
|
||||
p.drawLine(left, sigY, right, sigY);
|
||||
|
||||
// --draw decode region control
|
||||
const double samples_per_pixel = _session.get_device()->get_sample_rate() * _view->scale();
|
||||
const double samples_per_pixel = _session.cur_samplerate() * _view->scale();
|
||||
const double startX = _decode_start/samples_per_pixel - (_view->offset() / _view->scale());
|
||||
const double endX = _decode_end/samples_per_pixel - (_view->offset() / _view->scale());
|
||||
const double regionY = get_y() - _totalHeight*0.5 - ControlRectWidth;
|
||||
@@ -665,7 +666,7 @@ bool DecodeTrace::draw_unresolved_period(QPainter &p, int h, int left,
|
||||
font.setPointSize(_view->get_signalHeight()*2/3);
|
||||
font.setBold(true);
|
||||
p.setFont(font);
|
||||
p.drawText(no_decode_rect, Qt::AlignCenter | Qt::AlignVCenter, QString::number(progress100)+"%");
|
||||
p.drawText(no_decode_rect, Qt::AlignCenter | Qt::AlignVCenter, QString::number(_progress)+"%");
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -829,10 +830,24 @@ void DecodeTrace::commit_probes()
|
||||
|
||||
void DecodeTrace::on_new_decode_data()
|
||||
{
|
||||
const uint64_t need_sample_count = _decode_end - _decode_start + 1;
|
||||
if (need_sample_count == 0) {
|
||||
_progress = 100;
|
||||
} else {
|
||||
const uint64_t samples_decoded = _decoder_stack->samples_decoded();
|
||||
_progress = ceil(samples_decoded * 100.0 / need_sample_count);
|
||||
}
|
||||
decoded_progress(_progress);
|
||||
|
||||
if (_view && _view->session().get_capture_state() == SigSession::Stopped)
|
||||
_view->data_updated();
|
||||
}
|
||||
|
||||
int DecodeTrace::get_progress() const
|
||||
{
|
||||
return _progress;
|
||||
}
|
||||
|
||||
void DecodeTrace::on_decode_done()
|
||||
{
|
||||
if (_view) {
|
||||
@@ -937,7 +952,7 @@ QRectF DecodeTrace::get_rect(DecodeSetRegions type, int y, int right)
|
||||
void DecodeTrace::on_region_set(int index)
|
||||
{
|
||||
(void)index;
|
||||
const uint64_t last_samples = _session.get_device()->get_sample_limit() - 1;
|
||||
const uint64_t last_samples = _session.cur_samplelimits() - 1;
|
||||
const int index1 = _start_comboBox->currentIndex();
|
||||
const int index2 = _end_comboBox->currentIndex();
|
||||
uint64_t decode_start, decode_end;
|
||||
@@ -974,7 +989,7 @@ void DecodeTrace::on_region_set(int index)
|
||||
|
||||
void DecodeTrace::frame_ended()
|
||||
{
|
||||
const uint64_t last_samples = _session.get_device()->get_sample_limit() - 1;
|
||||
const uint64_t last_samples = _session.cur_samplelimits() - 1;
|
||||
if (_decode_start > last_samples) {
|
||||
_decode_start = 0;
|
||||
_start_index = 0;
|
||||
|
||||
@@ -141,6 +141,8 @@ public:
|
||||
**/
|
||||
void frame_ended();
|
||||
|
||||
int get_progress() const;
|
||||
|
||||
protected:
|
||||
void paint_type_options(QPainter &p, int right, const QPoint pt);
|
||||
|
||||
@@ -187,6 +189,9 @@ private:
|
||||
|
||||
void commit_probes();
|
||||
|
||||
signals:
|
||||
void decoded_progress(int progress);
|
||||
|
||||
private slots:
|
||||
void on_new_decode_data();
|
||||
|
||||
@@ -209,6 +214,7 @@ private:
|
||||
int _start_index, _end_index;
|
||||
int _start_count, _end_count;
|
||||
QComboBox *_start_comboBox, *_end_comboBox;
|
||||
int _progress;
|
||||
|
||||
std::list< boost::shared_ptr<pv::prop::binding::DecoderOptions> >
|
||||
_bindings;
|
||||
|
||||
@@ -305,7 +305,7 @@ bool DsoSignal::go_hDialPre(bool setted)
|
||||
{
|
||||
int ch_num = _view->session().get_ch_num(SR_CHANNEL_DSO);
|
||||
if (ch_num != 0 && !_hDial->isMin()) {
|
||||
uint64_t sample_rate = _view->session().get_device()->get_sample_rate();
|
||||
uint64_t sample_rate = _view->session().cur_samplerate();
|
||||
const uint64_t min_div = std::pow(10.0, 9.0) / sample_rate;
|
||||
if (_view->session().get_capture_state() != SigSession::Running &&
|
||||
!_data->get_snapshots().empty()) {
|
||||
@@ -764,8 +764,8 @@ void DsoSignal::paint_back(QPainter &p, int left, int right)
|
||||
|
||||
p.setPen(Trace::dsLightBlue);
|
||||
p.drawLine(left, UpMargin/2, left + width, UpMargin/2);
|
||||
const uint64_t sample_len = _dev_inst->get_sample_limit();
|
||||
const double samplerate = _dev_inst->get_sample_rate();
|
||||
const uint64_t sample_len = _view->session().cur_samplelimits();
|
||||
const double samplerate = _view->session().cur_samplerate();
|
||||
const double samples_per_pixel = samplerate * _view->scale();
|
||||
const double shown_rate = min(samples_per_pixel * width * 1.0 / sample_len, 1.0);
|
||||
const double start_time = _data->get_start_time();
|
||||
@@ -843,7 +843,7 @@ void DsoSignal::paint_mid(QPainter &p, int left, int right)
|
||||
|
||||
const double pixels_offset = offset / scale;
|
||||
//const double samplerate = _data->samplerate();
|
||||
const double samplerate = _dev_inst->get_sample_rate();
|
||||
const double samplerate = _view->session().cur_samplerate();
|
||||
const double start_time = _data->get_start_time();
|
||||
const int64_t last_sample = max((int64_t)(snapshot->get_sample_count() - 1), (int64_t)0);
|
||||
const double samples_per_pixel = samplerate * scale;
|
||||
@@ -1280,7 +1280,7 @@ void DsoSignal::paint_measure(QPainter &p)
|
||||
double value_p2p = value_max - value_min;
|
||||
_period = (count == 0) ? period * 10.0 : period * 10.0 / count;
|
||||
const int channel_count = _view->session().get_ch_num(SR_CHANNEL_DSO);
|
||||
uint64_t sample_rate = _dev_inst->get_sample_rate();
|
||||
uint64_t sample_rate = _view->session().cur_samplerate();
|
||||
_period = _period * 200.0 / (channel_count * sample_rate * 1.0 / SR_MHZ(1));
|
||||
_ms_string[DSO_MS_VMAX] = "Vmax: " + (abs(value_max) > 1000 ? QString::number(value_max/1000.0, 'f', 2) + "V" : QString::number(value_max, 'f', 2) + "mV");
|
||||
_ms_string[DSO_MS_VMIN] = "Vmin: " + (abs(value_min) > 1000 ? QString::number(value_min/1000.0, 'f', 2) + "V" : QString::number(value_min, 'f', 2) + "mV");
|
||||
@@ -1455,7 +1455,7 @@ bool DsoSignal::measure(const QPointF &p)
|
||||
assert(scale > 0);
|
||||
const double offset = _view->offset();
|
||||
const double pixels_offset = offset / scale;
|
||||
const double samplerate = _dev_inst->get_sample_rate();
|
||||
const double samplerate = _view->session().cur_samplerate();
|
||||
const double samples_per_pixel = samplerate * scale;
|
||||
|
||||
_hover_index = floor((p.x() + pixels_offset) * samples_per_pixel+0.5);
|
||||
|
||||
@@ -359,8 +359,8 @@ void MathTrace::paint_fore(QPainter &p, int left, int right)
|
||||
double blank_right = width;
|
||||
|
||||
// horizontal ruler
|
||||
const double NyFreq = _session.get_device()->get_sample_rate() / (2.0 * _math_stack->get_sample_interval());
|
||||
const double deltaFreq = _session.get_device()->get_sample_rate() * 1.0 /
|
||||
const double NyFreq = _session.cur_samplerate() / (2.0 * _math_stack->get_sample_interval());
|
||||
const double deltaFreq = _session.cur_samplerate() * 1.0 /
|
||||
(_math_stack->get_sample_num() * _math_stack->get_sample_interval());
|
||||
const double FreqRange = NyFreq * _scale;
|
||||
const double FreqOffset = NyFreq * _offset;
|
||||
|
||||
@@ -205,7 +205,7 @@ void Ruler::mouseMoveEvent(QMouseEvent *e)
|
||||
|
||||
if (_grabbed_marker) {
|
||||
_grabbed_marker->set_index((_view.offset() +
|
||||
_view.hover_point().x() * _view.scale()) * _view.session().get_device()->get_sample_rate());
|
||||
_view.hover_point().x() * _view.scale()) * _view.session().cur_samplerate());
|
||||
}
|
||||
|
||||
update();
|
||||
@@ -264,7 +264,7 @@ void Ruler::mouseReleaseEvent(QMouseEvent *event)
|
||||
_cursor_sel_visible = true;
|
||||
} else {
|
||||
int overCursor;
|
||||
uint64_t index = (_view.offset() + (_cursor_sel_x + 0.5) * _view.scale()) * _view.session().get_device()->get_sample_rate();
|
||||
uint64_t index = (_view.offset() + (_cursor_sel_x + 0.5) * _view.scale()) * _view.session().cur_samplerate();
|
||||
overCursor = in_cursor_sel_rect(event->pos());
|
||||
if (overCursor == 0) {
|
||||
_view.add_cursor(CursorColor[_view.get_cursorList().size() % 8], index);
|
||||
@@ -426,7 +426,7 @@ void Ruler::draw_logic_tick_mark(QPainter &p)
|
||||
const double MinValueSpacing = 16.0;
|
||||
const int ValueMargin = 5;
|
||||
|
||||
const double abs_min_period = 10.0 / _view.session().get_device()->get_sample_rate();
|
||||
const double abs_min_period = 10.0 / _view.session().cur_samplerate();
|
||||
|
||||
double min_width = SpacingIncrement;
|
||||
double typical_width;
|
||||
|
||||
@@ -70,7 +70,7 @@ void TimeMarker::set_index(uint64_t index)
|
||||
|
||||
void TimeMarker::paint(QPainter &p, const QRect &rect, const bool highlight)
|
||||
{
|
||||
const double samples_per_pixel = _view.session().get_device()->get_sample_rate() * _view.scale();
|
||||
const double samples_per_pixel = _view.session().cur_samplerate() * _view.scale();
|
||||
const double x = _index/samples_per_pixel - (_view.offset() / _view.scale());
|
||||
p.setPen((_grabbed | highlight) ? QPen(_colour.lighter(), 2, Qt::DashLine) : QPen(_colour, 1, Qt::DashLine));
|
||||
p.drawLine(QPointF(x, rect.top()), QPointF(x, rect.bottom()));
|
||||
|
||||
@@ -418,14 +418,16 @@ void View::show_search_cursor(bool show)
|
||||
|
||||
void View::set_trig_pos(quint64 trig_pos)
|
||||
{
|
||||
const double time = trig_pos * 1.0 / _session.get_device()->get_sample_rate();
|
||||
const double time = trig_pos * 1.0 / _session.cur_samplerate();
|
||||
_trig_pos = trig_pos;
|
||||
_trig_cursor->set_index(trig_pos);
|
||||
_show_trig_cursor = true;
|
||||
set_scale_offset(_scale, time - _scale * get_view_width() / 2);
|
||||
if (ds_trigger_get_en()) {
|
||||
_show_trig_cursor = true;
|
||||
set_scale_offset(_scale, time - _scale * get_view_width() / 2);
|
||||
}
|
||||
|
||||
_trigger_time = QDateTime::currentDateTime();
|
||||
const int64_t secs = time - _session.get_device()->get_sample_time();
|
||||
const int64_t secs = time - _session.cur_sampletime();
|
||||
_trigger_time = _trigger_time.addSecs(secs);
|
||||
|
||||
_ruler->update();
|
||||
@@ -436,7 +438,7 @@ void View::set_search_pos(uint64_t search_pos)
|
||||
{
|
||||
//assert(search_pos >= 0);
|
||||
|
||||
const double time = search_pos * 1.0 / _session.get_device()->get_sample_rate();
|
||||
const double time = search_pos * 1.0 / _session.cur_samplerate();
|
||||
_search_pos = search_pos;
|
||||
_search_cursor->set_index(search_pos);
|
||||
set_scale_offset(_scale, time - _scale * get_view_width() / 2);
|
||||
@@ -492,7 +494,7 @@ void View::get_scroll_layout(double &length, double &offset) const
|
||||
if (data_set.empty())
|
||||
return;
|
||||
|
||||
length = _session.get_device()->get_sample_time() / _scale;
|
||||
length = _session.cur_sampletime() / _scale;
|
||||
offset = _offset / _scale;
|
||||
}
|
||||
|
||||
@@ -527,23 +529,25 @@ void View::update_scroll()
|
||||
verticalScrollBar()->setRange(0,0);
|
||||
}
|
||||
|
||||
void View::update_scale()
|
||||
void View::update_scale_offset()
|
||||
{
|
||||
const uint64_t sample_rate = _session.get_device()->get_sample_rate();
|
||||
const uint64_t sample_rate = _session.cur_samplerate();
|
||||
assert(sample_rate > 0);
|
||||
|
||||
if (_session.get_device()->dev_inst()->mode != DSO) {
|
||||
_scale = (1.0 / sample_rate) / WellPixelsPerSample;
|
||||
_maxscale = _session.get_device()->get_sample_time() / (get_view_width() * MaxViewRate);
|
||||
//_scale = (1.0 / sample_rate) / WellPixelsPerSample;
|
||||
_maxscale = _session.cur_sampletime() / (get_view_width() * MaxViewRate);
|
||||
} else {
|
||||
_scale = _session.get_device()->get_time_base() * 10.0 / get_view_width() * std::pow(10.0, -9.0);
|
||||
_maxscale = 1e9;
|
||||
}
|
||||
|
||||
_minscale = (1.0 / sample_rate) / MaxPixelsPerSample;
|
||||
//_offset = 0;
|
||||
|
||||
_scale = max(min(_scale, _maxscale), _minscale);
|
||||
_offset = max(min(_offset, get_max_offset()), get_min_offset());
|
||||
|
||||
_preScale = _scale;
|
||||
//_preOffset = _offset;
|
||||
_preOffset = _offset;
|
||||
|
||||
_trig_cursor->set_index(_trig_pos);
|
||||
|
||||
@@ -722,7 +726,7 @@ void View::resizeEvent(QResizeEvent*)
|
||||
_scale = _session.get_device()->get_time_base() * std::pow(10.0, -9.0) * DS_CONF_DSO_HDIVS / get_view_width();
|
||||
|
||||
if (_session.get_device()->dev_inst()->mode != DSO)
|
||||
_maxscale = _session.get_device()->get_sample_time() / (get_view_width() * MaxViewRate);
|
||||
_maxscale = _session.cur_sampletime() / (get_view_width() * MaxViewRate);
|
||||
else
|
||||
_maxscale = 1e9;
|
||||
|
||||
@@ -860,7 +864,7 @@ void View::set_cursor_middle(int index)
|
||||
list<Cursor*>::iterator i = _cursorList.begin();
|
||||
while (index-- != 0)
|
||||
i++;
|
||||
set_scale_offset(_scale, (*i)->index() * 1.0 / _session.get_device()->get_sample_rate() - _scale * get_view_width() / 2);
|
||||
set_scale_offset(_scale, (*i)->index() * 1.0 / _session.cur_samplerate() - _scale * get_view_width() / 2);
|
||||
}
|
||||
|
||||
void View::on_measure_updated()
|
||||
@@ -879,7 +883,7 @@ QString View::get_measure(QString option)
|
||||
|
||||
QString View::get_cm_time(int index)
|
||||
{
|
||||
return _ruler->format_real_time(get_cursor_samples(index), _session.get_device()->get_sample_rate());
|
||||
return _ruler->format_real_time(get_cursor_samples(index), _session.cur_samplerate());
|
||||
}
|
||||
|
||||
QString View::get_cm_delta(int index1, int index2)
|
||||
@@ -890,7 +894,7 @@ QString View::get_cm_delta(int index1, int index2)
|
||||
uint64_t samples1 = get_cursor_samples(index1);
|
||||
uint64_t samples2 = get_cursor_samples(index2);
|
||||
uint64_t delta_sample = (samples1 > samples2) ? samples1 - samples2 : samples2 - samples1;
|
||||
return _ruler->format_real_time(delta_sample, _session.get_device()->get_sample_rate());
|
||||
return _ruler->format_real_time(delta_sample, _session.cur_samplerate());
|
||||
}
|
||||
|
||||
uint64_t View::get_cursor_samples(int index)
|
||||
@@ -924,6 +928,7 @@ void View::on_state_changed(bool stop)
|
||||
BOOST_FOREACH(Viewport *viewport, _viewport_list)
|
||||
viewport->stop_trigger_timer();
|
||||
}
|
||||
update_scale_offset();
|
||||
}
|
||||
|
||||
int View::get_view_width()
|
||||
@@ -963,7 +968,7 @@ double View::get_min_offset()
|
||||
|
||||
double View::get_max_offset()
|
||||
{
|
||||
return _session.get_device()->get_sample_time()
|
||||
return _session.cur_sampletime()
|
||||
- _scale * (get_view_width() * MaxViewRate);
|
||||
}
|
||||
|
||||
@@ -975,9 +980,9 @@ QString View::trigger_time()
|
||||
void View::show_region(uint64_t start, uint64_t end)
|
||||
{
|
||||
assert(start <= end);
|
||||
const double ideal_scale = (end-start) * 2.0 / _session.get_device()->get_sample_rate() / get_view_width();
|
||||
const double ideal_scale = (end-start) * 2.0 / _session.cur_samplerate() / get_view_width();
|
||||
const double new_scale = max(min(ideal_scale, _maxscale), _minscale);
|
||||
const double new_off = (start + end) * 0.5 / _session.get_device()->get_sample_rate() - new_scale * get_view_width() / 2;
|
||||
const double new_off = (start + end) * 0.5 / _session.cur_samplerate() - new_scale * get_view_width() / 2;
|
||||
set_scale_offset(new_scale, new_off);
|
||||
}
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@ public slots:
|
||||
void set_measure_en(int enable);
|
||||
void signals_changed();
|
||||
void data_updated();
|
||||
void update_scale();
|
||||
void update_scale_offset();
|
||||
void show_region(uint64_t start, uint64_t end);
|
||||
|
||||
private slots:
|
||||
|
||||
@@ -206,7 +206,7 @@ void Viewport::paintSignals(QPainter &p)
|
||||
if (_view.cursors_shown() && _type == TIME_VIEW) {
|
||||
list<Cursor*>::iterator i = _view.get_cursorList().begin();
|
||||
double cursorX;
|
||||
const double samples_per_pixel = _view.session().get_device()->get_sample_rate() * _view.scale();
|
||||
const double samples_per_pixel = _view.session().cur_samplerate() * _view.scale();
|
||||
while (i != _view.get_cursorList().end()) {
|
||||
cursorX = (*i)->index()/samples_per_pixel - (_view.offset() / _view.scale());
|
||||
if (rect().contains(_view.hover_point().x(), _view.hover_point().y()) &&
|
||||
@@ -242,7 +242,7 @@ void Viewport::paintProgress(QPainter &p)
|
||||
{
|
||||
using pv::view::Signal;
|
||||
|
||||
const uint64_t _total_sample_len = _view.session().get_device()->get_sample_limit();
|
||||
const uint64_t _total_sample_len = _view.session().cur_samplelimits();
|
||||
double progress = -(_total_receive_len * 1.0 / _total_sample_len * 360 * 16);
|
||||
int captured_progress = 0;
|
||||
|
||||
@@ -407,7 +407,7 @@ void Viewport::mousePressEvent(QMouseEvent *event)
|
||||
_action_type = LOGIC_ZOOM;
|
||||
} else if (_view.session().get_device()->dev_inst()->mode == DSO) {
|
||||
if (_hover_hit) {
|
||||
uint64_t index = (_view.offset() + (event->pos().x() + 0.5) * _view.scale()) * _view.session().get_device()->get_sample_rate();
|
||||
uint64_t index = (_view.offset() + (event->pos().x() + 0.5) * _view.scale()) * _view.session().cur_samplerate();
|
||||
_view.add_cursor(view::Ruler::CursorColor[_view.get_cursorList().size() % 8], index);
|
||||
_view.show_cursors(true);
|
||||
}
|
||||
@@ -450,7 +450,7 @@ void Viewport::mouseMoveEvent(QMouseEvent *event)
|
||||
}
|
||||
|
||||
if (_action_type == CURS_MOVE) {
|
||||
uint64_t sample_rate = _view.session().get_device()->get_sample_rate();
|
||||
uint64_t sample_rate = _view.session().cur_samplerate();
|
||||
TimeMarker* grabbed_marker = _view.get_ruler()->get_grabbed_cursor();
|
||||
if (_view.cursors_shown() && grabbed_marker) {
|
||||
const double cur_time = _view.offset() + _view.hover_point().x() * _view.scale();
|
||||
@@ -485,7 +485,7 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event)
|
||||
if (_action_type == NO_ACTION && _view.cursors_shown()) {
|
||||
list<Cursor*>::iterator i = _view.get_cursorList().begin();
|
||||
double cursorX;
|
||||
const double samples_per_pixel = _view.session().get_device()->get_sample_rate() * _view.scale();
|
||||
const double samples_per_pixel = _view.session().cur_samplerate() * _view.scale();
|
||||
while (i != _view.get_cursorList().end()) {
|
||||
cursorX = (*i)->index()/samples_per_pixel - (_view.offset() / _view.scale());
|
||||
if ((*i)->grabbed()) {
|
||||
@@ -526,7 +526,7 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event)
|
||||
assert(s);
|
||||
if (abs(event->pos().y() - s->get_y()) < _view.get_signalHeight()) {
|
||||
_action_type = LOGIC_EDGE;
|
||||
_edge_start = (_view.offset() + (event->pos().x() + 0.5) * _view.scale()) * _view.session().get_device()->get_sample_rate();
|
||||
_edge_start = (_view.offset() + (event->pos().x() + 0.5) * _view.scale()) * _view.session().cur_samplerate();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -581,7 +581,7 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event)
|
||||
}
|
||||
} else if (_action_type == DSO_XM_STEP1) {
|
||||
if (event->button() == Qt::LeftButton) {
|
||||
const uint64_t sample_rate = _view.session().get_device()->get_sample_rate();
|
||||
const uint64_t sample_rate = _view.session().cur_samplerate();
|
||||
const double scale = _view.scale();
|
||||
const double samples_per_pixel = sample_rate * scale;
|
||||
|
||||
@@ -602,7 +602,7 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event)
|
||||
}
|
||||
} else if (_action_type == DSO_XM_STEP2) {
|
||||
if (event->button() == Qt::LeftButton) {
|
||||
const uint64_t sample_rate = _view.session().get_device()->get_sample_rate();
|
||||
const uint64_t sample_rate = _view.session().cur_samplerate();
|
||||
const double scale = _view.scale();
|
||||
const double samples_per_pixel = sample_rate * scale;
|
||||
_dso_xm_index[2] = event->pos().x() * samples_per_pixel + _view.offset() * sample_rate;
|
||||
@@ -666,7 +666,7 @@ void Viewport::mouseDoubleClickEvent(QMouseEvent *event)
|
||||
else
|
||||
_view.set_scale_offset(_view.get_maxscale(), 0);
|
||||
} else if (event->button() == Qt::LeftButton) {
|
||||
uint64_t index = (_view.offset() + (event->pos().x() + 0.5) * _view.scale()) * _view.session().get_device()->get_sample_rate();
|
||||
uint64_t index = (_view.offset() + (event->pos().x() + 0.5) * _view.scale()) * _view.session().cur_samplerate();
|
||||
_view.add_cursor(view::Ruler::CursorColor[_view.get_cursorList().size() % 8], index);
|
||||
_view.show_cursors(true);
|
||||
}
|
||||
@@ -683,7 +683,7 @@ void Viewport::mouseDoubleClickEvent(QMouseEvent *event)
|
||||
_mm_duty = "#####";
|
||||
measure_updated();
|
||||
} else if (_action_type == NO_ACTION) {
|
||||
uint64_t sample_rate = _view.session().get_device()->get_sample_rate();
|
||||
uint64_t sample_rate = _view.session().cur_samplerate();
|
||||
double scale = _view.scale();
|
||||
const double samples_per_pixel = sample_rate * scale;
|
||||
_dso_xm_index[0] = event->pos().x() * samples_per_pixel +
|
||||
@@ -774,8 +774,8 @@ void Viewport::set_receive_len(quint64 length)
|
||||
start_trigger_timer(333);
|
||||
} else {
|
||||
stop_trigger_timer();
|
||||
if (_total_receive_len + length > _view.session().get_device()->get_sample_limit())
|
||||
_total_receive_len = _view.session().get_device()->get_sample_limit();
|
||||
if (_total_receive_len + length > _view.session().cur_samplelimits())
|
||||
_total_receive_len = _view.session().cur_samplelimits();
|
||||
else
|
||||
_total_receive_len += length;
|
||||
}
|
||||
@@ -792,7 +792,7 @@ void Viewport::measure()
|
||||
{
|
||||
_measure_type = NO_MEASURE;
|
||||
if (_type == TIME_VIEW) {
|
||||
const uint64_t sample_rate = _view.session().get_device()->get_sample_rate();
|
||||
const uint64_t sample_rate = _view.session().cur_samplerate();
|
||||
const vector< boost::shared_ptr<Signal> > sigs(_view.session().get_signals());
|
||||
BOOST_FOREACH(const boost::shared_ptr<Signal> s, sigs) {
|
||||
assert(s);
|
||||
@@ -988,7 +988,7 @@ void Viewport::paintMeasure(QPainter &p)
|
||||
p.setPen(QPen(dsoSig->get_colour(), 1, Qt::DotLine));
|
||||
const int text_height = p.boundingRect(0, 0, INT_MAX, INT_MAX,
|
||||
Qt::AlignLeft | Qt::AlignTop, "W").height();
|
||||
const uint64_t sample_rate = _view.session().get_device()->get_sample_rate();
|
||||
const uint64_t sample_rate = _view.session().cur_samplerate();
|
||||
const double x = (_dso_ym_index / (sample_rate * _view.scale())) -
|
||||
_view.offset() /_view.scale();
|
||||
p.drawLine(x-10, _dso_ym_start,
|
||||
@@ -1034,7 +1034,7 @@ void Viewport::paintMeasure(QPainter &p)
|
||||
int measure_line_count = 6;
|
||||
const int text_height = p.boundingRect(0, 0, INT_MAX, INT_MAX,
|
||||
Qt::AlignLeft | Qt::AlignTop, "W").height();
|
||||
const uint64_t sample_rate = _view.session().get_device()->get_sample_rate();
|
||||
const uint64_t sample_rate = _view.session().cur_samplerate();
|
||||
QLineF *line;
|
||||
QLineF *const measure_lines = new QLineF[measure_line_count];
|
||||
line = measure_lines;
|
||||
|
||||
Reference in New Issue
Block a user