X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevices%2Fdevice.cpp;h=ec4318b4632989dac05641839742f7fd5ff3080d;hp=004749c9462f5bee93bd983901151737d5ea3337;hb=efdec55aec1a137460fa362a381ed1904182bfed;hpb=da30ecb7e72bd2547e524258efa5ec642988b70b diff --git a/pv/devices/device.cpp b/pv/devices/device.cpp index 004749c..ec4318b 100644 --- a/pv/devices/device.cpp +++ b/pv/devices/device.cpp @@ -14,8 +14,7 @@ * 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 . */ #include @@ -24,32 +23,73 @@ #include "device.hpp" +using std::map; +using std::set; + +using sigrok::ConfigKey; +using sigrok::Capability; +using sigrok::Error; + +using Glib::VariantBase; +using Glib::Variant; + namespace pv { namespace devices { -Device::Device() { +Device::Device() +{ } -Device::~Device() { +Device::~Device() +{ if (session_) session_->remove_datafeed_callbacks(); } -std::shared_ptr Device::session() const { +std::shared_ptr Device::session() const +{ return session_; } -std::shared_ptr Device::device() const { +std::shared_ptr Device::device() const +{ return device_; } -void Device::run() { +template +uint64_t Device::read_config(const sigrok::ConfigKey*, + const uint64_t); + +template +T Device::read_config(const ConfigKey *key, const T default_value) +{ + assert(key); + + if (!device_) + return default_value; + + if (!device_->config_check(key, Capability::GET)) + return default_value; + + return VariantBase::cast_dynamic>( + device_->config_get(ConfigKey::SAMPLERATE)).get(); +} + +void Device::start() +{ + assert(session_); + session_->start(); +} + +void Device::run() +{ assert(device_); assert(session_); session_->run(); } -void Device::stop() { +void Device::stop() +{ assert(session_); session_->stop(); }