Commit f3138d93 authored by DreamSourceLab's avatar DreamSourceLab

Enhance serial trigger @ LA mode

parent a5ead175
......@@ -31,6 +31,7 @@
#include <QPainter>
#include <QRegExpValidator>
#include <QMessageBox>
#include <QSplitter>
#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
......
......@@ -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
......
......@@ -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
......@@ -34,6 +34,7 @@
#include <QAbstractScrollArea>
#include <QSizeF>
#include <QDateTime>
#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
......
......@@ -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
......@@ -110,6 +110,7 @@ private:
void paintSignals(QPainter& p);
void paintProgress(QPainter& p);
void paintMeasure(QPainter &p);
void paintTrigTime(QPainter &p);
void measure();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment