pv/data/snapshot.cpp
pv/dialogs/about.cpp
pv/dialogs/connect.cpp
- pv/dialogs/decoder.cpp
pv/popups/deviceoptions.cpp
pv/popups/probes.cpp
pv/prop/bool.cpp
mutex Decoder::_global_decode_mutex;
-Decoder::Decoder(const srd_decoder *const dec,
- std::map<const srd_probe*,
- boost::shared_ptr<pv::view::LogicSignal> > probes,
- GHashTable *options) :
+Decoder::Decoder(const srd_decoder *const dec) :
_decoder(dec),
- _probes(probes),
- _options(options)
+ _options(g_hash_table_new_full(g_str_hash,
+ g_str_equal, g_free, (GDestroyNotify)g_variant_unref))
{
- init_decoder();
-
- begin_decode();
}
Decoder::~Decoder()
g_hash_table_destroy(_options);
}
-const srd_decoder* Decoder::get_decoder() const
+const srd_decoder* Decoder::decoder() const
{
return _decoder;
}
+const map<const srd_probe*, shared_ptr<view::LogicSignal> >&
+Decoder::probes() const
+{
+ return _probes;
+}
+
+void Decoder::set_probes(std::map<const srd_probe*,
+ boost::shared_ptr<view::LogicSignal> > probes)
+{
+ _probes = probes;
+ begin_decode();
+}
+
+const GHashTable* Decoder::options() const
+{
+ return _options;
+}
+
+void Decoder::set_option(const char *id, GVariant *value)
+{
+ g_variant_ref(value);
+ g_hash_table_replace(_options, (void*)g_strdup(id), value);
+ begin_decode();
+}
+
const vector< shared_ptr<view::decode::Annotation> >
Decoder::annotations() const
{
_decode_thread.interrupt();
_decode_thread.join();
+ _annotations.clear();
+
if (_probes.empty())
return;
+ // Get the samplerate and start time
+ shared_ptr<pv::view::LogicSignal> logic_signal =
+ dynamic_pointer_cast<pv::view::LogicSignal>(
+ (*_probes.begin()).second);
+ if (logic_signal) {
+ shared_ptr<pv::data::Logic> data(
+ logic_signal->data());
+ if (data) {
+ _start_time = data->get_start_time();
+ _samplerate = data->get_samplerate();
+ if (_samplerate == 0.0)
+ _samplerate = 1.0;
+ }
+ }
+
// We get the logic data of the first probe in the list.
// This works because we are currently assuming all
// LogicSignals have the same data/snapshot
{
}
-void Decoder::init_decoder()
-{
- if (!_probes.empty())
- {
- shared_ptr<pv::view::LogicSignal> logic_signal =
- dynamic_pointer_cast<pv::view::LogicSignal>(
- (*_probes.begin()).second);
- if (logic_signal) {
- shared_ptr<pv::data::Logic> data(
- logic_signal->data());
- if (data) {
- _start_time = data->get_start_time();
- _samplerate = data->get_samplerate();
- if (_samplerate == 0.0)
- _samplerate = 1.0;
- }
- }
- }
-}
-
void Decoder::decode_proc(shared_ptr<data::Logic> data)
{
srd_session *session;
assert(data);
- _annotations.clear();
-
const deque< shared_ptr<pv::data::LogicSnapshot> > &snapshots =
data->get_snapshots();
if (snapshots.empty())
static const int64_t DecodeChunkLength;
public:
- Decoder(const srd_decoder *const decoder,
- std::map<const srd_probe*,
- boost::shared_ptr<pv::view::LogicSignal> > probes,
- GHashTable *options);
+ Decoder(const srd_decoder *const decoder);
virtual ~Decoder();
- const srd_decoder* get_decoder() const;
+ const srd_decoder* decoder() const;
+
+ const std::map<const srd_probe*, boost::shared_ptr<view::LogicSignal> >&
+ probes() const;
+ void set_probes(std::map<const srd_probe*,
+ boost::shared_ptr<view::LogicSignal> > probes);
+
+ const GHashTable* options() const;
+
+ void set_option(const char *id, GVariant *value);
const std::vector< boost::shared_ptr<pv::view::decode::Annotation> >
annotations() const;
private:
void begin_decode();
- void init_decoder();
-
void decode_proc(boost::shared_ptr<data::Logic> data);
static void annotation_callback(srd_proto_data *pdata,
+++ /dev/null
-/*
- * This file is part of the PulseView project.
- *
- * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-extern "C" {
-#include <libsigrokdecode/libsigrokdecode.h>
-}
-
-#include <utility>
-
-#include <boost/foreach.hpp>
-
-#include <QDebug>
-
-#include "decoder.h"
-
-#include <pv/view/logicsignal.h>
-#include <pv/view/signal.h>
-
-using namespace boost;
-using namespace std;
-
-namespace pv {
-namespace dialogs {
-
-Decoder::Decoder(QWidget *parent, const srd_decoder *decoder,
- const vector< shared_ptr<view::LogicSignal> > &sigs,
- GHashTable *options) :
- QDialog(parent),
- _sigs(sigs),
- _binding(decoder, options),
- _layout(this),
- _form(this),
- _form_layout(&_form),
- _heading(this),
- _button_box(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
- Qt::Horizontal, this)
-{
- const GSList *probe;
-
- setWindowTitle(tr("Configure %1").arg(decoder->name));
-
- _heading.setText(tr("<h2>%1</h2>%2")
- .arg(decoder->longname)
- .arg(decoder->desc));
-
- connect(&_button_box, SIGNAL(accepted()), this, SLOT(accept()));
- connect(&_button_box, SIGNAL(rejected()), this, SLOT(reject()));
-
- _form.setLayout(&_form_layout);
-
- setLayout(&_layout);
- _layout.addWidget(&_heading);
- _layout.addWidget(&_form);
- _layout.addWidget(&_button_box);
-
- _form_layout.addRow(new QLabel(tr("<h3>Probes</h3>"), &_form));
-
- // Add the mandatory probes
- for(probe = decoder->probes; probe; probe = probe->next) {
- const struct srd_probe *const p =
- (struct srd_probe *)probe->data;
- QComboBox *const combo = create_probe_selector(
- &_form, p->name);
- _form_layout.addRow(tr("<b>%1</b> (%2) *")
- .arg(p->name).arg(p->desc), combo);
-
- _probe_selector_map[p] = combo;
- }
-
- // Add the optional probes
- for(probe = decoder->opt_probes; probe; probe = probe->next) {
- const struct srd_probe *const p =
- (struct srd_probe *)probe->data;
- QComboBox *const combo = create_probe_selector(
- &_form, p->name);
- _form_layout.addRow(tr("<b>%1</b> (%2)")
- .arg(p->name).arg(p->desc), combo);
-
- _probe_selector_map[p] = combo;
- }
-
- _form_layout.addRow(new QLabel(
- tr("<i>* Required Probes</i>"), &_form));
-
- // Add the options
- if (!_binding.properties().empty()) {
- _form_layout.addRow(new QLabel(tr("<h3>Options</h3>"),
- &_form));
- _binding.add_properties_to_form(&_form_layout);
- }
-}
-
-void Decoder::accept()
-{
- QDialog::accept();
- _binding.commit();
-}
-
-QComboBox* Decoder::create_probe_selector(
- QWidget *parent, const char *name)
-{
- QComboBox *selector = new QComboBox(parent);
-
- selector->addItem("-", qVariantFromValue(-1));
- selector->setCurrentIndex(0);
-
- for(size_t i = 0; i < _sigs.size(); i++) {
- const shared_ptr<view::LogicSignal> s(_sigs[i]);
- assert(s);
-
- if (s->enabled())
- {
- selector->addItem(s->get_name(), qVariantFromValue(i));
- if(s->get_name().toLower().contains(
- QString(name).toLower()))
- selector->setCurrentIndex(i + 1);
- }
- }
-
- return selector;
-}
-
-map<const srd_probe*, shared_ptr<view::LogicSignal> > Decoder::get_probes()
-{
- map<const srd_probe*, shared_ptr<view::LogicSignal> > probe_map;
- for(map<const srd_probe*, QComboBox*>::const_iterator i =
- _probe_selector_map.begin();
- i != _probe_selector_map.end(); i++)
- {
- const QComboBox *const combo = (*i).second;
- const int probe_index =
- combo->itemData(combo->currentIndex()).value<int>();
- if(probe_index >= 0) {
- shared_ptr<view::LogicSignal> sig = _sigs[probe_index];
- probe_map[(*i).first] = sig;
- }
- }
-
- return probe_map;
-}
-
-} // namespace dialogs
-} // namespace pv
+++ /dev/null
-/*
- * This file is part of the PulseView project.
- *
- * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef PULSEVIEW_PV_DECODER_H
-#define PULSEVIEW_PV_DECODER_H
-
-#include <vector>
-#include <map>
-
-#include <boost/shared_ptr.hpp>
-
-#include <QComboBox>
-#include <QDialog>
-#include <QDialogButtonBox>
-#include <QFormLayout>
-#include <QLabel>
-#include <QVBoxLayout>
-
-#include <pv/prop/binding/decoderoptions.h>
-
-struct srd_decoder;
-
-namespace pv {
-
-namespace view {
-class LogicSignal;
-}
-
-namespace dialogs {
-
-class Decoder : public QDialog
-{
-public:
- Decoder(QWidget *parent, const srd_decoder *decoder,
- const std::vector< boost::shared_ptr<view::LogicSignal> > &sigs,
- GHashTable *options);
-
- void accept();
-
- std::map<const srd_probe*, boost::shared_ptr<view::LogicSignal> >
- get_probes();
-
-private:
- QComboBox* create_probe_selector(
- QWidget *parent, const char *name);
-
-private:
- const std::vector< boost::shared_ptr<view::LogicSignal> > &_sigs;
-
- std::map<const srd_probe*, QComboBox*> _probe_selector_map;
-
- pv::prop::binding::DecoderOptions _binding;
-
- QVBoxLayout _layout;
-
- QWidget _form;
- QFormLayout _form_layout;
-
- QLabel _heading;
- QDialogButtonBox _button_box;
-};
-
-} // namespace dialogs
-} // namespace pv
-
-#endif // PULSEVIEW_PV_DECODER_H
#include "devicemanager.h"
#include "dialogs/about.h"
#include "dialogs/connect.h"
-#include "dialogs/decoder.h"
#include "toolbars/samplingbar.h"
#include "view/logicsignal.h"
#include "view/view.h"
(srd_decoder*)((QAction*)action)->data().value<void*>();
assert(dec);
- vector< shared_ptr<view::LogicSignal> > logic_sigs;
- const vector< shared_ptr<view::Signal> > &sigs =
- _session.get_signals();
- BOOST_FOREACH(shared_ptr<view::Signal> s, sigs) {
- assert(s);
- shared_ptr<view::LogicSignal> l =
- dynamic_pointer_cast<view::LogicSignal>(s);
- if (l)
- logic_sigs.push_back(l);
- }
-
- GHashTable *const options = g_hash_table_new_full(g_str_hash,
- g_str_equal, g_free, (GDestroyNotify)g_variant_unref);
-
- dialogs::Decoder dlg(this, dec, logic_sigs, options);
- if(dlg.exec() != QDialog::Accepted) {
- g_hash_table_destroy(options);
- return;
- }
-
- _session.add_decoder(dec, dlg.get_probes(), options);
+ _session.add_decoder(dec);
}
void MainWindow::run_stop()
#include <vector>
#include <boost/shared_ptr.hpp>
+class QFormLayout;
class QWidget;
namespace pv {
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <libsigrokdecode/libsigrokdecode.h>
+
#include "decoderoptions.h"
#include <boost/foreach.hpp>
#include <boost/none_t.hpp>
+#include <pv/data/decoder.h>
#include <pv/prop/int.h>
#include <pv/prop/string.h>
namespace prop {
namespace binding {
-DecoderOptions::DecoderOptions(const srd_decoder *decoder,
- GHashTable *options) :
- _decoder(decoder),
- _options(options)
+DecoderOptions::DecoderOptions(shared_ptr<pv::data::Decoder> decoder) :
+ _decoder(decoder)
{
- assert(decoder);
+ assert(_decoder);
+ const srd_decoder *const dec = _decoder->decoder();
+ assert(dec);
- for (GSList *l = decoder->options; l; l = l->next)
+ for (GSList *l = dec->options; l; l = l->next)
{
const srd_decoder_option *const opt =
(srd_decoder_option*)l->data;
GVariant* DecoderOptions::getter(const char *id)
{
+ assert(_decoder);
+
// Get the value from the hash table if it is already present
- GVariant *val = (GVariant*)g_hash_table_lookup(_options, id);
+ GVariant *val = (GVariant*)g_hash_table_lookup(
+ (GHashTable*)_decoder->options(), id);
if (!val)
{
+ assert(_decoder->decoder());
+
// Get the default value if not
- for (GSList *l = _decoder->options; l; l = l->next)
+ for (GSList *l = _decoder->decoder()->options; l; l = l->next)
{
const srd_decoder_option *const opt =
(srd_decoder_option*)l->data;
void DecoderOptions::setter(const char *id, GVariant *value)
{
- g_variant_ref(value);
- g_hash_table_insert(_options, (void*)g_strdup(id), value);
+ assert(_decoder);
+ _decoder->set_option(id, value);
}
} // binding
#ifndef PULSEVIEW_PV_PROP_BINDING_DECODEROPTIONS_H
#define PULSEVIEW_PV_PROP_BINDING_DECODEROPTIONS_H
-#include <libsigrokdecode/libsigrokdecode.h>
+#include <glib.h>
#include "binding.h"
namespace pv {
+
+namespace data {
+class Decoder;
+}
+
namespace prop {
namespace binding {
class DecoderOptions : public Binding
{
public:
- DecoderOptions(const srd_decoder *decoder, GHashTable *options);
+ DecoderOptions(boost::shared_ptr<pv::data::Decoder> decoder);
private:
GVariant* getter(const char *id);
void setter(const char *id, GVariant *value);
private:
- const srd_decoder *const _decoder;
- GHashTable *const _options;
+ boost::shared_ptr<pv::data::Decoder> _decoder;
};
} // binding
#include <assert.h>
+#include <QLineEdit>
#include <QSpinBox>
#include "string.h"
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <libsigrokdecode/libsigrokdecode.h>
+
#include "sigsession.h"
#include "devicemanager.h"
#include <stdexcept>
+#include <boost/foreach.hpp>
+
#include <sys/stat.h>
#include <QDebug>
return _logic_data;
}
-bool SigSession::add_decoder(srd_decoder *const dec,
- std::map<const srd_probe*,
- boost::shared_ptr<view::LogicSignal> > probes,
- GHashTable *options)
+bool SigSession::add_decoder(srd_decoder *const dec)
{
+ map<const srd_probe*, shared_ptr<view::LogicSignal> > probes;
+
try
{
lock_guard<mutex> lock(_signals_mutex);
- shared_ptr<data::Decoder> decoder(
- new data::Decoder(dec, probes, options));
+ // Create the decoder
+ shared_ptr<data::Decoder> decoder(new data::Decoder(dec));
+
+ // Auto select the initial probes
+ for(const GSList *i = dec->probes; i; i = i->next)
+ {
+ const srd_probe *const probe = (const srd_probe*)i->data;
+ BOOST_FOREACH(shared_ptr<view::Signal> s, _signals)
+ {
+ shared_ptr<view::LogicSignal> l =
+ dynamic_pointer_cast<view::LogicSignal>(s);
+ if (l && QString(probe->name).toLower().contains(
+ l->get_name().toLower()))
+ probes[probe] = l;
+ }
+ }
+
+ decoder->set_probes(probes);
+
+ // Create the decode signal
shared_ptr<view::DecodeSignal> d(
new view::DecodeSignal(*this, decoder,
_decode_traces.size()));
boost::shared_ptr<data::Logic> get_data();
- bool add_decoder(srd_decoder *const dec,
- std::map<const srd_probe*,
- boost::shared_ptr<view::LogicSignal> > probes,
- GHashTable *options);
+ bool add_decoder(srd_decoder *const dec);
std::vector< boost::shared_ptr<view::DecodeSignal> >
get_decode_signals() const;
#include <boost/foreach.hpp>
#include <QAction>
+#include <QComboBox>
+#include <QFormLayout>
+#include <QLabel>
#include <QMenu>
#include "decodesignal.h"
#include <pv/sigsession.h>
#include <pv/data/decoder.h>
+#include <pv/view/logicsignal.h>
#include <pv/view/view.h>
#include <pv/view/decode/annotation.h>
DecodeSignal::DecodeSignal(pv::SigSession &session,
boost::shared_ptr<pv::data::Decoder> decoder, int index) :
- Trace(session, QString(decoder->get_decoder()->name)),
- _decoder(decoder)
+ Trace(session, QString(decoder->decoder()->name)),
+ _decoder(decoder),
+ _binding(decoder)
{
assert(_decoder);
}
}
+void DecodeSignal::populate_popup_form(QWidget *parent, QFormLayout *form)
+{
+ const GSList *probe;
+
+ assert(form);
+ assert(parent);
+ assert(_decoder);
+
+ const srd_decoder *const decoder = _decoder->decoder();
+
+ assert(decoder);
+
+ Trace::populate_popup_form(parent, form);
+
+ form->addRow(new QLabel(tr("<h3>Probes</h3>"), parent));
+
+ _probe_selector_map.clear();
+
+ // Add the mandatory probes
+ for(probe = decoder->probes; probe; probe = probe->next) {
+ const struct srd_probe *const p =
+ (struct srd_probe *)probe->data;
+ QComboBox *const combo = create_probe_selector(parent, p);
+ connect(combo, SIGNAL(currentIndexChanged(int)),
+ this, SLOT(on_probe_selected(int)));
+ form->addRow(tr("<b>%1</b> (%2) *")
+ .arg(p->name).arg(p->desc), combo);
+
+ _probe_selector_map[p] = combo;
+ }
+
+ // Add the optional probes
+ for(probe = decoder->opt_probes; probe; probe = probe->next) {
+ const struct srd_probe *const p =
+ (struct srd_probe *)probe->data;
+ QComboBox *const combo = create_probe_selector(parent, p);
+ connect(combo, SIGNAL(currentIndexChanged(int)),
+ this, SLOT(on_probe_selected(int)));
+ form->addRow(tr("<b>%1</b> (%2)")
+ .arg(p->name).arg(p->desc), combo);
+
+ _probe_selector_map[p] = combo;
+ }
+
+ form->addRow(new QLabel(
+ tr("<i>* Required Probes</i>"), parent));
+
+ // Add the options
+ if (!_binding.properties().empty()) {
+ form->addRow(new QLabel(tr("<h3>Options</h3>"),
+ parent));
+ _binding.add_properties_to_form(form, true);
+ }
+}
+
QMenu* DecodeSignal::create_context_menu(QWidget *parent)
{
QMenu *const menu = Trace::create_context_menu(parent);
p.drawText(text_rect, message);
}
+QComboBox* DecodeSignal::create_probe_selector(
+ QWidget *parent, const srd_probe *const probe)
+{
+ const vector< shared_ptr<Signal> > sigs = _session.get_signals();
+
+ assert(_decoder);
+ const map<const srd_probe*,
+ shared_ptr<LogicSignal> >::const_iterator probe_iter =
+ _decoder->probes().find(probe);
+
+ QComboBox *selector = new QComboBox(parent);
+
+ selector->addItem("-", qVariantFromValue((void*)NULL));
+
+ if (probe_iter == _decoder->probes().end())
+ selector->setCurrentIndex(0);
+
+ for(size_t i = 0; i < sigs.size(); i++) {
+ const shared_ptr<view::Signal> s(sigs[i]);
+ assert(s);
+
+ if (dynamic_pointer_cast<LogicSignal>(s) && s->enabled())
+ {
+ selector->addItem(s->get_name(),
+ qVariantFromValue((void*)s.get()));
+ if ((*probe_iter).second == s)
+ selector->setCurrentIndex(i + 1);
+ }
+ }
+
+ return selector;
+}
+
+void DecodeSignal::commit_probes()
+{
+ assert(_decoder);
+
+ map<const srd_probe*, shared_ptr<LogicSignal> > probe_map;
+ const vector< shared_ptr<Signal> > sigs = _session.get_signals();
+
+ for(map<const srd_probe*, QComboBox*>::const_iterator i =
+ _probe_selector_map.begin();
+ i != _probe_selector_map.end(); i++)
+ {
+ const QComboBox *const combo = (*i).second;
+ const LogicSignal *const selection =
+ (LogicSignal*)combo->itemData(combo->currentIndex()).
+ value<void*>();
+
+ BOOST_FOREACH(shared_ptr<Signal> s, sigs)
+ if(s.get() == selection) {
+ probe_map[(*i).first] =
+ dynamic_pointer_cast<LogicSignal>(s);
+ break;
+ }
+ }
+
+ _decoder->set_probes(probe_map);
+}
+
void DecodeSignal::on_new_decode_data()
{
if (_view)
_session.remove_decode_signal(this);
}
+void DecodeSignal::on_probe_selected(int)
+{
+ commit_probes();
+}
+
} // namespace view
} // namespace pv
#include "trace.h"
+#include <map>
+
#include <boost/shared_ptr.hpp>
+#include <pv/prop/binding/decoderoptions.h>
+
+struct srd_probe;
+
+class QComboBox;
+
namespace pv {
namespace data {
**/
void paint_mid(QPainter &p, int left, int right);
+ void populate_popup_form(QWidget *parent, QFormLayout *form);
+
QMenu* create_context_menu(QWidget *parent);
void delete_pressed();
void draw_error(QPainter &p, const QString &message,
int left, int right);
+ QComboBox* create_probe_selector(
+ QWidget *parent, const srd_probe *const probe);
+
+ void commit_probes();
+
private slots:
void on_new_decode_data();
void on_delete();
+ void on_probe_selected(int);
+
private:
boost::shared_ptr<pv::data::Decoder> _decoder;
uint64_t _decode_start, _decode_end;
+
+ pv::prop::binding::DecoderOptions _binding;
+
+ std::map<const srd_probe*, QComboBox*> _probe_selector_map;
};
} // namespace view
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <libsigrokdecode/libsigrokdecode.h>
+
#include <assert.h>
#include <limits.h>
#include <math.h>
${PROJECT_SOURCE_DIR}/pv/data/logicsnapshot.cpp
${PROJECT_SOURCE_DIR}/pv/data/snapshot.cpp
${PROJECT_SOURCE_DIR}/pv/data/signaldata.cpp
+ ${PROJECT_SOURCE_DIR}/pv/prop/int.cpp
+ ${PROJECT_SOURCE_DIR}/pv/prop/property.cpp
+ ${PROJECT_SOURCE_DIR}/pv/prop/string.cpp
+ ${PROJECT_SOURCE_DIR}/pv/prop/binding/binding.cpp
+ ${PROJECT_SOURCE_DIR}/pv/prop/binding/decoderoptions.cpp
${PROJECT_SOURCE_DIR}/pv/view/analogsignal.cpp
${PROJECT_SOURCE_DIR}/pv/view/cursor.cpp
${PROJECT_SOURCE_DIR}/pv/view/cursorpair.cpp
set(pulseview_TEST_HEADERS
${PROJECT_SOURCE_DIR}/pv/sigsession.h
${PROJECT_SOURCE_DIR}/pv/data/decoder.h
+ ${PROJECT_SOURCE_DIR}/pv/prop/int.h
+ ${PROJECT_SOURCE_DIR}/pv/prop/property.h
+ ${PROJECT_SOURCE_DIR}/pv/prop/string.h
${PROJECT_SOURCE_DIR}/pv/view/cursor.h
${PROJECT_SOURCE_DIR}/pv/view/decodesignal.h
${PROJECT_SOURCE_DIR}/pv/view/header.h
srd_decoder *const dec = (struct srd_decoder*)l->data;
BOOST_REQUIRE(dec);
- map<const srd_probe*, shared_ptr<view::LogicSignal> > probes;
- ss.add_decoder(dec, probes,
- g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
- (GDestroyNotify)g_variant_unref));
-
- ss.add_decoder(dec, probes,
- g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
- (GDestroyNotify)g_variant_unref));
+ ss.add_decoder(dec);
+ ss.add_decoder(dec);
// Check the signals were created
const vector< shared_ptr<view::DecodeSignal> > sigs =