X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevices%2Fdevice.hpp;h=ceca0777118b106a105ae00b499eb6e60b9c380a;hp=529fdd5b33c42e0bc52fc42bb1e49a5f72559c38;hb=5e6967cb2bcacbfb9e5b627becb6752621949998;hpb=da30ecb7e72bd2547e524258efa5ec642988b70b diff --git a/pv/devices/device.hpp b/pv/devices/device.hpp index 529fdd5b..ceca0777 100644 --- a/pv/devices/device.hpp +++ b/pv/devices/device.hpp @@ -14,22 +14,25 @@ * 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 #define PULSEVIEW_PV_DEVICES_DEVICE_HPP #include - +#include namespace sigrok { +class ConfigKey; class Device; class Session; } // namespace sigrok namespace pv { + +class DeviceManager; + namespace devices { class Device @@ -44,7 +47,27 @@ public: std::shared_ptr device() const; - virtual void create() = 0; + 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; + + /** + * 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( + const DeviceManager &device_manager) const = 0; + + virtual void open() = 0; + + virtual void close() = 0; + + virtual void start(); virtual void run();