diff --git a/DSView/pv/dock/triggerdock.cpp b/DSView/pv/dock/triggerdock.cpp index aea64b19..dc32ad8a 100644 --- a/DSView/pv/dock/triggerdock.cpp +++ b/DSView/pv/dock/triggerdock.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include "libsigrok4DSL/libsigrok.h" @@ -186,23 +187,32 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : _serial_value_lineEdit->setInputMask("X X X X X X X X X X X X X X X X"); _serial_value_lineEdit->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + _serial_vcnt_spinBox = new QSpinBox(_widget); + _serial_vcnt_spinBox->setRange(1, INT32_MAX); + _serial_vcnt_spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons); + QLabel *serial_value_exp_label = new QLabel("1 1 1 1 1 1\n5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0", _widget); serial_value_exp_label->setFont(font); QVBoxLayout *serial_layout = new QVBoxLayout(); QGridLayout *serial_glayout = new QGridLayout(); - serial_glayout->addWidget(serial_value_exp_label, 1, 1, 1, 4); + serial_glayout->addWidget(serial_value_exp_label, 1, 1, 1, 3); serial_glayout->addWidget(_serial_start_label, 2, 0); - serial_glayout->addWidget(_serial_start_lineEdit, 2, 1, 1, 4); - serial_glayout->addWidget(new QLabel(_widget), 2, 2); + serial_glayout->addWidget(_serial_start_lineEdit, 2, 1, 1, 3); + serial_glayout->addWidget(new QLabel(_widget), 2, 4); serial_glayout->addWidget(_serial_stop_label, 3, 0); - serial_glayout->addWidget(_serial_stop_lineEdit, 3, 1, 1, 4); + serial_glayout->addWidget(_serial_stop_lineEdit, 3, 1, 1, 3); serial_glayout->addWidget(_serial_edge_label, 4, 0); - serial_glayout->addWidget(_serial_edge_lineEdit, 4, 1, 1, 4); - serial_glayout->addWidget(_serial_data_lable, 5, 0); - serial_glayout->addWidget(_serial_data_comboBox, 5, 1); - serial_glayout->addWidget(_serial_value_lable, 6, 0); - serial_glayout->addWidget(_serial_value_lineEdit, 6, 1, 1, 4); + serial_glayout->addWidget(_serial_edge_lineEdit, 4, 1, 1, 3); + + serial_glayout->addWidget(new QLabel(_widget), 5, 0, 1, 5); + serial_glayout->addWidget(_serial_data_lable, 6, 0); + serial_glayout->addWidget(_serial_data_comboBox, 6, 1); + serial_glayout->addWidget(new QLabel(tr("counter"), _widget), 6, 4); + serial_glayout->addWidget(_serial_value_lable, 7, 0); + serial_glayout->addWidget(_serial_value_lineEdit, 7, 1, 1, 3); + serial_glayout->addWidget(_serial_vcnt_spinBox, 7, 4); + serial_glayout->addWidget(new QLabel(_widget), 7, 5); serial_layout->addLayout(serial_glayout); serial_layout->addSpacing(20); serial_layout->addWidget(new QLabel(tr("X: Don't care\n0: Low level\n1: High level\nR: Rising edge\nF: Falling edge\nC: Rising/Falling edge"))); @@ -436,10 +446,16 @@ bool TriggerDock::commit_trigger() } // trigger count update - for (i = 0; i < stages_comboBox->currentText().toInt(); i++) { - ds_trigger_stage_set_count(i, TriggerProbes, - _count0_spinBox_list.at(i)->value() - 1, - _count1_spinBox_list.at(i)->value() - 1); + if (_adv_tabWidget->currentIndex() == 0) { + for (i = 0; i < stages_comboBox->currentText().toInt(); i++) { + ds_trigger_stage_set_count(i, TriggerProbes, + _count0_spinBox_list.at(i)->value() - 1, + _count1_spinBox_list.at(i)->value() - 1); + } + } else if(_adv_tabWidget->currentIndex() == 1){ + ds_trigger_stage_set_count(4, TriggerProbes, + _serial_vcnt_spinBox->value() - 1, + 0); } return 1; } @@ -482,6 +498,7 @@ QJsonObject TriggerDock::get_session() trigSes["triggerClock"] = _serial_edge_lineEdit->text(); trigSes["triggerChannel"] = _serial_data_comboBox->currentIndex(); trigSes["triggerData"] = _serial_value_lineEdit->text(); + trigSes["triggerVcnt"] = _serial_vcnt_spinBox->value(); return trigSes; } @@ -518,6 +535,7 @@ void TriggerDock::set_session(QJsonObject ses) _serial_edge_lineEdit->setText(ses["triggerClock"].toString()); _serial_data_comboBox->setCurrentIndex(ses["triggerChannel"].toDouble()); _serial_value_lineEdit->setText(ses["triggerData"].toString()); + _serial_vcnt_spinBox->setValue(ses["triggerVcnt"].toDouble()); } } // namespace dock diff --git a/DSView/pv/dock/triggerdock.h b/DSView/pv/dock/triggerdock.h index 4d9fd4ec..4ec977a3 100644 --- a/DSView/pv/dock/triggerdock.h +++ b/DSView/pv/dock/triggerdock.h @@ -125,6 +125,8 @@ private: QComboBox *_serial_data_comboBox; QLabel *_serial_value_lable; QLineEdit *_serial_value_lineEdit; + QLabel *_serial_vcnt_lable; + QSpinBox *_serial_vcnt_spinBox; }; } // namespace dock diff --git a/DSView/pv/view/view.cpp b/DSView/pv/view/view.cpp index eee4c438..e421a8ce 100644 --- a/DSView/pv/view/view.cpp +++ b/DSView/pv/view/view.cpp @@ -345,6 +345,11 @@ void View::set_trig_pos(quint64 trig_pos) _trig_cursor->set_index(trig_pos); _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(); + _trigger_time = _trigger_time.addSecs(secs); + _ruler->update(); _viewport->update(); } @@ -824,5 +829,10 @@ double View::get_max_offset() - _scale * (get_view_width() * MaxViewRate); } +QString View::trigger_time() +{ + return _trigger_time.toString("yyyy-MM-dd hh:mm:ss ddd"); +} + } // namespace view } // namespace pv diff --git a/DSView/pv/view/view.h b/DSView/pv/view/view.h index c3f6ac72..27fabea0 100644 --- a/DSView/pv/view/view.h +++ b/DSView/pv/view/view.h @@ -34,6 +34,7 @@ #include #include +#include #include "../toolbars/samplingbar.h" #include "../data/signaldata.h" @@ -184,6 +185,8 @@ public: void set_sample_limit(uint64_t sample_limit, bool force = false); + QString trigger_time(); + signals: void hover_point_changed(); @@ -272,6 +275,8 @@ private: uint64_t _search_pos; QPointF _hover_point; + + QDateTime _trigger_time; }; } // namespace view diff --git a/DSView/pv/view/viewport.cpp b/DSView/pv/view/viewport.cpp index 2f70b23e..c53e5d51 100644 --- a/DSView/pv/view/viewport.cpp +++ b/DSView/pv/view/viewport.cpp @@ -165,6 +165,8 @@ void Viewport::paintEvent(QPaintEvent *event) if (_view.get_signalHeight() != _curSignalHeight) _curSignalHeight = _view.get_signalHeight(); + paintTrigTime(p); + p.end(); } @@ -813,8 +815,7 @@ void Viewport::measure() } } } - if (_measure_type != NO_MEASURE) - measure_updated(); + measure_updated(); } void Viewport::paintMeasure(QPainter &p) @@ -1169,5 +1170,14 @@ void Viewport::on_drag_timer() } } +void Viewport::paintTrigTime(QPainter &p) +{ + if (_view.session().get_device()->dev_inst()->mode == LOGIC) { + p.setPen(Trace::dsBack); + p.drawText(this->rect(), Qt::AlignRight | Qt::AlignBottom, + "Last Trigger Time: "+_view.trigger_time()); + } +} + } // namespace view } // namespace pv diff --git a/DSView/pv/view/viewport.h b/DSView/pv/view/viewport.h index 17dcf51a..999c72a9 100644 --- a/DSView/pv/view/viewport.h +++ b/DSView/pv/view/viewport.h @@ -110,6 +110,7 @@ private: void paintSignals(QPainter& p); void paintProgress(QPainter& p); void paintMeasure(QPainter &p); + void paintTrigTime(QPainter &p); void measure();