From: Soeren Apel <[email protected]>
Bug #285 is about showing the version/serial_num/conn_id information
in the dropdown box only when there is a need to do so. This patch
introduces the required logic.
---
pv/devicemanager.cpp | 28 ++++++++++++++++++----------
1 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/pv/devicemanager.cpp b/pv/devicemanager.cpp
index c06fd79..0fefe06 100644
--- a/pv/devicemanager.cpp
+++ b/pv/devicemanager.cpp
@@ -174,6 +174,7 @@ const shared_ptr<HardwareDevice>
DeviceManager::find_device_from_info(
string DeviceManager::device_description(shared_ptr<Device> device)
{
auto session_device = dynamic_pointer_cast<SessionDevice>(device);
+ auto hardware_device = dynamic_pointer_cast<HardwareDevice>(device);
if (session_device)
return boost::filesystem::path(
@@ -181,23 +182,30 @@ string
DeviceManager::device_description(shared_ptr<Device> device)
ostringstream s;
- vector<string> parts = {device->vendor(), device->model(),
- device->version(), device->serial_number()};
+ int device_count = 1;
- for (size_t i = 0; i < parts.size(); i++)
- {
- if (parts[i].length() > 0)
- {
+ if (hardware_device)
+ device_count = hardware_device->driver()->device_count();
+
+ vector<string> parts = {device->vendor(), device->model()};
+
+ if (device_count > 1) {
+ parts.push_back(device->version());
+ parts.push_back(device->serial_number());
+
+ if (device->serial_number().length() == 0 &&
+ device->connection_id().length() > 0)
+ parts.push_back("("+device->connection_id()+")");
+ }
+
+ for (size_t i = 0; i < parts.size(); i++) {
+ if (parts[i].length() > 0) {
if (i != 0)
s << " ";
s << parts[i];
}
}
- if (device->serial_number().length() == 0 &&
- device->connection_id().length() > 0)
- s << " " << device->connection_id();
-
return s.str();
}
--
1.7.8.6
------------------------------------------------------------------------------
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel