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 |