X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevice%2Fdevice.cpp;h=546ce391869f81c52a86116326e034972ebb2df2;hp=c6fc5bbe2fa037d0e221cabe3449302d0ccf38b9;hb=87b79835014a386fb51b52bc993dbb693bd27197;hpb=b1e8c93d824986328a34d1c36273cb534fd65307 diff --git a/pv/device/device.cpp b/pv/device/device.cpp index c6fc5bbe..546ce391 100644 --- a/pv/device/device.cpp +++ b/pv/device/device.cpp @@ -25,6 +25,9 @@ #include "device.h" +using std::list; +using std::make_pair; +using std::map; using std::ostringstream; using std::string; @@ -46,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.")); } @@ -58,7 +61,7 @@ void Device::release() { if (_owner) { DevInst::release(); - sr_session_destroy(); + sr_session_destroy(SigSession::_sr_session); } sr_dev_close(_sdi); @@ -70,24 +73,51 @@ 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(); } +map Device::get_device_info() const +{ + map result; + + assert(_sdi); + + 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 } // pv