From 03cb6b58e650f5e1e3ee97e3da976e3e6be94117 Mon Sep 17 00:00:00 2001 From: DreamSourceLab Date: Sun, 7 Jun 2015 23:00:24 +0800 Subject: [PATCH] fix instant sample issue @ Demo DSO mode --- DSView/pv/dock/dsotriggerdock.cpp | 2 +- DSView/pv/view/viewport.cpp | 3 ++- libsigrok4DSL/hardware/demo/demo.c | 18 +++++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/DSView/pv/dock/dsotriggerdock.cpp b/DSView/pv/dock/dsotriggerdock.cpp index a38122cd..4750f85c 100644 --- a/DSView/pv/dock/dsotriggerdock.cpp +++ b/DSView/pv/dock/dsotriggerdock.cpp @@ -55,7 +55,7 @@ DsoTriggerDock::DsoTriggerDock(QWidget *parent, SigSession &session) : position_slider->setRange(0, 99); connect(position_slider, SIGNAL(valueChanged(int)), position_spinBox, SLOT(setValue(int))); connect(position_spinBox, SIGNAL(valueChanged(int)), position_slider, SLOT(setValue(int))); - connect(position_slider, SIGNAL(valueChanged(int)), _widget, SLOT(pos_changed(int))); + connect(position_slider, SIGNAL(valueChanged(int)), this, SLOT(pos_changed(int))); QLabel *tSource_labe = new QLabel(tr("Trigger Sources: "), _widget); QRadioButton *auto_radioButton = new QRadioButton(tr("Auto")); diff --git a/DSView/pv/view/viewport.cpp b/DSView/pv/view/viewport.cpp index 251129a1..d8d8351f 100644 --- a/DSView/pv/view/viewport.cpp +++ b/DSView/pv/view/viewport.cpp @@ -344,7 +344,8 @@ void Viewport::paintProgress(QPainter &p) p.setPen(QPen(Trace::dsLightBlue, 4, Qt::SolidLine)); const int int_radius = max(radius - 4, 0); p.drawArc(cenPos.x() - int_radius, cenPos.y() - int_radius, 2* int_radius, 2 * int_radius, 180 * 16, -captured_progress*3.6*16); - + QFont font; + p.setFont(font); } void Viewport::mousePressEvent(QMouseEvent *event) diff --git a/libsigrok4DSL/hardware/demo/demo.c b/libsigrok4DSL/hardware/demo/demo.c index 29d34902..0623a0bf 100644 --- a/libsigrok4DSL/hardware/demo/demo.c +++ b/libsigrok4DSL/hardware/demo/demo.c @@ -98,6 +98,7 @@ struct dev_context { int64_t starttime; int stop; uint64_t timebase; + gboolean instant; int trigger_stage; uint16_t trigger_mask; @@ -345,6 +346,9 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi, case SR_CONF_TEST: *data = g_variant_new_boolean(FALSE); break; + case SR_CONF_INSTANT: + *data = g_variant_new_boolean(devc->instant); + break; case SR_CONF_PATTERN_MODE: *data = g_variant_new_string(pattern_strings[devc->sample_generator]); break; @@ -473,6 +477,11 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi, } sr_dbg("%s: setting pattern to %d", __func__, devc->sample_generator); + } else if (id == SR_CONF_INSTANT) { + devc->instant = g_variant_get_boolean(data); + sr_dbg("%s: setting INSTANT mode to %d", __func__, + devc->instant); + ret = SR_OK; } else if (id == SR_CONF_EN_CH) { ch->enabled = g_variant_get_boolean(data); sr_dbg("%s: setting ENABLE of channel %d to %d", __func__, @@ -735,7 +744,7 @@ static int receive_data(int fd, int revents, const struct sr_dev_inst *sdi) samples_to_send = expected_samplenum / CONST_LEN * CONST_LEN; if (devc->limit_samples) { - if (sdi->mode == LOGIC) + if (sdi->mode == LOGIC || devc->instant) samples_to_send = MIN(samples_to_send, devc->limit_samples - devc->samples_counter); else @@ -807,7 +816,7 @@ static int receive_data(int fd, int revents, const struct sr_dev_inst *sdi) } sr_session_send(sdi, &packet); - if (sdi->mode == LOGIC) + if (sdi->mode == LOGIC || devc->instant) devc->samples_counter += sending_now; else devc->samples_counter = (devc->samples_counter + sending_now) % devc->limit_samples; @@ -816,8 +825,7 @@ static int receive_data(int fd, int revents, const struct sr_dev_inst *sdi) } } - if (sdi->mode == LOGIC && - devc->limit_samples && + if (devc->limit_samples && devc->samples_counter >= devc->limit_samples) { sr_info("Requested number of samples reached."); hw_dev_acquisition_stop(sdi, NULL); @@ -827,7 +835,7 @@ static int receive_data(int fd, int revents, const struct sr_dev_inst *sdi) g_free(buf); - return TRUE; + return TRUE; } static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,