]> sigrok.org Git - pulseview.git/blobdiff - pv/devices/device.hpp
Use the "default" keyword.
[pulseview.git] / pv / devices / device.hpp
index 529fdd5b33c42e0bc52fc42bb1e49a5f72559c38..b4518fbee97091f1365c5589603f7ae6f251cf3f 100644 (file)
  * 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 <http://www.gnu.org/licenses/>.
  */
 
 #ifndef PULSEVIEW_PV_DEVICES_DEVICE_HPP
 #define PULSEVIEW_PV_DEVICES_DEVICE_HPP
 
 #include <memory>
-
+#include <string>
 
 namespace sigrok {
+class ConfigKey;
 class Device;
 class Session;
 } // namespace sigrok
 
 namespace pv {
+
+class DeviceManager;
+
 namespace devices {
 
 class Device
 {
 protected:
-       Device();
+       Device() = default;
 
 public:
        virtual ~Device();
@@ -44,7 +47,27 @@ public:
 
        std::shared_ptr<sigrok::Device> device() const;
 
-       virtual void create() = 0;
+       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();
 
        virtual void run();