tool/CommandPdos.cpp
changeset 1151 1fc1535dec29
parent 1144 7dbfdd61812c
child 1157 04d1c950cf9d
--- a/tool/CommandPdos.cpp	Fri Jul 25 14:14:47 2008 +0000
+++ b/tool/CommandPdos.cpp	Fri Jul 25 14:19:29 2008 +0000
@@ -67,16 +67,16 @@
 
 void CommandPdos::execute(MasterDevice &m, const StringVector &args)
 {
+    SlaveList slaves;
+    SlaveList::const_iterator si;
+    bool showHeader;
+    
     m.open(MasterDevice::Read);
+    slaves = selectedSlaves(m);
+    showHeader = slaves.size() > 1;
 
-    if (slavePosition == -1) {
-        unsigned int numSlaves = m.slaveCount(), i;
-
-        for (i = 0; i < numSlaves; i++) {
-            listSlavePdos(m, i, true);
-        }
-    } else {
-        listSlavePdos(m, slavePosition, false);
+    for (si = slaves.begin(); si != slaves.end(); si++) {
+        listSlavePdos(m, *si, showHeader);
     }
 }
 
@@ -84,23 +84,20 @@
 
 void CommandPdos::listSlavePdos(
 		MasterDevice &m,
-		uint16_t slavePosition,
-		bool withHeader
+        const ec_ioctl_slave_t &slave,
+		bool showHeader
 		)
 {
-    ec_ioctl_slave_t slave;
     ec_ioctl_slave_sync_t sync;
     ec_ioctl_slave_sync_pdo_t pdo;
     ec_ioctl_slave_sync_pdo_entry_t entry;
     unsigned int i, j, k;
     
-    m.getSlave(&slave, slavePosition);
-
-    if (withHeader)
-        cout << "=== Slave " << slavePosition << " ===" << endl;
+    if (showHeader)
+        cout << "=== Slave " << slave.position << " ===" << endl;
 
     for (i = 0; i < slave.sync_count; i++) {
-        m.getSync(&sync, slavePosition, i);
+        m.getSync(&sync, slave.position, i);
 
         cout << "SM" << i << ":"
             << " PhysAddr 0x"
@@ -115,7 +112,7 @@
             << endl;
 
         for (j = 0; j < sync.pdo_count; j++) {
-            m.getPdo(&pdo, slavePosition, i, j);
+            m.getPdo(&pdo, slave.position, i, j);
 
             cout << "  " << (sync.control_register & 0x04 ? "R" : "T")
                 << "xPdo 0x"
@@ -127,7 +124,7 @@
                 continue;
 
             for (k = 0; k < pdo.entry_count; k++) {
-                m.getPdoEntry(&entry, slavePosition, i, j, k);
+                m.getPdoEntry(&entry, slave.position, i, j, k);
 
                 cout << "    Pdo entry 0x"
                     << hex << setfill('0')