21 #ifndef PULSEVIEW_PV_DATA_SIGNALBASE_HPP 22 #define PULSEVIEW_PV_DATA_SIGNALBASE_HPP 26 #include <condition_variable> 37 #include <libsigrokcxx/libsigrokcxx.hpp> 42 using std::condition_variable;
44 using std::enable_shared_from_this;
48 using std::shared_ptr;
74 void append_signal(shared_ptr<SignalBase> signal);
75 void remove_signal(shared_ptr<SignalBase> signal);
76 deque<shared_ptr<SignalBase>> signals()
const;
79 const QString name()
const;
90 Q_PROPERTY(QString error_message READ get_error_message NOTIFY error_message_changed)
102 A2LConversionByThreshold = 1,
103 A2LConversionBySchmittTrigger = 2
116 static const QColor AnalogSignalColors[8];
117 static const QColor LogicSignalColors[10];
133 shared_ptr<sigrok::Channel> channel()
const;
138 bool is_generated()
const;
143 bool enabled()
const;
149 void set_enabled(
bool value);
160 unsigned int index()
const;
167 void set_index(
unsigned int index);
175 unsigned int logic_bit_index()
const;
190 QString name()
const;
195 QString internal_name()
const;
201 void set_internal_name(QString internal_name);
207 QString display_name()
const;
212 virtual void set_name(QString name);
217 QColor color()
const;
222 virtual void set_color(QColor color);
227 QColor bgcolor()
const;
232 virtual QString get_error_message()
const;
237 void set_data(shared_ptr<pv::data::SignalData>
data);
242 void clear_sample_data();
247 shared_ptr<pv::data::Analog> analog_data()
const;
252 shared_ptr<pv::data::Logic> logic_data()
const;
257 shared_ptr<pv::data::SignalData>
data()
const;
263 bool segment_is_complete(uint32_t segment_id)
const;
268 bool has_samples()
const;
273 virtual double get_samplerate()
const;
290 map<QString, QVariant> get_conversion_options()
const;
301 bool set_conversion_option(QString key, QVariant
value);
321 vector<double> get_conversion_thresholds(
322 const ConversionType t = NoConversion,
const bool always_custom=
false)
const;
330 vector<pair<QString, int> > get_conversion_presets()
const;
352 bool is_decode_signal()
const;
355 virtual void save_settings(
QSettings &settings)
const;
356 virtual void restore_settings(
QSettings &settings);
358 void start_conversion(
bool delayed_start=
false);
361 virtual void set_error_message(QString msg);
364 void stop_conversion();
366 bool conversion_is_a2l()
const;
368 uint8_t convert_a2l_threshold(
float threshold,
float value);
369 uint8_t convert_a2l_schmitt_trigger(
float lo_thr,
float hi_thr,
370 float value, uint8_t &state);
372 void convert_single_segment_range(shared_ptr<AnalogSegment> asegment,
373 shared_ptr<LogicSegment> lsegment, uint64_t start_sample, uint64_t end_sample);
374 void convert_single_segment(shared_ptr<AnalogSegment> asegment,
375 shared_ptr<LogicSegment> lsegment);
376 void conversion_thread_proc();
379 void enabled_changed(
const bool &
value);
380 void name_changed(
const QString &name);
381 void color_changed(
const QColor &color);
382 void error_message_changed(QString msg);
385 void samples_cleared();
386 void samples_added(uint64_t segment_id, uint64_t start_sample,
387 uint64_t end_sample);
389 void min_max_changed(
float min,
float max);
392 void on_samples_cleared();
395 uint64_t end_sample);
397 void on_input_segment_completed();
399 void on_min_max_changed(
float min,
float max);
401 void on_capture_state_changed(
int state);
403 void on_delayed_conversion_start();
409 shared_ptr<pv::data::SignalData>
data_;
434 #endif // PULSEVIEW_PV_DATA_SIGNALBASE_HPP
QTimer delayed_conversion_starter_
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t t(t+t)") define_sfop3(16
shared_ptr< pv::data::SignalData > converted_data_
std::shared_ptr< pv::data::Segment > SharedPtrToSegment
shared_ptr< pv::data::SignalData > data_
static const uint64_t ConversionBlockSize
T value(details::expression_node< T > *n)
ChannelType channel_type_
T max(const T v0, const T v1)
map< QString, QVariant > conversion_options_
mutex conversion_input_mutex_
Q_DECLARE_METATYPE(shared_ptr< pv::data::SignalBase >)
T min(const T v0, const T v1)
std::thread conversion_thread_
atomic< bool > conversion_interrupt_
Protocol Decoder channel using libsigrokdecode.
static const uint32_t ConversionDelay
shared_ptr< sigrok::Channel > channel_
static const int ColorBGAlpha
condition_variable conversion_input_cond_
deque< shared_ptr< SignalBase > > signals_
ConversionType conversion_type_