]> sigrok.org Git - pulseview.git/commitdiff
Added pv::data::Decoder container object
authorJoel Holdsworth <redacted>
Mon, 31 Dec 2012 14:36:08 +0000 (14:36 +0000)
committerJoel Holdsworth <redacted>
Sun, 29 Sep 2013 01:34:42 +0000 (10:34 +0900)
CMakeLists.txt
pv/data/decoder.cpp [new file with mode: 0644]
pv/data/decoder.h [new file with mode: 0644]
pv/sigsession.cpp
pv/view/decodesignal.cpp
pv/view/decodesignal.h

index e723597044beb8c92908c8906d90f1c04de06b13..e66f12518d789830f0be707852a02239df6a77d9 100644 (file)
@@ -107,6 +107,7 @@ set(pulseview_SOURCES
        pv/sigsession.cpp
        pv/data/analog.cpp
        pv/data/analogsnapshot.cpp
+       pv/data/decoder.cpp
        pv/data/logic.cpp
        pv/data/logicsnapshot.cpp
        pv/data/signaldata.cpp
diff --git a/pv/data/decoder.cpp b/pv/data/decoder.cpp
new file mode 100644 (file)
index 0000000..ea0fed6
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * 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
+ */
+
+#include "decoder.h"
+
+namespace pv {
+namespace data {
+
+Decoder::Decoder(const srd_decoder *const dec) :
+       _decoder(dec)
+{
+}
+
+const srd_decoder* Decoder::get_decoder() const
+{
+       return _decoder;
+}
+
+void Decoder::clear_snapshots()
+{
+}
+
+} // namespace data
+} // namespace pv
diff --git a/pv/data/decoder.h b/pv/data/decoder.h
new file mode 100644 (file)
index 0000000..228aeda
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * 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_DATA_DECODER_H
+#define PULSEVIEW_PV_DATA_DECODER_H
+
+#include "signaldata.h"
+
+struct srd_decoder;
+
+namespace pv {
+namespace data {
+
+class Decoder : public SignalData
+{
+public:
+       Decoder(const srd_decoder *const dec);
+
+       const srd_decoder* get_decoder() const;
+
+       void clear_snapshots();
+
+private:
+       const srd_decoder *const _decoder;
+};
+
+} // namespace data
+} // namespace pv
+
+#endif // PULSEVIEW_PV_DATA_DECODER_H
index c2c2dc983892dc65d1ff94b532b79b83e60a9cf6..da5d3f01fecdfbea8f36d80aa89a2ab028105d80 100644 (file)
 #include "sigsession.h"
 
 #include "devicemanager.h"
+
 #include "data/analog.h"
 #include "data/analogsnapshot.h"
+#include "data/decoder.h"
 #include "data/logic.h"
 #include "data/logicsnapshot.h"
 
@@ -199,7 +201,11 @@ boost::shared_ptr<data::Logic> SigSession::get_data()
 void SigSession::add_decoder(srd_decoder *const dec)
 {
        {
-               shared_ptr<view::DecodeSignal> d(new view::DecodeSignal(*this, dec));
+               lock_guard<mutex> lock(_signals_mutex);
+               shared_ptr<data::Decoder> decoder(
+                       new data::Decoder(dec));
+               shared_ptr<view::DecodeSignal> d(
+                       new view::DecodeSignal(*this, decoder));
                _decode_traces.push_back(d);
        }
        signals_changed();
index 1e53427526361660461fb460f027513916b7372b..d27178920faae4190e4343f893387a1603af3d86 100644 (file)
@@ -24,15 +24,18 @@ extern "C" {
 
 #include "decodesignal.h"
 
+#include <pv/data/decoder.h>
+
 using namespace boost;
 using namespace std;
 
 namespace pv {
 namespace view {
 
-DecodeSignal::DecodeSignal(pv::SigSession &session, srd_decoder *const dec) :
-       Trace(session, QString(dec->name)),
-       _decoder(dec)
+DecodeSignal::DecodeSignal(pv::SigSession &session,
+       boost::shared_ptr<pv::data::Decoder> decoder) :
+       Trace(session, QString(decoder->get_decoder()->name)),
+       _decoder(decoder)
 {
        _colour = Qt::red;
 }
index e52c7947c1259571d3f997acb3c0812ba3953197..755fefe6e5c0efca893b38743d8a6720806a5d87 100644 (file)
 #include <boost/shared_ptr.hpp>
 
 namespace pv {
+
+namespace data {
+class Decoder;
+}
+
 namespace view {
 
 class DecodeSignal : public Trace
 {
 public:
-       DecodeSignal(pv::SigSession &session, srd_decoder *const dec);
+       DecodeSignal(pv::SigSession &session,
+               boost::shared_ptr<pv::data::Decoder> decoder);
 
        void init_context_bar_actions(QWidget *parent);
 
@@ -61,7 +67,7 @@ private:
        int get_nominal_offset(const QRect &rect) const;
 
 private:
-       srd_decoder *const _decoder;
+       boost::shared_ptr<pv::data::Decoder> _decoder;
 };
 
 } // namespace view