X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevices%2Fhardwaredevice.cpp;fp=pv%2Fdevices%2Fhardwaredevice.cpp;h=d1161aa26669a614bc36fc52e4871bdc1fb68496;hp=b98b0e02f8aa9b2e43756af75835d8bae55723b4;hb=4d6c6ea3e6b069787c270d4911083dae05eae4c6;hpb=accd9c0506657c2444caef9aa3aa5de71a94b60a diff --git a/pv/devices/hardwaredevice.cpp b/pv/devices/hardwaredevice.cpp index b98b0e02..d1161aa2 100644 --- a/pv/devices/hardwaredevice.cpp +++ b/pv/devices/hardwaredevice.cpp @@ -49,11 +49,7 @@ HardwareDevice::HardwareDevice(const std::shared_ptr &context, } HardwareDevice::~HardwareDevice() { - if (device_open_) - device_->close(); - - if (session_) - session_->remove_devices(); + close(); } string HardwareDevice::full_name() const { @@ -99,8 +95,10 @@ string HardwareDevice::display_name( return join(parts, " "); } -void HardwareDevice::create() { - // Open the device +void HardwareDevice::open() { + if (device_open_) + close(); + try { device_->open(); } catch(const sigrok::Error &e) { @@ -114,5 +112,15 @@ void HardwareDevice::create() { session_->add_device(device_); } +void HardwareDevice::close() { + if (device_open_) + device_->close(); + + if (session_) + session_->remove_devices(); + + device_open_ = false; +} + } // namespace devices } // namespace pv