+ template<typename T>
+ 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();