tool/CommandPdos.cpp
changeset 1826 ec6223c3b7ec
parent 1804 742607c464c4
child 1827 489be2180f71
equal deleted inserted replaced
1825:65781b048a47 1826:ec6223c3b7ec
    30 #include <iostream>
    30 #include <iostream>
    31 #include <iomanip>
    31 #include <iomanip>
    32 using namespace std;
    32 using namespace std;
    33 
    33 
    34 #include "CommandPdos.h"
    34 #include "CommandPdos.h"
       
    35 #include "MasterDevice.h"
    35 
    36 
    36 /*****************************************************************************/
    37 /*****************************************************************************/
    37 
    38 
    38 CommandPdos::CommandPdos():
    39 CommandPdos::CommandPdos():
    39     Command("pdos", "List Sync managers, PDO assignment and mapping.")
    40     Command("pdos", "List Sync managers, PDO assignment and mapping.")
    86     return str.str();
    87     return str.str();
    87 }
    88 }
    88 
    89 
    89 /****************************************************************************/
    90 /****************************************************************************/
    90 
    91 
    91 void CommandPdos::execute(MasterDevice &m, const StringVector &args)
    92 void CommandPdos::execute(const StringVector &args)
    92 {
    93 {
    93     SlaveList slaves;
    94     SlaveList slaves;
    94     SlaveList::const_iterator si;
    95     SlaveList::const_iterator si;
    95     bool showHeader;
    96     bool showHeader, multiMaster;
    96     
    97     
    97     if (args.size()) {
    98     if (args.size()) {
    98         stringstream err;
    99         stringstream err;
    99         err << "'" << getName() << "' takes no arguments!";
   100         err << "'" << getName() << "' takes no arguments!";
   100         throwInvalidUsageException(err);
   101         throwInvalidUsageException(err);
   101     }
   102     }
   102 
   103 
   103     m.open(MasterDevice::Read);
   104     multiMaster = getMasterIndices().size() > 1;
   104     slaves = selectedSlaves(m);
   105     MasterIndexList::const_iterator mi;
   105     showHeader = slaves.size() > 1;
   106     for (mi = getMasterIndices().begin();
       
   107             mi != getMasterIndices().end(); mi++) {
       
   108         MasterDevice m(*mi);
       
   109         m.open(MasterDevice::Read);
       
   110         slaves = selectedSlaves(m);
       
   111         showHeader = multiMaster || slaves.size() > 1;
   106 
   112 
   107     for (si = slaves.begin(); si != slaves.end(); si++) {
   113         for (si = slaves.begin(); si != slaves.end(); si++) {
   108         listSlavePdos(m, *si, showHeader);
   114             listSlavePdos(m, *si, showHeader);
       
   115         }
   109     }
   116     }
   110 }
   117 }
   111 
   118 
   112 /****************************************************************************/
   119 /****************************************************************************/
   113 
   120 
   121     ec_ioctl_slave_sync_pdo_t pdo;
   128     ec_ioctl_slave_sync_pdo_t pdo;
   122     ec_ioctl_slave_sync_pdo_entry_t entry;
   129     ec_ioctl_slave_sync_pdo_entry_t entry;
   123     unsigned int i, j, k;
   130     unsigned int i, j, k;
   124     
   131     
   125     if (showHeader)
   132     if (showHeader)
   126         cout << "=== Slave " << slave.position << " ===" << endl;
   133         cout << "=== Master " << m.getIndex()
       
   134             << ", Slave " << slave.position << " ===" << endl;
   127 
   135 
   128     for (i = 0; i < slave.sync_count; i++) {
   136     for (i = 0; i < slave.sync_count; i++) {
   129         m.getSync(&sync, slave.position, i);
   137         m.getSync(&sync, slave.position, i);
   130 
   138 
   131         cout << "SM" << i << ":"
   139         cout << "SM" << i << ":"