tool/CommandSdos.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 "CommandSdos.h"
    34 #include "CommandSdos.h"
       
    35 #include "MasterDevice.h"
    35 
    36 
    36 /*****************************************************************************/
    37 /*****************************************************************************/
    37 
    38 
    38 CommandSdos::CommandSdos():
    39 CommandSdos::CommandSdos():
    39     SdoCommand("sdos", "List SDO dictionaries.")
    40     SdoCommand("sdos", "List SDO dictionaries.")
    84     return str.str();
    85     return str.str();
    85 }
    86 }
    86 
    87 
    87 /****************************************************************************/
    88 /****************************************************************************/
    88 
    89 
    89 void CommandSdos::execute(MasterDevice &m, const StringVector &args)
    90 void CommandSdos::execute(const StringVector &args)
    90 {
    91 {
    91     SlaveList slaves;
    92     SlaveList slaves;
    92     SlaveList::const_iterator si;
    93     SlaveList::const_iterator si;
    93     bool showHeader;
    94     bool showHeader, multiMaster;
    94 
    95 
    95     if (args.size()) {
    96     if (args.size()) {
    96         stringstream err;
    97         stringstream err;
    97         err << "'" << getName() << "' takes no arguments!";
    98         err << "'" << getName() << "' takes no arguments!";
    98         throwInvalidUsageException(err);
    99         throwInvalidUsageException(err);
    99     }
   100     }
   100 
   101 
   101     m.open(MasterDevice::Read);
   102     multiMaster = getMasterIndices().size() > 1;
   102     slaves = selectedSlaves(m);
   103     MasterIndexList::const_iterator mi;
   103     showHeader = slaves.size() > 1;
   104     for (mi = getMasterIndices().begin();
       
   105             mi != getMasterIndices().end(); mi++) {
       
   106         MasterDevice m(*mi);
       
   107         m.open(MasterDevice::Read);
       
   108         slaves = selectedSlaves(m);
       
   109         showHeader = multiMaster || slaves.size() > 1;
   104 
   110 
   105     for (si = slaves.begin(); si != slaves.end(); si++) {
   111         for (si = slaves.begin(); si != slaves.end(); si++) {
   106         listSlaveSdos(m, *si, showHeader);
   112             listSlaveSdos(m, *si, showHeader);
       
   113         }
   107     }
   114     }
   108 }
   115 }
   109 
   116 
   110 /****************************************************************************/
   117 /****************************************************************************/
   111 
   118 
   119     ec_ioctl_slave_sdo_entry_t entry;
   126     ec_ioctl_slave_sdo_entry_t entry;
   120     unsigned int i, j;
   127     unsigned int i, j;
   121     const DataType *d;
   128     const DataType *d;
   122     
   129     
   123     if (showHeader)
   130     if (showHeader)
   124         cout << "=== Slave " << slave.position << " ===" << endl;
   131         cout << "=== Master " << m.getIndex()
       
   132             << ", Slave " << slave.position << " ===" << endl;
   125 
   133 
   126     for (i = 0; i < slave.sdo_count; i++) {
   134     for (i = 0; i < slave.sdo_count; i++) {
   127         m.getSdo(&sdo, slave.position, i);
   135         m.getSdo(&sdo, slave.position, i);
   128 
   136 
   129         cout << "SDO 0x"
   137         cout << "SDO 0x"