X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;ds=sidebyside;f=pv%2Fsession.hpp;h=bd403605eae33e80b120894419aa6359495f76de;hb=87a97d8aa169936ec2dcd229df88b8c5b4a1411c;hp=a4fc352d1969fd527951820bbf75e37f8b2b991c;hpb=bb7dd726eb7159ddd80d94ede791f2e2a9eaef0f;p=pulseview.git
diff --git a/pv/session.hpp b/pv/session.hpp
index a4fc352..bd40360 100644
--- a/pv/session.hpp
+++ b/pv/session.hpp
@@ -14,8 +14,7 @@
* 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
+ * along with this program; if not, see .
*/
#ifndef PULSEVIEW_PV_SESSION_HPP
@@ -38,9 +37,11 @@
#include
#include
+#include
#include
#include "util.hpp"
+#include "views/viewbase.hpp"
struct srd_decoder;
struct srd_channel;
@@ -49,8 +50,10 @@ namespace sigrok {
class Analog;
class Channel;
class Device;
+class InputFormat;
class Logic;
class Meta;
+class OutputFormat;
class Packet;
class Session;
}
@@ -72,8 +75,12 @@ namespace devices {
class Device;
}
-namespace view {
-class View;
+namespace toolbars {
+class MainBar;
+}
+
+namespace views {
+class ViewBase;
}
class Session : public QObject
@@ -88,7 +95,7 @@ public:
};
public:
- Session(DeviceManager &device_manager);
+ Session(DeviceManager &device_manager, QString name);
~Session();
@@ -100,6 +107,32 @@ public:
std::shared_ptr device() const;
+ QString name() const;
+
+ void set_name(QString name);
+
+ const std::list< std::shared_ptr > views() const;
+
+ std::shared_ptr main_view() const;
+
+ std::shared_ptr main_bar() const;
+
+ void set_main_bar(std::shared_ptr main_bar);
+
+ /**
+ * Indicates whether the captured data was saved to disk already or not
+ */
+ bool data_saved() const;
+
+ void save_settings(QSettings &settings) const;
+
+ void restore_settings(QSettings &settings);
+
+ /**
+ * Attempts to set device instance, may fall back to demo if needed
+ */
+ void select_device(std::shared_ptr device);
+
/**
* Sets device instance that will be used in the next capture session.
*/
@@ -107,6 +140,14 @@ public:
void set_default_device();
+ void load_init_file(const std::string &file_name,
+ const std::string &format);
+
+ void load_file(QString file_name,
+ std::shared_ptr format = nullptr,
+ const std::map &options =
+ std::map());
+
capture_state get_capture_state() const;
void start_capture(std::function error_handler);
@@ -115,9 +156,11 @@ public:
double get_samplerate() const;
- void register_view(std::shared_ptr view);
+ void register_view(std::shared_ptr view);
+
+ void deregister_view(std::shared_ptr view);
- void deregister_view(std::shared_ptr view);
+ bool has_view(std::shared_ptr view);
const std::unordered_set< std::shared_ptr >
signalbases() const;
@@ -139,6 +182,8 @@ private:
private:
void sample_thread_proc(std::function error_handler);
+ void free_unused_memory();
+
void feed_in_header();
void feed_in_meta(std::shared_ptr meta);
@@ -157,13 +202,16 @@ private:
private:
DeviceManager &device_manager_;
std::shared_ptr device_;
+ QString default_name_, name_;
+
+ std::list< std::shared_ptr > views_;
+ std::shared_ptr main_view_;
- std::unordered_set< std::shared_ptr > views_;
+ std::shared_ptr main_bar_;
mutable std::mutex sampling_mutex_; //!< Protects access to capture_state_.
capture_state capture_state_;
-
std::unordered_set< std::shared_ptr > signalbases_;
std::unordered_set< std::shared_ptr > all_signal_data_;
@@ -177,13 +225,16 @@ private:
std::thread sampling_thread_;
bool out_of_memory_;
+ bool data_saved_;
Q_SIGNALS:
void capture_state_changed(int state);
- void device_selected();
+ void device_changed();
void signals_changed();
+ void name_changed();
+
void trigger_event(util::Timestamp location);
void frame_began();
@@ -191,6 +242,12 @@ Q_SIGNALS:
void data_received();
void frame_ended();
+
+ void add_view(const QString &title, views::ViewType type,
+ Session *session);
+
+public Q_SLOTS:
+ void on_data_saved();
};
} // namespace pv