From 802370401c86915052c5f8d4a87d8ab179cfea61 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Tue, 26 Apr 2022 10:17:17 +0800 Subject: [PATCH] update: the cursor key type change to uint64 --- DSView/pv/dialogs/decoderoptionsdlg.cpp | 35 ++++++++++--------------- DSView/pv/dialogs/decoderoptionsdlg.h | 8 +++--- DSView/pv/dialogs/deviceoptions.cpp | 7 ++--- DSView/pv/view/cursor.cpp | 24 ----------------- DSView/pv/view/cursor.h | 13 +++------ DSView/pv/view/decodetrace.cpp | 8 +++--- DSView/pv/view/decodetrace.h | 4 +-- DSView/pv/view/view.cpp | 19 +++++++++++++- DSView/pv/view/view.h | 5 +++- 9 files changed, 54 insertions(+), 69 deletions(-) diff --git a/DSView/pv/dialogs/decoderoptionsdlg.cpp b/DSView/pv/dialogs/decoderoptionsdlg.cpp index a55599a0..e5510d35 100644 --- a/DSView/pv/dialogs/decoderoptionsdlg.cpp +++ b/DSView/pv/dialogs/decoderoptionsdlg.cpp @@ -53,6 +53,8 @@ namespace dialogs { DecoderOptionsDlg::DecoderOptionsDlg(QWidget *parent) :DSDialog(parent) { + _cursor1 = 0; + _cursor2 = 0; } DecoderOptionsDlg::~DecoderOptionsDlg() @@ -126,9 +128,9 @@ void DecoderOptionsDlg::load_options(view::DecodeTrace *trace) { int num = 1; for (auto c : view->get_cursorList()){ - QString curCursor = tr("Cursor") + QString::number(num); - _start_comboBox->addItem(curCursor, QVariant(c->get_key())); - _end_comboBox->addItem(curCursor, QVariant(c->get_key())); + QString curCursor = tr("Cursor ") + QString::number(num); + _start_comboBox->addItem(curCursor, QVariant((quint64)c->get_key())); + _end_comboBox->addItem(curCursor, QVariant((quint64)c->get_key())); if (c->get_key() == _cursor1) dex1 = num; @@ -140,18 +142,9 @@ void DecoderOptionsDlg::load_options(view::DecodeTrace *trace) } if (dex1 == 0) - _cursor1 = ""; + _cursor1 = 0; if (dex2 == 0) - _cursor2 = ""; - - if (dex1 > dex2 && false){ - int tmp = dex1; - dex1 = dex2; - dex2 = tmp; - QString tmp_s = _cursor1; - _cursor1 = _cursor2; - _cursor1 = tmp_s; - } + _cursor2 = 0; _start_comboBox->setCurrentIndex(dex1); _end_comboBox->setCurrentIndex(dex2); @@ -280,33 +273,33 @@ void DecoderOptionsDlg::update_decode_range() if (index1 == 0) { decode_start = 0; - _cursor1 = ""; + _cursor1 = 0; } else { - _cursor1 = _start_comboBox->itemData(index1).toString(); + _cursor1 = _start_comboBox->itemData(index1).toULongLong(); int cusrsor_index = view->get_cursor_index_by_key(_cursor1); if (cusrsor_index != -1){ decode_start = view->get_cursor_samples(cusrsor_index); } else{ decode_start = 0; - _cursor1 = ""; + _cursor1 = 0; } } if (index2 == 0) { decode_end = last_samples; - _cursor2 = ""; + _cursor2 = 0; } else { - _cursor2 = _end_comboBox->itemData(index2).toString(); + _cursor2 = _end_comboBox->itemData(index2).toULongLong(); int cusrsor_index = view->get_cursor_index_by_key(_cursor2); if (cusrsor_index != -1){ decode_end = view->get_cursor_samples(cusrsor_index); } else{ decode_end = last_samples; - _cursor2 = ""; + _cursor2 = 0; } } @@ -431,7 +424,7 @@ void DecoderOptionsDlg::commit_decoder_probes(data::decode::Decoder *dec) void DecoderOptionsDlg::on_accept() { - if (_cursor1 != "" && _cursor1 == _cursor2){ + if (_cursor1 > 0 && _cursor1 == _cursor2){ MsgBox::Show("error", "Invalid cursor index for sample range!"); return; } diff --git a/DSView/pv/dialogs/decoderoptionsdlg.h b/DSView/pv/dialogs/decoderoptionsdlg.h index 485cfdd2..cb61118b 100644 --- a/DSView/pv/dialogs/decoderoptionsdlg.h +++ b/DSView/pv/dialogs/decoderoptionsdlg.h @@ -72,13 +72,13 @@ public: DecoderOptionsDlg(QWidget *parent); ~DecoderOptionsDlg(); - inline void set_cursor_range(QString cursor1, QString cursor2) + inline void set_cursor_range(uint64_t cursor1, uint64_t cursor2) { _cursor1 = cursor1; _cursor2 = cursor2; } - inline void get_cursor_range(QString &cursor1, QString &cursor2) + inline void get_cursor_range(uint64_t &cursor1, uint64_t &cursor2) { cursor1 = _cursor1; cursor2 = _cursor2; @@ -109,8 +109,8 @@ private: DsComboBox *_start_comboBox; DsComboBox *_end_comboBox; view::DecodeTrace *_trace; - QString _cursor1; - QString _cursor2; + uint64_t _cursor1; //cursor key + uint64_t _cursor2; std::vector _probe_selectors; }; diff --git a/DSView/pv/dialogs/deviceoptions.cpp b/DSView/pv/dialogs/deviceoptions.cpp index b0b6119e..57c56f4a 100755 --- a/DSView/pv/dialogs/deviceoptions.cpp +++ b/DSView/pv/dialogs/deviceoptions.cpp @@ -47,9 +47,11 @@ DeviceOptions::DeviceOptions(QWidget *parent, DevInst *dev_inst) : _config_button = NULL; _cali_button = NULL; + setTitle(tr("Device Options")); + _props_box = new QGroupBox(tr("Mode"), this); _props_box->setLayout(get_property_form(_props_box)); - _layout.addWidget(_props_box); + //_layout.addWidget(_props_box); _dynamic_box = new QGroupBox(dynamic_widget(_dynamic_layout), this); @@ -61,8 +63,7 @@ DeviceOptions::DeviceOptions(QWidget *parent, DevInst *dev_inst) : _layout.addWidget(&_button_box); layout()->addLayout(&_layout); - setTitle(tr("Device Options")); - + connect(&_button_box, SIGNAL(accepted()), this, SLOT(accept())); //connect(&_button_box, SIGNAL(rejected()), this, SLOT(reject())); connect(_dev_inst, SIGNAL(device_updated()), this, SLOT(reject())); diff --git a/DSView/pv/view/cursor.cpp b/DSView/pv/view/cursor.cpp index 1cf8f18f..19b0a235 100755 --- a/DSView/pv/view/cursor.cpp +++ b/DSView/pv/view/cursor.cpp @@ -31,12 +31,8 @@ #include #include #include - #include #include -#include -#include - #include "../dsvdef.h" namespace pv { @@ -57,16 +53,6 @@ Cursor::Cursor(View &view, QColor color, uint64_t index) : TimeMarker(view, color, index), _other(*this) { - static bool bSpeed = false; - if (!bSpeed){ - bSpeed = true; - srand(std::time(NULL)); - } - - // make a rand key - char buf[8+1]; - make_rand_str(buf, 8); - _key = QString(buf); } QRect Cursor::get_label_rect(const QRect &rect, bool &visible, bool has_hoff) @@ -179,16 +165,6 @@ void Cursor::compute_text_size(QPainter &p, unsigned int prefix) _text_size = p.boundingRect(QRect(), 0, Ruler::format_real_time(_index, _view.session().cur_snap_samplerate())).size(); } - -void Cursor::make_rand_str(char *buf, int len) -{ - for (int i = 0; i < len; ++i) - { - buf[i] = 'a' + rand() % 26; - } - - buf[len] = 0; -} } // namespace view } // namespace pv diff --git a/DSView/pv/view/cursor.h b/DSView/pv/view/cursor.h index 029b5489..b01f53c2 100755 --- a/DSView/pv/view/cursor.h +++ b/DSView/pv/view/cursor.h @@ -83,14 +83,10 @@ public: unsigned int prefix, QChar label, QColor color, bool has_hoff); public: - inline QString get_key(){ - return _key; + inline uint64_t get_key(){ + return (uint64_t)this; } - - inline void set_key(QString key){ - _key = key; - } - + inline uint64_t get_index() { return _index; @@ -99,12 +95,9 @@ public: private: void compute_text_size(QPainter &p, unsigned int prefix); - void make_rand_str(char *buf, int len); - private: const Cursor &_other; QSizeF _text_size; - QString _key; }; } // namespace view diff --git a/DSView/pv/view/decodetrace.cpp b/DSView/pv/view/decodetrace.cpp index 2bc71176..464515f7 100755 --- a/DSView/pv/view/decodetrace.cpp +++ b/DSView/pv/view/decodetrace.cpp @@ -135,6 +135,8 @@ DecodeTrace::DecodeTrace(pv::SigSession *session, _decoder_stack = decoder_stack; _session = session; _delete_flag = false; + _decode_cursor1 = 0; + _decode_cursor2 = 0; connect(_decoder_stack, SIGNAL(new_decode_data()), this, SLOT(on_new_decode_data())); @@ -656,13 +658,13 @@ void DecodeTrace::frame_ended() if (_decode_start > last_samples) { _decode_start = 0; - _decode_cursor1 = ""; + _decode_cursor1 = 0; } - if (_decode_cursor2 == "" || + if (_decode_cursor2 == 0 || _decode_end > last_samples) { _decode_end = last_samples; - _decode_cursor2 = ""; + _decode_cursor2 = 0; } for(auto &dec : _decoder_stack->stack()) { diff --git a/DSView/pv/view/decodetrace.h b/DSView/pv/view/decodetrace.h index b8b09ce2..df0ac437 100755 --- a/DSView/pv/view/decodetrace.h +++ b/DSView/pv/view/decodetrace.h @@ -193,8 +193,8 @@ private: uint64_t _decode_start; uint64_t _decode_end; - QString _decode_cursor1; // the cursor key name, sample start index - QString _decode_cursor2; + uint64_t _decode_cursor1; // the cursor key, sample start index + uint64_t _decode_cursor2; QFormLayout *_pub_input_layer; int _progress; diff --git a/DSView/pv/view/view.cpp b/DSView/pv/view/view.cpp index f33a6d16..04ce8051 100755 --- a/DSView/pv/view/view.cpp +++ b/DSView/pv/view/view.cpp @@ -47,6 +47,7 @@ #include "../data/logicsnapshot.h" #include "../dialogs/calibration.h" #include "../dialogs/lissajousoptions.h" +#include "../dsvdef.h" using namespace std; @@ -99,6 +100,9 @@ View::View(SigSession *session, pv::toolbars::SamplingBar *sampling_bar, QWidget { assert(session); + _trig_cursor = NULL; + _search_cursor = NULL; + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // trace viewport map @@ -189,6 +193,11 @@ View::View(SigSession *session, pv::toolbars::SamplingBar *sampling_bar, QWidget connect(_header, SIGNAL(header_updated()),this, SLOT(header_updated())); } +View::~View(){ + DESTROY_OBJECT(_trig_cursor); + DESTROY_OBJECT(_search_cursor); +} + void View::show_wait_trigger() { _time_viewport->show_wait_trigger(); @@ -993,6 +1002,14 @@ void View::del_cursor(Cursor* cursor) cursor_update(); } +void View::clear_cursors() +{ + for (auto c : _cursorList){ + delete c; + } + _cursorList.clear(); +} + void View::set_cursor_middle(int index) { assert(index < (int)_cursorList.size()); @@ -1321,7 +1338,7 @@ void View::set_receive_len(uint64_t len) _fft_viewport->set_receive_len(len); } -int View::get_cursor_index_by_key(QString key) +int View::get_cursor_index_by_key(uint64_t key) { int dex = 0; for (auto c : _cursorList){ diff --git a/DSView/pv/view/view.h b/DSView/pv/view/view.h index 9526fd9e..81b20132 100755 --- a/DSView/pv/view/view.h +++ b/DSView/pv/view/view.h @@ -105,6 +105,8 @@ public: public: explicit View(SigSession *session, pv::toolbars::SamplingBar *sampling_bar, QWidget *parent = 0); + ~View(); + SigSession& session(); /** @@ -176,6 +178,7 @@ public: std::list& get_cursorList(); void add_cursor(QColor color, uint64_t index); void del_cursor(Cursor* cursor); + void clear_cursors(); void set_cursor_middle(int index); Cursor* get_trig_cursor(); @@ -239,7 +242,7 @@ public: double index2pixel(uint64_t index, bool has_hoff = true); uint64_t pixel2index(double pixel); - int get_cursor_index_by_key(QString key); + int get_cursor_index_by_key(uint64_t key); signals: void hover_point_changed();