Commit b9e8c02c authored by DreamSourceLab's avatar DreamSourceLab

Add "RLE" flag into sample count combobox

parent 5dccc919
......@@ -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);
_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();
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_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 -------------------------------------------------*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment