X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevices%2Fhardwaredevice.cpp;fp=pv%2Fdevices%2Fhardwaredevice.cpp;h=4fa27f6dd7521e8b8a82433c9b5c940bc4bea435;hp=0000000000000000000000000000000000000000;hb=da30ecb7e72bd2547e524258efa5ec642988b70b;hpb=da5e6727a632752d19f975d84ea76f1683cd656f diff --git a/pv/devices/hardwaredevice.cpp b/pv/devices/hardwaredevice.cpp new file mode 100644 index 00000000..4fa27f6d --- /dev/null +++ b/pv/devices/hardwaredevice.cpp @@ -0,0 +1,63 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2015 Joel Holdsworth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * 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 + */ + +#include + +#include + +#include "hardwaredevice.hpp" + +using std::shared_ptr; +using std::static_pointer_cast; + +namespace pv { +namespace devices { + +HardwareDevice::HardwareDevice(const std::shared_ptr &context, + std::shared_ptr device) : + context_(context) { + device_ = device; +} + +HardwareDevice::~HardwareDevice() { + device_->close(); + if (session_) + session_->remove_devices(); +} + +shared_ptr HardwareDevice::hardware_device() const { + return static_pointer_cast(device_); +} + +void HardwareDevice::create() { + // Open the device + try { + device_->open(); + } catch(const sigrok::Error &e) { + throw QString(e.what()); + } + + // Set up the session + session_ = context_->create_session(); + session_->add_device(device_); +} + +} // namespace devices +} // namespace pv