20 #ifndef PULSEVIEW_PV_SESSION_HPP 21 #define PULSEVIEW_PV_SESSION_HPP 25 #include <condition_variable> 38 #include <glibmm/datetime.h> 43 #include <QElapsedTimer> 46 #include <gstreamermm.h> 47 #include <libsigrokflow/libsigrokflow.hpp> 58 using std::recursive_mutex;
59 using std::shared_ptr;
61 using std::unordered_set;
139 shared_ptr<sigrok::Session> session()
const;
141 shared_ptr<devices::Device> device()
const;
143 QString name()
const;
144 void set_name(QString name);
146 QString save_path()
const;
147 void set_save_path(QString path);
149 const vector< shared_ptr<views::ViewBase> > views()
const;
151 shared_ptr<views::ViewBase> main_view()
const;
152 shared_ptr<pv::toolbars::MainBar> main_bar()
const;
153 void set_main_bar(shared_ptr<pv::toolbars::MainBar> main_bar);
158 bool data_saved()
const;
160 void save_setup(
QSettings &settings)
const;
161 void save_settings(
QSettings &settings)
const;
163 void restore_settings(
QSettings &settings);
168 void select_device(shared_ptr<devices::Device> device);
173 void set_device(shared_ptr<devices::Device> device);
174 void set_default_device();
175 bool using_file_device()
const;
177 void load_init_file(
const string &file_name,
const string &
format,
178 const string &setup_file_name);
180 void load_file(QString file_name, QString setup_file_name = QString(),
181 shared_ptr<sigrok::InputFormat>
format =
nullptr,
182 const map<string, Glib::VariantBase> &
options =
183 map<string, Glib::VariantBase>());
186 void start_capture(
function<
void (
const QString)> error_handler);
189 double get_samplerate()
const;
190 Glib::DateTime get_acquisition_start_time()
const;
192 uint32_t get_highest_segment_id()
const;
193 uint64_t get_segment_sample_count(uint32_t segment_id)
const;
195 vector<util::Timestamp> get_triggers(uint32_t segment_id)
const;
197 void register_view(shared_ptr<views::ViewBase> view);
198 void deregister_view(shared_ptr<views::ViewBase> view);
199 bool has_view(shared_ptr<views::ViewBase> view);
201 const vector< shared_ptr<data::SignalBase> > signalbases()
const;
205 void add_generated_signal(shared_ptr<data::SignalBase> signal);
206 void remove_generated_signal(shared_ptr<data::SignalBase> signal);
209 shared_ptr<data::DecodeSignal> add_decode_signal();
211 void remove_decode_signal(shared_ptr<data::DecodeSignal> signal);
214 bool all_segments_complete(uint32_t segment_id)
const;
221 void update_signals();
223 shared_ptr<data::SignalBase> signalbase_from_channel(
224 shared_ptr<sigrok::Channel> channel)
const;
226 static map<string, Glib::VariantBase> input_format_options(
227 vector<string> user_spec,
228 map<
string, shared_ptr<Option>> fmt_opts);
230 void sample_thread_proc(
function<
void (
const QString)> error_handler);
232 void free_unused_memory();
234 void signal_new_segment();
235 void signal_segment_completed();
238 bool on_gst_bus_message(
const Glib::RefPtr<Gst::Bus>& bus,
const Glib::RefPtr<Gst::Message>& message);
240 Gst::FlowReturn on_gst_new_sample();
243 void feed_in_header();
244 void feed_in_meta(shared_ptr<sigrok::Meta> meta);
245 void feed_in_trigger();
246 void feed_in_frame_begin();
247 void feed_in_frame_end();
248 void feed_in_logic(shared_ptr<sigrok::Logic> logic);
249 void feed_in_analog(shared_ptr<sigrok::Analog> analog);
251 void data_feed_in(shared_ptr<sigrok::Device> device,
252 shared_ptr<sigrok::Packet> packet);
255 void capture_state_changed(
int state);
256 void device_changed();
258 void signals_changed();
264 void new_segment(
int new_segment_id);
265 void segment_completed(
int segment_id);
267 void data_received();
270 void session_error_raised(
const QString text,
const QString info_text);
273 void on_data_saved();
276 void on_new_decoders_selected(vector<const srd_decoder*> decoders);
286 vector< shared_ptr<views::ViewBase> >
views_;
306 map< shared_ptr<sigrok::Channel>, shared_ptr<data::AnalogSegment> >
323 RefPtr<Pipeline> pipeline_;
324 RefPtr<Element> source_;
325 RefPtr<AppSink> sink_;
327 mutable mutex pipeline_done_mutex_;
328 mutable condition_variable pipeline_done_cond_;
329 atomic<bool> pipeline_done_interrupt_;
335 #endif // PULSEVIEW_PV_SESSION_HPP shared_ptr< devices::Device > device_
libsigrok allows users to import and export data from files in various formats some of them as generic as others very specific For a list and make sure to check not so common and outright exotic ways to represent data and sigrok tries to suit as many needs as it can To see which formats your version of PulseView just click on the small arrow next to the _Open_ PulseView will ask for the file name to open Once you picked the you may be asked to specify the details of the format
vector< shared_ptr< data::SignalBase > > signalbases_
vector< std::pair< uint32_t, util::Timestamp > > trigger_list_
trigger_list_ contains pairs of <segment_id, timestamp> values
std::thread sampling_thread_
unordered_set< shared_ptr< data::SignalData > > all_signal_data_
map< uint8_t, uint32_t > next_index_list_
MetadataObjManager metadata_obj_manager_
static shared_ptr< sigrok::Context > sr_context
shared_ptr< data::LogicSegment > cur_logic_segment_
Mac OS X or Android For some we provide binary for others we provide installers and for others we provide AppImage containers that you can run without the need to install anything Check the the usual way to install PulseView is to install the packages provided by your distro s package manager sometimes only outdated packages are made available to you In that you have two options
shared_ptr< pv::toolbars::MainBar > main_bar_
int32_t highest_segment_id_
Glib::DateTime acq_start_time_
map< shared_ptr< sigrok::Channel >, shared_ptr< data::AnalogSegment > > cur_analog_segments_
shared_ptr< data::Logic > logic_data_
recursive_mutex data_mutex_
DeviceManager & device_manager_
deque< data::SignalGroup * > signal_groups_
shared_ptr< pv::views::ViewBase > main_view_
vector< shared_ptr< views::ViewBase > > views_
boost::multiprecision::number< boost::multiprecision::cpp_dec_float< 24 >, boost::multiprecision::et_off > Timestamp
Timestamp type providing yoctosecond resolution.
capture_state capture_state_
vector< uint64_t > segment_sample_count_
mutex sampling_mutex_
Protects access to capture_state_.