forked from Ivasoft/DSView
Add "RLE" flag into sample count combobox
This commit is contained in:
@@ -1107,14 +1107,16 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi,
|
||||
{
|
||||
{
|
||||
boost::lock_guard<boost::mutex> lock(_data_mutex);
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::GroupSignal> g, _group_traces)
|
||||
{
|
||||
assert(g);
|
||||
if (_cur_logic_snapshot) {
|
||||
BOOST_FOREACH(const boost::shared_ptr<view::GroupSignal> g, _group_traces)
|
||||
{
|
||||
assert(g);
|
||||
|
||||
_cur_group_snapshot = boost::shared_ptr<data::GroupSnapshot>(
|
||||
new data::GroupSnapshot(_logic_data->get_snapshots().front(), g->get_index_list()));
|
||||
_group_data->push_snapshot(_cur_group_snapshot);
|
||||
_cur_group_snapshot.reset();
|
||||
_cur_group_snapshot = boost::shared_ptr<data::GroupSnapshot>(
|
||||
new data::GroupSnapshot(_logic_data->get_snapshots().front(), g->get_index_list()));
|
||||
_group_data->push_snapshot(_cur_group_snapshot);
|
||||
_cur_group_snapshot.reset();
|
||||
}
|
||||
}
|
||||
_cur_logic_snapshot.reset();
|
||||
_cur_dso_snapshot.reset();
|
||||
|
||||
@@ -224,6 +224,7 @@ void SamplingBar::on_configure()
|
||||
ret = dlg.exec();
|
||||
if (ret == QDialog::Accepted) {
|
||||
device_updated();
|
||||
update_sample_count_selector();
|
||||
update_sample_rate_selector();
|
||||
commit_sample_rate();
|
||||
}
|
||||
@@ -511,29 +512,6 @@ void SamplingBar::on_samplecount_sel(int index)
|
||||
SR_CONF_LIMIT_SAMPLES,
|
||||
g_variant_new_uint64(sample_count));
|
||||
|
||||
|
||||
// GVariant* gvar = _devInst->get_config(NULL, NULL, SR_CONF_STREAM);
|
||||
// if (gvar != NULL) {
|
||||
// stream_mode = g_variant_get_boolean(gvar);
|
||||
// g_variant_unref(gvar);
|
||||
// }
|
||||
// gvar = _devInst->get_config(NULL, NULL, SR_CONF_MAX_LOGIC_SAMPLELIMITS);
|
||||
// if (gvar != NULL) {
|
||||
// max_sample_count = g_variant_get_uint64(gvar);
|
||||
// g_variant_unref(gvar);
|
||||
// }
|
||||
// if (!stream_mode) {
|
||||
// if (sample_count > max_sample_count) {
|
||||
// _devInst->set_config(NULL, NULL,
|
||||
// SR_CONF_RLE,
|
||||
// g_variant_new_boolean(true));
|
||||
// } else {
|
||||
// _devInst->set_config(NULL, NULL,
|
||||
// SR_CONF_RLE,
|
||||
// g_variant_new_boolean(false));
|
||||
// }
|
||||
// }
|
||||
|
||||
sample_count_changed();
|
||||
update_scale();
|
||||
}
|
||||
@@ -563,33 +541,6 @@ void SamplingBar::on_samplerate_sel(int index)
|
||||
SR_CONF_SAMPLERATE,
|
||||
g_variant_new_uint64(sample_rate));
|
||||
|
||||
// GVariant* gvar = _devInst->get_config(NULL, NULL, SR_CONF_STREAM);
|
||||
// if (gvar != NULL) {
|
||||
// stream_mode = g_variant_get_boolean(gvar);
|
||||
// g_variant_unref(gvar);
|
||||
// }
|
||||
// gvar = _devInst->get_config(NULL, NULL, SR_CONF_LIMIT_SAMPLES);
|
||||
// if (gvar != NULL) {
|
||||
// sample_count = g_variant_get_uint64(gvar);
|
||||
// g_variant_unref(gvar);
|
||||
// }
|
||||
// gvar = _devInst->get_config(NULL, NULL, SR_CONF_MAX_LOGIC_SAMPLELIMITS);
|
||||
// if (gvar != NULL) {
|
||||
// max_sample_count = g_variant_get_uint64(gvar);
|
||||
// g_variant_unref(gvar);
|
||||
// }
|
||||
// if (!stream_mode) {
|
||||
// if (sample_count > max_sample_count) {
|
||||
// _devInst->set_config(NULL, NULL,
|
||||
// SR_CONF_RLE,
|
||||
// g_variant_new_boolean(true));
|
||||
// } else {
|
||||
// _devInst->set_config(NULL, NULL,
|
||||
// SR_CONF_RLE,
|
||||
// g_variant_new_boolean(false));
|
||||
// }
|
||||
// }
|
||||
|
||||
update_scale();
|
||||
}
|
||||
}
|
||||
@@ -599,6 +550,8 @@ void SamplingBar::update_sample_count_selector()
|
||||
GVariant *gvar_dict, *gvar_list;
|
||||
const uint64_t *elements = NULL;
|
||||
gsize num_elements;
|
||||
bool stream_mode = false;
|
||||
uint64_t max_sample_count = 0;
|
||||
|
||||
if (_updating_sample_count)
|
||||
return;
|
||||
@@ -621,6 +574,17 @@ void SamplingBar::update_sample_count_selector()
|
||||
return;
|
||||
}
|
||||
|
||||
GVariant* gvar = dev_inst->get_config(NULL, NULL, SR_CONF_STREAM);
|
||||
if (gvar != NULL) {
|
||||
stream_mode = g_variant_get_boolean(gvar);
|
||||
g_variant_unref(gvar);
|
||||
}
|
||||
gvar = dev_inst->get_config(NULL, NULL, SR_CONF_RLE_SAMPLELIMITS);
|
||||
if (gvar != NULL) {
|
||||
max_sample_count = g_variant_get_uint64(gvar);
|
||||
g_variant_unref(gvar);
|
||||
}
|
||||
|
||||
if ((gvar_list = g_variant_lookup_value(gvar_dict,
|
||||
"samplecounts", G_VARIANT_TYPE("at"))))
|
||||
{
|
||||
@@ -631,8 +595,12 @@ void SamplingBar::update_sample_count_selector()
|
||||
for (unsigned int i = 0; i < num_elements; i++)
|
||||
{
|
||||
char *const s = sr_samplecount_string(elements[i]);
|
||||
_sample_count.addItem(QString(s),
|
||||
qVariantFromValue(elements[i]));
|
||||
if (!stream_mode && (elements[i] > max_sample_count))
|
||||
_sample_count.addItem(QString(s)+"(RLE)",
|
||||
qVariantFromValue(elements[i]));
|
||||
else
|
||||
_sample_count.addItem(QString(s),
|
||||
qVariantFromValue(elements[i]));
|
||||
g_free(s);
|
||||
}
|
||||
|
||||
|
||||
@@ -508,6 +508,7 @@ void View::signals_changed()
|
||||
next_v_offset += traceHeight + 2 * SignalMargin;
|
||||
}
|
||||
|
||||
_viewport->clear_measure();
|
||||
header_updated();
|
||||
normalize_layout();
|
||||
}
|
||||
|
||||
@@ -414,6 +414,9 @@ void Viewport::mousePressEvent(QMouseEvent *event)
|
||||
}
|
||||
}
|
||||
|
||||
if (_measure_type == LOGIC_FREQ)
|
||||
_measure_type = NO_MEASURE;
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -481,7 +484,7 @@ void Viewport::mouseMoveEvent(QMouseEvent *event)
|
||||
(_mouse_down_point - event->pos()).x() *
|
||||
_view.scale());
|
||||
_drag_strength = (_mouse_down_point - event->pos()).x();
|
||||
measure();
|
||||
//measure();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -658,6 +661,12 @@ void Viewport::set_receive_len(quint64 length)
|
||||
update();
|
||||
}
|
||||
|
||||
void Viewport::clear_measure()
|
||||
{
|
||||
_measure_type = NO_MEASURE;
|
||||
update();
|
||||
}
|
||||
|
||||
void Viewport::measure()
|
||||
{
|
||||
if ((_view.session().get_device()->dev_inst()->mode == LOGIC &&
|
||||
|
||||
@@ -77,6 +77,8 @@ public:
|
||||
void start_trigger_timer(int msec);
|
||||
void stop_trigger_timer();
|
||||
|
||||
void clear_measure();
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event);
|
||||
|
||||
|
||||
@@ -1300,6 +1300,11 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
|
||||
return SR_ERR;
|
||||
*data = g_variant_new_uint64(DSCOPE_MAX_DEPTH);
|
||||
break;
|
||||
case SR_CONF_RLE_SAMPLELIMITS:
|
||||
if (!sdi)
|
||||
return SR_ERR;
|
||||
*data = g_variant_new_uint64(DSCOPE_MAX_DEPTH);
|
||||
break;
|
||||
default:
|
||||
return SR_ERR_NA;
|
||||
}
|
||||
|
||||
@@ -1391,6 +1391,12 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
|
||||
devc = sdi->priv;
|
||||
*data = g_variant_new_uint64(DSLOGIC_MAX_LOGIC_DEPTH*ceil(devc->cur_samplerate * 1.0 / DSLOGIC_MAX_LOGIC_SAMPLERATE));
|
||||
break;
|
||||
case SR_CONF_RLE_SAMPLELIMITS:
|
||||
if (!sdi)
|
||||
return SR_ERR;
|
||||
devc = sdi->priv;
|
||||
*data = g_variant_new_uint64(DSLOGIC_MAX_LOGIC_DEPTH*ceil(samplerates[devc->samplerates_size-1] * 1.0 / DSLOGIC_MAX_LOGIC_SAMPLERATE));
|
||||
break;
|
||||
case SR_CONF_STATUS:
|
||||
if (!sdi)
|
||||
return SR_ERR;
|
||||
|
||||
@@ -498,7 +498,10 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
|
||||
case SR_CONF_MAX_LOGIC_SAMPLELIMITS:
|
||||
*data = g_variant_new_uint64(DEMO_MAX_LOGIC_DEPTH);
|
||||
break;
|
||||
default:
|
||||
case SR_CONF_RLE_SAMPLELIMITS:
|
||||
*data = g_variant_new_uint64(DEMO_MAX_LOGIC_DEPTH);
|
||||
break;
|
||||
default:
|
||||
return SR_ERR_NA;
|
||||
}
|
||||
|
||||
|
||||
@@ -827,6 +827,7 @@ enum {
|
||||
SR_CONF_MAX_DSO_SAMPLELIMITS,
|
||||
SR_CONF_MAX_LOGIC_SAMPLERATE,
|
||||
SR_CONF_MAX_LOGIC_SAMPLELIMITS,
|
||||
SR_CONF_RLE_SAMPLELIMITS,
|
||||
|
||||
/*--- Special stuff -------------------------------------------------*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user