tools/Master.cpp
changeset 1068 df1c8e4f0577
parent 1067 54744527d7c6
child 1069 ab0c21d9ab2b
equal deleted inserted replaced
1067:54744527d7c6 1068:df1c8e4f0577
   140         err << "'alias' takes exactly one argument!";
   140         err << "'alias' takes exactly one argument!";
   141         throw MasterException(err.str());
   141         throw MasterException(err.str());
   142     }
   142     }
   143 
   143 
   144     strAlias << commandArgs[0];
   144     strAlias << commandArgs[0];
   145     strAlias >> hex >> number;
   145     strAlias >> number;
   146     if (strAlias.fail() || number < 0x0000 || number > 0xffff) {
   146     if (strAlias.fail() || number < 0x0000 || number > 0xffff) {
   147         err << "Invalid alias '" << commandArgs[0] << "'!";
   147         err << "Invalid alias '" << commandArgs[0] << "'!";
   148         throw MasterException(err.str());
   148         throw MasterException(err.str());
   149     }
   149     }
   150     alias = number;
   150     alias = number;
   151 
   151 
   152     if (slavePosition == -1) {
   152     if (slavePosition == -1) {
   153         unsigned int numSlaves, i;
   153         unsigned int numSlaves, i;
   154 
   154 
   155         if (!force) {
   155         if (!force) {
   156             err << "This will write the alias addresses of all slaves to 0x"
   156             err << "This will write the alias addresses of all slaves to "
   157                 << hex << setfill('0') << setw(4) << alias << "! "
   157                 << alias << "! Please specify --force to proceed.";
   158                 << "Please specify --force to proceed.";
       
   159             throw MasterException(err.str());
   158             throw MasterException(err.str());
   160         }
   159         }
   161 
   160 
   162         open(ReadWrite);
   161         open(ReadWrite);
   163         numSlaves = slaveCount();
   162         numSlaves = slaveCount();
   976     getMaster(&master);
   975     getMaster(&master);
   977 
   976 
   978     for (i = 0; i < master.config_count; i++) {
   977     for (i = 0; i < master.config_count; i++) {
   979         getConfig(&config, i);
   978         getConfig(&config, i);
   980 
   979 
   981         cout << "Alias: 0x"
   980         cout << "Alias: "
   982             << hex << setfill('0') << setw(4) << config.alias << endl
   981             << dec << config.alias << endl
   983             << "Position: " << dec << config.position << endl
   982             << "Position: " << config.position << endl
   984             << "Vendor Id: 0x"
   983             << "Vendor Id: 0x"
   985             << hex << setw(8) << config.vendor_id << endl
   984             << hex << setfill('0') << setw(8) << config.vendor_id << endl
   986             << "Product code: 0x"
   985             << "Product code: 0x"
   987             << hex << setw(8) << config.product_code << endl
   986             << hex << setw(8) << config.product_code << endl
   988             << "Attached: " << (config.attached ? "yes" : "no") << endl
   987             << "Attached: " << (config.attached ? "yes" : "no") << endl
   989             << "Operational: " << (config.operational ? "yes" : "no") << endl;
   988             << "Operational: " << (config.operational ? "yes" : "no") << endl;
   990 
   989 
  1304         cout << "=== Slave " << slavePosition << " ===" << endl;
  1303         cout << "=== Slave " << slavePosition << " ===" << endl;
  1305 
  1304 
  1306     for (i = 0; i < slave.sdo_count; i++) {
  1305     for (i = 0; i < slave.sdo_count; i++) {
  1307         getSdo(&sdo, slavePosition, i);
  1306         getSdo(&sdo, slavePosition, i);
  1308 
  1307 
  1309         cout << "Sdo "
  1308         cout << "Sdo 0x"
  1310             << hex << setfill('0') << setw(4) << sdo.sdo_index
  1309             << hex << setfill('0') << setw(4) << sdo.sdo_index
  1311             << ", \"" << sdo.name << "\"" << endl;
  1310             << ", \"" << sdo.name << "\"" << endl;
  1312 
  1311 
  1313         if (quiet)
  1312         if (quiet)
  1314             continue;
  1313             continue;
  1315 
  1314 
  1316         for (j = 0; j <= sdo.max_subindex; j++) {
  1315         for (j = 0; j <= sdo.max_subindex; j++) {
  1317             getSdoEntry(&entry, slavePosition, -i, j);
  1316             getSdoEntry(&entry, slavePosition, -i, j);
  1318 
  1317 
  1319             cout << "  " << hex << setfill('0')
  1318             cout << "  0x" << hex << setfill('0')
  1320                 << setw(4) << sdo.sdo_index << ":" 
  1319                 << setw(4) << sdo.sdo_index << ":" 
  1321                 << setw(2) << (unsigned int) entry.sdo_entry_subindex
  1320                 << setw(2) << (unsigned int) entry.sdo_entry_subindex
  1322                 << ", ";
  1321                 << ", ";
  1323 
  1322 
  1324             if ((d = findDataType(entry.data_type))) {
  1323             if ((d = findDataType(entry.data_type))) {
  1389             slaveInfo.flag = (slave.error_flag ? 'E' : '+');
  1388             slaveInfo.flag = (slave.error_flag ? 'E' : '+');
  1390 
  1389 
  1391             if (strlen(slave.name)) {
  1390             if (strlen(slave.name)) {
  1392                 slaveInfo.name = slave.name;
  1391                 slaveInfo.name = slave.name;
  1393             } else {
  1392             } else {
  1394                 str << hex << setfill('0')
  1393                 str << "0x" << hex << setfill('0')
  1395                     << setw(8) << slave.vendor_id << ":"
  1394                     << setw(8) << slave.vendor_id << ":0x"
  1396                     << setw(8) << slave.product_code;
  1395                     << setw(8) << slave.product_code;
  1397                 slaveInfo.name = str.str();
  1396                 slaveInfo.name = str.str();
  1398                 str.str("");
  1397                 str.str("");
  1399             }
  1398             }
  1400 
  1399 
  1435     list<string>::const_iterator protoIter;
  1434     list<string>::const_iterator protoIter;
  1436     
  1435     
  1437     getSlave(&slave, slavePosition);
  1436     getSlave(&slave, slavePosition);
  1438         
  1437         
  1439     cout << "Slave " << dec << slavePosition << endl
  1438     cout << "Slave " << dec << slavePosition << endl
  1440         << "Alias: 0x" << hex << setfill('0') << setw(4) << slave.alias << endl
  1439         << "Alias: " << slave.alias << endl
  1441         << "State: " << slaveState(slave.state) << endl
  1440         << "State: " << slaveState(slave.state) << endl
  1442         << "Flag: " << (slave.error_flag ? 'E' : '+') << endl
  1441         << "Flag: " << (slave.error_flag ? 'E' : '+') << endl
  1443         << "Identity:" << endl
  1442         << "Identity:" << endl
  1444         << "  Vendor Id: 0x"
  1443         << "  Vendor Id: 0x"
  1445         << hex << setfill('0') << setw(8) << slave.vendor_id << endl
  1444         << hex << setfill('0') << setw(8) << slave.vendor_id << endl