X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdevice%2Fdevinst.cpp;h=0301063440200d4b693105623f329fbce303b9f6;hb=87b79835014a386fb51b52bc993dbb693bd27197;hp=44c1a83154f1f5b046290353a0ddbc4beb36b2da;hpb=29efe92a807a93572b44369d2703f572778ebb15;p=pulseview.git diff --git a/pv/device/devinst.cpp b/pv/device/devinst.cpp index 44c1a83..0301063 100644 --- a/pv/device/devinst.cpp +++ b/pv/device/devinst.cpp @@ -36,12 +36,11 @@ DevInst::DevInst() : { } -void DevInst::use(SigSession *owner) +void DevInst::use(SigSession *owner) throw(QString) { assert(owner); assert(!_owner); _owner = owner; - sr_dev_open(dev_inst()); } void DevInst::release() @@ -49,7 +48,6 @@ void DevInst::release() if (_owner) { _owner->release_device(this); _owner = NULL; - sr_dev_close(dev_inst()); } } @@ -58,9 +56,10 @@ SigSession* DevInst::owner() const return _owner; } -GVariant* DevInst::get_config(const sr_probe_group *group, int key) +GVariant* DevInst::get_config(const sr_channel_group *group, int key) { GVariant *data = NULL; + assert(_owner); sr_dev_inst *const sdi = dev_inst(); assert(sdi); if (sr_config_get(sdi->driver, sdi, group, key, &data) != SR_OK) @@ -68,8 +67,9 @@ GVariant* DevInst::get_config(const sr_probe_group *group, int key) return data; } -bool DevInst::set_config(const sr_probe_group *group, int key, GVariant *data) +bool DevInst::set_config(const sr_channel_group *group, int key, GVariant *data) { + assert(_owner); sr_dev_inst *const sdi = dev_inst(); assert(sdi); if(sr_config_set(sdi, group, key, data) == SR_OK) { @@ -79,9 +79,10 @@ bool DevInst::set_config(const sr_probe_group *group, int key, GVariant *data) return false; } -GVariant* DevInst::list_config(const sr_probe_group *group, int key) +GVariant* DevInst::list_config(const sr_channel_group *group, int key) { GVariant *data = NULL; + assert(_owner); sr_dev_inst *const sdi = dev_inst(); assert(sdi); if (sr_config_list(sdi->driver, sdi, group, key, &data) != SR_OK) @@ -89,18 +90,19 @@ GVariant* DevInst::list_config(const sr_probe_group *group, int key) return data; } -void DevInst::enable_probe(const sr_probe *probe, bool enable) +void DevInst::enable_channel(const sr_channel *channel, bool enable) { + assert(_owner); sr_dev_inst *const sdi = dev_inst(); assert(sdi); - for (const GSList *p = sdi->probes; p; p = p->next) - if (probe == p->data) { - const_cast(probe)->enabled = enable; + for (const GSList *p = sdi->channels; p; p = p->next) + if (channel == p->data) { + const_cast(channel)->enabled = enable; config_changed(); return; } - // Probe was not found in the device + // Channel was not found in the device assert(0); } @@ -117,5 +119,21 @@ uint64_t DevInst::get_sample_limit() return sample_limit; } +bool DevInst::is_trigger_enabled() const +{ + return false; +} + +void DevInst::start() +{ + if (sr_session_start(SigSession::_sr_session) != SR_OK) + throw tr("Failed to start session."); +} + +void DevInst::run() +{ + sr_session_run(SigSession::_sr_session); +} + } // device } // pv