X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevice%2Fdevice.cpp;h=546ce391869f81c52a86116326e034972ebb2df2;hp=4f9a7799539b5e125b01e0a1591ac8c165da7414;hb=87b79835014a386fb51b52bc993dbb693bd27197;hpb=4871ed92f2d9e6e514223383ba16e6ad78c81161 diff --git a/pv/device/device.cpp b/pv/device/device.cpp index 4f9a7799..546ce391 100644 --- a/pv/device/device.cpp +++ b/pv/device/device.cpp @@ -18,12 +18,16 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include #include #include "device.h" +using std::list; +using std::make_pair; +using std::map; using std::ostringstream; using std::string; @@ -45,11 +49,11 @@ void Device::use(SigSession *owner) throw(QString) { DevInst::use(owner); - sr_session_new(); + sr_session_new(&SigSession::_sr_session); assert(_sdi); sr_dev_open(_sdi); - if (sr_session_dev_add(_sdi) != SR_OK) + if (sr_session_dev_add(SigSession::_sr_session, _sdi) != SR_OK) throw QString(tr("Failed to use device.")); } @@ -57,7 +61,7 @@ void Device::release() { if (_owner) { DevInst::release(); - sr_session_destroy(); + sr_session_destroy(SigSession::_sr_session); } sr_dev_close(_sdi); @@ -69,35 +73,50 @@ std::string Device::format_device_title() const assert(_sdi); - if (_sdi->vendor && _sdi->vendor[0]) { - s << _sdi->vendor; - if ((_sdi->model && _sdi->model[0]) || - (_sdi->version && _sdi->version[0])) - s << ' '; - } + if (_sdi->vendor && _sdi->vendor[0]) + s << _sdi->vendor << " "; - if (_sdi->model && _sdi->model[0]) { - s << _sdi->model; - if (_sdi->version && _sdi->version[0]) - s << ' '; - } + if (_sdi->model && _sdi->model[0]) + s << _sdi->model << " "; if (_sdi->version && _sdi->version[0]) - s << _sdi->version; + s << _sdi->version << " "; + + // Show connection string only if no serial number is present. + if (_sdi->serial_num && _sdi->serial_num[0]) + s << "(" << _sdi->serial_num << ") "; + else if (_sdi->connection_id && _sdi->connection_id[0]) + s << "[" << _sdi->connection_id << "] "; + + // Remove trailing space. + s.seekp(-1, std::ios_base::end); + s << std::ends; return s.str(); } -bool Device::is_trigger_enabled() const +map Device::get_device_info() const { + map result; + assert(_sdi); - for (const GSList *l = _sdi->channels; l; l = l->next) { - const sr_channel *const p = (const sr_channel *)l->data; - assert(p); - if (p->trigger && p->trigger[0] != '\0') - return true; - } - return false; + + if (_sdi->vendor && _sdi->vendor[0]) + result.insert(make_pair("vendor", _sdi->vendor)); + + if (_sdi->model && _sdi->model[0]) + result.insert(make_pair("model", _sdi->model)); + + if (_sdi->version && _sdi->version[0]) + result.insert(make_pair("version", _sdi->version)); + + if (_sdi->serial_num && _sdi->serial_num[0]) + result.insert(make_pair("serial_num", _sdi->serial_num)); + + if (_sdi->connection_id && _sdi->connection_id[0]) + result.insert(make_pair("connection_id", _sdi->connection_id)); + + return result; } } // device