~SigSession();
- std::shared_ptr<sigrok::Device> get_device() const;
+ DeviceManager& device_manager();
+
+ const DeviceManager& device_manager() const;
+
+ const std::shared_ptr<sigrok::Session>& session() const;
+
+ std::shared_ptr<sigrok::Device> device() const;
/**
* Sets device instance that will be used in the next capture session.
std::set< std::shared_ptr<data::SignalData> > get_data() const;
- std::vector< std::shared_ptr<view::Signal> >
- get_signals() const;
+ std::mutex& signals_mutex() const;
+
+ const std::vector< std::shared_ptr<view::Signal> >& signals() const;
#ifdef ENABLE_DECODE
bool add_decoder(srd_decoder *const dec);
private:
DeviceManager &_device_manager;
+ std::shared_ptr<sigrok::Session> _session;
/**
* The device instance that will be used in the next capture session.
void data_received();
void frame_ended();
-
-public:
- // Hack. The libsigrok API now allows for multiple sessions. However,
- // sigrok::Session calls are scattered around the PV architecture and a
- // single SigSession object is being used across multiple sequential
- // sessions. This is a mess. For now just keep a single sigrok::Session
- // pointer here which we can use for all those scattered calls.
- static std::shared_ptr<sigrok::Session> _sr_session;
};
} // namespace pv