diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index 90748c84913992f6ef4d0de8c5feece03101cb08..e33bcdb6a50396758b69620fd4fc4543868c17d9 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -443,7 +443,7 @@ bool SigSession::get_capture_status(bool &triggered, int &progress) { uint64_t sample_limits = cur_samplelimits(); sr_status status; - if (sr_status_get(_dev_inst->dev_inst(), &status, SR_STATUS_TRIG_BEGIN, SR_STATUS_TRIG_END) == SR_OK){ + if (sr_status_get(_dev_inst->dev_inst(), &status, true, SR_STATUS_TRIG_BEGIN, SR_STATUS_TRIG_END) == SR_OK){ triggered = status.trig_hit & 0x01; uint64_t captured_cnt = status.trig_hit >> 2; captured_cnt = ((uint64_t)status.captured_cnt0 + diff --git a/DSView/pv/storesession.cpp b/DSView/pv/storesession.cpp index cba254cbd1848ec3c6743d59183b344b49cca460..5885bd4943d0568cb18c052124325ef445ce08bc 100644 --- a/DSView/pv/storesession.cpp +++ b/DSView/pv/storesession.cpp @@ -344,7 +344,7 @@ QString StoreSession::meta_gen(boost::shared_ptr snapshot) fprintf(meta, " vFactor%d = %d\n", probe->index, probe->vfactor); fprintf(meta, " vPos%d = %lf\n", probe->index, probe->vpos); fprintf(meta, " vTrig%d = %d\n", probe->index, probe->trig_value); - if (sr_status_get(sdi, &status, 0, 0) == SR_OK) { + if (sr_status_get(sdi, &status, false, 0, 0) == SR_OK) { if (probe->index == 0) { fprintf(meta, " period%d = %" PRIu64 "\n", probe->index, status.ch0_period); fprintf(meta, " pcnt%d = %" PRIu32 "\n", probe->index, status.ch0_pcnt); diff --git a/DSView/pv/view/dsosignal.cpp b/DSView/pv/view/dsosignal.cpp index 5fbe0f6a91377e772109da5e8f528f1eddbe061e..4eafb718814dfbdffb8232820bf17854f5281e67 100644 --- a/DSView/pv/view/dsosignal.cpp +++ b/DSView/pv/view/dsosignal.cpp @@ -1343,7 +1343,7 @@ void DsoSignal::paint_measure(QPainter &p) int index = get_index(); const int st_begin = (index == 0) ? SR_STATUS_CH0_BEGIN : SR_STATUS_CH1_BEGIN; const int st_end = (index == 0) ? SR_STATUS_CH0_END : SR_STATUS_CH1_END; - if (sr_status_get(_dev_inst->dev_inst(), &status, st_begin, st_end) == SR_OK) { + if (sr_status_get(_dev_inst->dev_inst(), &status, false, st_begin, st_end) == SR_OK) { _max = (index == 0) ? status.ch0_max : status.ch1_max; _min = (index == 0) ? status.ch0_min : status.ch1_min; const uint64_t period = (index == 0) ? status.ch0_period : status.ch1_period; diff --git a/DSView/pv/view/view.cpp b/DSView/pv/view/view.cpp index 6c9428238066f4c2050981812994b3f734037eaa..bbbd79be9e68401d6002d4d821a0d9b780ff9965 100644 --- a/DSView/pv/view/view.cpp +++ b/DSView/pv/view/view.cpp @@ -1129,33 +1129,6 @@ void View::repeat_show() _viewbottom->update(); } -bool View::get_capture_status(bool &triggered, int &progress) -{ - uint64_t sample_limits = _session.cur_samplelimits(); - sr_status status; - if (sr_status_get(_session.get_device()->dev_inst(), &status, SR_STATUS_TRIG_BEGIN, SR_STATUS_TRIG_END) == SR_OK){ - triggered = status.trig_hit & 0x01; - const bool captured_cnt_dec = status.trig_hit & 0x02; - uint64_t captured_cnt = status.trig_hit >> 2; - captured_cnt = ((uint64_t)status.captured_cnt0 + - ((uint64_t)status.captured_cnt1 << 8) + - ((uint64_t)status.captured_cnt2 << 16) + - ((uint64_t)status.captured_cnt3 << 24) + - (captured_cnt << 32)); - if (_session.get_device()->dev_inst()->mode == DSO) - captured_cnt = captured_cnt * _session.get_signals().size() / _session.get_ch_num(SR_CHANNEL_DSO); - if (captured_cnt_dec) - progress = (sample_limits - captured_cnt) * 100.0 / sample_limits; - else - progress = captured_cnt * 100.0 / sample_limits; - - - return true; - } - - return false; -} - void View::set_capture_status() { bool triggered; diff --git a/DSView/pv/view/view.h b/DSView/pv/view/view.h index e81577ac2ace56714365ef18ed91edd31018c5ca..fa95f73d2a205d09acd6a716ed201b9f5ab65e78 100644 --- a/DSView/pv/view/view.h +++ b/DSView/pv/view/view.h @@ -192,7 +192,6 @@ public: void viewport_update(); - bool get_capture_status(bool &triggered, int &progress); void set_capture_status(); bool get_dso_trig_moved() const; diff --git a/libsigrok4DSL/hardware/DSL/dscope.c b/libsigrok4DSL/hardware/DSL/dscope.c index b081ac3c0b725926e7501b137c6b792099947764..49504602aa7d937a1c0a6a6057440607ec55c72f 100644 --- a/libsigrok4DSL/hardware/DSL/dscope.c +++ b/libsigrok4DSL/hardware/DSL/dscope.c @@ -1633,15 +1633,10 @@ static int dev_acquisition_stop(const struct sr_dev_inst *sdi, void *cb_data) return ret; } -static int dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, int begin, int end) +static int dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, gboolean prg, int begin, int end) { - struct DSL_context *devc = sdi->priv; - if (devc->instant || devc->status == DSL_DATA) { - int ret = dsl_dev_status_get(sdi, status, begin, end); - return ret; - } else { - return FALSE; - } + int ret = dsl_dev_status_get(sdi, status, prg, begin, end); + return ret; } SR_PRIV struct sr_dev_driver DSCope_driver_info = { diff --git a/libsigrok4DSL/hardware/DSL/dsl.c b/libsigrok4DSL/hardware/DSL/dsl.c index 5b9839a74067ea92bf8aa66592a96226ff7cd21d..03fe43b20b1d67dbe76e762e4a27a50c06162503 100755 --- a/libsigrok4DSL/hardware/DSL/dsl.c +++ b/libsigrok4DSL/hardware/DSL/dsl.c @@ -1082,7 +1082,7 @@ SR_PRIV int dsl_dev_acquisition_stop(const struct sr_dev_inst *sdi, void *cb_dat return SR_OK; } -SR_PRIV int dsl_dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, int begin, int end) +SR_PRIV int dsl_dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, gboolean prg, int begin, int end) { int ret = SR_ERR; struct ctl_rd_cmd rd_cmd; @@ -1093,7 +1093,7 @@ SR_PRIV int dsl_dev_status_get(const struct sr_dev_inst *sdi, struct sr_status * devc = sdi->priv; usb = sdi->conn; - if (devc->status == DSL_START) { + if (prg && (devc->status == DSL_START)) { rd_cmd.header.dest = DSL_CTL_DSO_MEASURE; rd_cmd.header.offset = begin; rd_cmd.header.size = end - begin + 1; diff --git a/libsigrok4DSL/hardware/DSL/dsl.h b/libsigrok4DSL/hardware/DSL/dsl.h index 42dbddd6d5905df1fca85bf704fbe49c2b9d07ea..c0ba64ebf99d2867411d1dbccefd54907b01252e 100644 --- a/libsigrok4DSL/hardware/DSL/dsl.h +++ b/libsigrok4DSL/hardware/DSL/dsl.h @@ -418,7 +418,7 @@ SR_PRIV int dsl_config_get(int id, GVariant **data, const struct sr_dev_inst *sd SR_PRIV int dsl_dev_open(struct sr_dev_driver *di, struct sr_dev_inst *sdi, gboolean *fpga_done); SR_PRIV int dsl_dev_close(struct sr_dev_inst *sdi); SR_PRIV int dsl_dev_acquisition_stop(const struct sr_dev_inst *sdi, void *cb_data); -SR_PRIV int dsl_dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, int begin, int end); +SR_PRIV int dsl_dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, gboolean prg, int begin, int end); SR_PRIV unsigned int dsl_get_timeout(struct DSL_context *devc); SR_PRIV int dsl_start_transfers(const struct sr_dev_inst *sdi); diff --git a/libsigrok4DSL/hardware/DSL/dslogic.c b/libsigrok4DSL/hardware/DSL/dslogic.c index 63653892cc7c93591be8fe7681cb565b720af259..77b421f4c74fdbbb4bcf493d190256864b317105 100755 --- a/libsigrok4DSL/hardware/DSL/dslogic.c +++ b/libsigrok4DSL/hardware/DSL/dslogic.c @@ -1498,9 +1498,9 @@ static int dev_acquisition_stop(const struct sr_dev_inst *sdi, void *cb_data) return ret; } -static int dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, int begin, int end) +static int dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, gboolean prg, int begin, int end) { - int ret = dsl_dev_status_get(sdi, status, begin, end); + int ret = dsl_dev_status_get(sdi, status, prg, begin, end); return ret; } diff --git a/libsigrok4DSL/hardware/demo/demo.c b/libsigrok4DSL/hardware/demo/demo.c index 6a9356a84ff31d719a961ddb7ff16d61ac4fa99e..fb4fc3e5d7c34c4390188d4d902d13d40e5bf6cb 100644 --- a/libsigrok4DSL/hardware/demo/demo.c +++ b/libsigrok4DSL/hardware/demo/demo.c @@ -1179,8 +1179,9 @@ static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi, void *cb_data) return SR_OK; } -static int hw_dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, int begin, int end) +static int hw_dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, gboolean prg, int begin, int end) { + (void)prg; (void)begin; (void)end; if (sdi) { diff --git a/libsigrok4DSL/hwdriver.c b/libsigrok4DSL/hwdriver.c index 1e8304b38edab80fc50d34b1d3ee27ed4bcba27f..6852354c2f27bb2d2549277906a55c87a16b7a60 100644 --- a/libsigrok4DSL/hwdriver.c +++ b/libsigrok4DSL/hwdriver.c @@ -415,7 +415,7 @@ SR_API const struct sr_config_info *sr_config_info_get(int key) */ SR_API int sr_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, - int begin, int end) + gboolean prg, int begin, int end) { int ret; @@ -424,7 +424,7 @@ SR_API int sr_status_get(const struct sr_dev_inst *sdi, else if (!sdi->driver->dev_status_get) ret = SR_ERR_ARG; else - ret = sdi->driver->dev_status_get(sdi, status, begin, end); + ret = sdi->driver->dev_status_get(sdi, status, prg, begin, end); return ret; } diff --git a/libsigrok4DSL/libsigrok.h b/libsigrok4DSL/libsigrok.h index 8f8240e6d0616ec454ad67d2c9047b1501f8a651..030494c261bd8a89c8816fa05b17d852f4aa6de9 100644 --- a/libsigrok4DSL/libsigrok.h +++ b/libsigrok4DSL/libsigrok.h @@ -1084,7 +1084,7 @@ struct sr_dev_driver { int (*dev_close) (struct sr_dev_inst *sdi); int (*dev_status_get) (const struct sr_dev_inst *sdi, struct sr_status *status, - int begin, int end); + gboolean prg, int begin, int end); int (*dev_acquisition_start) (struct sr_dev_inst *sdi, void *cb_data); int (*dev_acquisition_stop) (const struct sr_dev_inst *sdi, diff --git a/libsigrok4DSL/proto.h b/libsigrok4DSL/proto.h index 547f7742b358baa3c94e7bd1170e4147fec77b3f..f1a406a01d99f2fba9ad1c19e6e1b55cc277f87e 100644 --- a/libsigrok4DSL/proto.h +++ b/libsigrok4DSL/proto.h @@ -79,7 +79,7 @@ SR_API int sr_config_list(const struct sr_dev_driver *driver, int key, GVariant **data); SR_API const struct sr_config_info *sr_config_info_get(int key); SR_API const struct sr_config_info *sr_config_info_name_get(const char *optname); -SR_API int sr_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, int begin, int end); +SR_API int sr_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, gboolean prg, int begin, int end); /*--- session.c -------------------------------------------------------------*/ diff --git a/libsigrok4DSL/session_driver.c b/libsigrok4DSL/session_driver.c index 1a663fb7c825138f36fe0b40a754102bcf97f994..de49d8265ee78dc9cd3c08e0170a09a560451d91 100644 --- a/libsigrok4DSL/session_driver.c +++ b/libsigrok4DSL/session_driver.c @@ -624,8 +624,9 @@ static int config_list(int key, GVariant **data, return SR_OK; } -static int dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, int begin, int end) +static int dev_status_get(const struct sr_dev_inst *sdi, struct sr_status *status, gboolean prg, int begin, int end) { + (void)prg; (void)begin; (void)end;