X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevices%2Fdevice.hpp;h=fd78960c153f50917eb08fca0745e54186c104f2;hp=7e0b58ad065600bdc993751f343ff8eb348d4de1;hb=6e2a5b1d677a26a637465cd4d304e2bc52e14f36;hpb=b485408f20c39ae8d05372a5faffe15653c74705 diff --git a/pv/devices/device.hpp b/pv/devices/device.hpp index 7e0b58ad..fd78960c 100644 --- a/pv/devices/device.hpp +++ b/pv/devices/device.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_DEVICES_DEVICE_HPP @@ -24,7 +23,11 @@ #include #include +using std::shared_ptr; +using std::string; + namespace sigrok { +class ConfigKey; class Device; class Session; } // namespace sigrok @@ -38,37 +41,44 @@ namespace devices { class Device { protected: - Device(); + Device() = default; public: virtual ~Device(); - std::shared_ptr session() const; + shared_ptr session() const; + + shared_ptr device() const; - std::shared_ptr device() const; + template + T read_config(const sigrok::ConfigKey *key, const T default_value = 0); /** * Builds the full name. It only contains all the fields. */ - virtual std::string full_name() const = 0; + virtual string full_name() const = 0; /** * Builds the display name. It only contains fields as required. * @param device_manager a reference to the device manager is needed * so that other similarly titled devices can be detected. */ - virtual std::string display_name( + virtual string display_name( const DeviceManager &device_manager) const = 0; - virtual void create() = 0; + virtual void open() = 0; + + virtual void close() = 0; + + virtual void start(); virtual void run(); virtual void stop(); protected: - std::shared_ptr session_; - std::shared_ptr device_; + shared_ptr session_; + shared_ptr device_; }; } // namespace devices