From 51290b4bf68bba8d2610ea44408715cb2e4bec31 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Sun, 23 Apr 2023 16:40:02 +0800 Subject: [PATCH] Auto set as max scale when device changed --- DSView/pv/mainwindow.cpp | 24 ++++++++++++++++++------ DSView/pv/sigsession.cpp | 27 +++++++++++++++++---------- DSView/pv/sigsession.h | 2 ++ libsigrok4DSL/hardware/demo/demo.c | 2 +- 4 files changed, 38 insertions(+), 17 deletions(-) diff --git a/DSView/pv/mainwindow.cpp b/DSView/pv/mainwindow.cpp index 2c7f6816..0d9ff316 100644 --- a/DSView/pv/mainwindow.cpp +++ b/DSView/pv/mainwindow.cpp @@ -1699,15 +1699,21 @@ namespace pv _msg->close(); _msg = NULL; } - - _sampling_bar->update_device_list(); + reset_all_view(); load_device_config(); + _sampling_bar->update_device_list(); _logo_bar->dsl_connected(_session->get_device()->is_hardware()); update_toolbar_view_status(); _session->device_event_object()->device_updated(); + if (_device_agent->is_hardware()) + _session->on_load_config_end(); + + if (_device_agent->get_work_mode() == LOGIC && _device_agent->is_file() == false) + _view->auto_set_max_scale(); + if (_device_agent->is_file()) { check_session_file_version(); @@ -1722,7 +1728,7 @@ namespace pv } _session->start_capture(true); - } + } } break; @@ -1737,12 +1743,18 @@ namespace pv _view->timebase_changed(); break; - case DSV_MSG_DEVICE_MODE_CHANGED: - _sampling_bar->update_sample_rate_list(); + case DSV_MSG_DEVICE_MODE_CHANGED: _view->mode_changed(); reset_all_view(); - load_device_config(); + load_device_config(); update_toolbar_view_status(); + _sampling_bar->update_sample_rate_list(); + + if (_device_agent->is_hardware()) + _session->on_load_config_end(); + + if (_device_agent->get_work_mode() == LOGIC) + _view->auto_set_max_scale(); break; case DSV_MSG_NEW_USB_DEVICE: diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index 40b54235..a2a80e41 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -240,7 +240,7 @@ namespace pv _view_data->clear(); _capture_data->clear(); _capture_data = _view_data; - + init_signals(); set_cur_snap_samplerate(_device_agent.get_sample_rate()); @@ -812,8 +812,7 @@ namespace pv break; } } - - dsv_info("SigSession::init_signals(), clear signals"); + clear_signals(); std::vector().swap(_signals); @@ -2079,6 +2078,7 @@ namespace pv if (cur_mode == LOGIC){ clear_all_decode_task2(); + clear_decode_result(); } _is_stream_mode = false; @@ -2091,14 +2091,15 @@ namespace pv } } - if (_view_data != _capture_data){ - _capture_data->clear(); - _capture_data = _view_data; - } - set_cur_snap_samplerate(_device_agent.get_sample_rate()); - set_cur_samplelimits(_device_agent.get_sample_limit()); - + _capture_data->clear(); + _view_data->clear(); + _capture_data = _view_data; + init_signals(); + + set_cur_snap_samplerate(_device_agent.get_sample_rate()); + set_cur_samplelimits(_device_agent.get_sample_limit()); + dsv_info("Switch work mode to:%d", mode); broadcast_msg(DSV_MSG_DEVICE_MODE_CHANGED); return true; @@ -2211,4 +2212,10 @@ namespace pv return false; } + void SigSession::on_load_config_end() + { + set_cur_snap_samplerate(_device_agent.get_sample_rate()); + set_cur_samplelimits(_device_agent.get_sample_limit()); + } + } // namespace pv diff --git a/DSView/pv/sigsession.h b/DSView/pv/sigsession.h index a9114e43..27fc55b4 100644 --- a/DSView/pv/sigsession.h +++ b/DSView/pv/sigsession.h @@ -409,6 +409,8 @@ public: return get_signal_snapshot()->have_data(); } + void on_load_config_end(); + private: void set_cur_samplelimits(uint64_t samplelimits); void set_cur_snap_samplerate(uint64_t samplerate); diff --git a/libsigrok4DSL/hardware/demo/demo.c b/libsigrok4DSL/hardware/demo/demo.c index a882c4db..47fd42a0 100644 --- a/libsigrok4DSL/hardware/demo/demo.c +++ b/libsigrok4DSL/hardware/demo/demo.c @@ -246,7 +246,7 @@ static int hw_dev_open(struct sr_dev_inst *sdi) struct demo_context *const devc = sdi->priv; if (sdi->status == SR_ST_ACTIVE) - return; + return SR_OK; reset_demo_device(sdi);