PulseView  unreleased development snapshot
A Qt-based sigrok GUI
logic.hpp
Go to the documentation of this file.
1 /*
2  * This file is part of the PulseView project.
3  *
4  * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef PULSEVIEW_PV_DATA_LOGIC_HPP
21 #define PULSEVIEW_PV_DATA_LOGIC_HPP
22 
23 #include "signaldata.hpp"
24 #include "segment.hpp"
25 
26 #include <deque>
27 
28 #include <QObject>
29 
30 using std::deque;
31 using std::shared_ptr;
32 using std::vector;
33 
34 namespace pv {
35 namespace data {
36 
37 class LogicSegment;
38 
39 class Logic : public SignalData
40 {
41  Q_OBJECT
42 
43 public:
44  Logic(unsigned int num_channels);
45 
46  unsigned int num_channels() const;
47 
48  void push_segment(shared_ptr<LogicSegment> &segment);
49 
50  const deque< shared_ptr<LogicSegment> >& logic_segments() const;
51  deque< shared_ptr<LogicSegment> >& logic_segments();
52 
53  vector< shared_ptr<Segment> > segments() const;
54 
55  uint32_t get_segment_count() const;
56 
57  void clear();
58 
59  void set_samplerate(double value);
60 
61  double get_samplerate() const;
62 
63  uint64_t max_sample_count() const;
64 
65  void notify_samples_added(shared_ptr<Segment> segment, uint64_t start_sample,
66  uint64_t end_sample);
67 
68 Q_SIGNALS:
69  void samples_cleared();
70 
71  void samples_added(SharedPtrToSegment segment, uint64_t start_sample,
72  uint64_t end_sample);
73 
74 private Q_SLOTS:
75  void on_segment_completed();
76 
77 private:
78  double samplerate_;
79  const unsigned int num_channels_;
80  deque< shared_ptr<LogicSegment> > segments_;
81 };
82 
83 } // namespace data
84 } // namespace pv
85 
86 #endif // PULSEVIEW_PV_DATA_LOGIC_HPP
double samplerate_
Definition: logic.hpp:78
deque< shared_ptr< LogicSegment > > segments_
Definition: logic.hpp:80
const deque< shared_ptr< LogicSegment > > & logic_segments() const
Definition: logic.cpp:56
void samples_added(SharedPtrToSegment segment, uint64_t start_sample, uint64_t end_sample)
Definition: moc_logic.cpp:164
Logic(unsigned int num_channels)
Definition: logic.cpp:33
void set_samplerate(double value)
Definition: logic.cpp:85
std::shared_ptr< pv::data::Segment > SharedPtrToSegment
Definition: segment.hpp:131
void notify_samples_added(shared_ptr< Segment > segment, uint64_t start_sample, uint64_t end_sample)
Definition: logic.cpp:105
T value(details::expression_node< T > *n)
Definition: exprtk.hpp:12358
uint64_t max_sample_count() const
Definition: logic.cpp:95
void clear()
Definition: logic.cpp:76
static std::string data()
Definition: exprtk.hpp:39024
void push_segment(shared_ptr< LogicSegment > &segment)
Definition: logic.cpp:46
const unsigned int num_channels_
Definition: logic.hpp:79
vector< shared_ptr< Segment > > segments() const
Definition: logic.cpp:66
double get_samplerate() const
Definition: logic.cpp:90
void samples_cleared()
Definition: moc_logic.cpp:158
uint32_t get_segment_count() const
Definition: logic.cpp:71
void on_segment_completed()
Definition: logic.cpp:111
unsigned int num_channels() const
Definition: logic.cpp:41