mirror of
https://gitlab.com/etherlab.org/ethercat.git
synced 2026-02-05 19:39:50 +08:00
Improved multi-master capabilities of ethercat tool.
This commit is contained in:
3
TODO
3
TODO
@@ -28,6 +28,9 @@ Version 1.5.0:
|
||||
* Output hexadecimal values in 'ethercat xml'.
|
||||
* Add native drivers from 2.6.24 up to 2.6.31.
|
||||
* Reset al_states on link down.
|
||||
* Implement indent in 'ethercat ma'
|
||||
* Add master index to log messages.
|
||||
* Implement 0xXXXX:YY format for specifying SDOs.
|
||||
|
||||
Future issues:
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ void CommandCStruct::generateSlaveCStruct(
|
||||
}
|
||||
|
||||
cout
|
||||
<< "/* Slave " << slave.position;
|
||||
<< "/* Master " << m.getIndex() << ", Slave " << slave.position;
|
||||
if (strlen(slave.order)) {
|
||||
cout << ", \"" << slave.order << "\"";
|
||||
}
|
||||
|
||||
@@ -121,8 +121,8 @@ void CommandConfig::execute(const StringVector &args)
|
||||
m.open(MasterDevice::Read);
|
||||
configs = selectedConfigs(m);
|
||||
|
||||
if (doIndent) {
|
||||
cout << "Master" << dec << *mi << endl;
|
||||
if (configs.size() && doIndent) {
|
||||
cout << "Master" << dec << m.getIndex() << endl;
|
||||
}
|
||||
|
||||
if (getVerbosity() == Verbose) {
|
||||
|
||||
@@ -75,17 +75,16 @@ void CommandData::execute(const StringVector &args)
|
||||
throwInvalidUsageException(err);
|
||||
}
|
||||
|
||||
if (getMasterIndices().size() != 1) {
|
||||
stringstream err;
|
||||
err << getName() << " requires to select a single master!";
|
||||
throwInvalidUsageException(err);
|
||||
}
|
||||
MasterDevice m(getMasterIndices().front());
|
||||
m.open(MasterDevice::Read);
|
||||
domains = selectedDomains(m);
|
||||
MasterIndexList::const_iterator mi;
|
||||
for (mi = getMasterIndices().begin();
|
||||
mi != getMasterIndices().end(); mi++) {
|
||||
MasterDevice m(*mi);
|
||||
m.open(MasterDevice::Read);
|
||||
domains = selectedDomains(m);
|
||||
|
||||
for (di = domains.begin(); di != domains.end(); di++) {
|
||||
outputDomainData(m, *di);
|
||||
for (di = domains.begin(); di != domains.end(); di++) {
|
||||
outputDomainData(m, *di);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ void CommandDomains::execute(const StringVector &args)
|
||||
m.open(MasterDevice::Read);
|
||||
domains = selectedDomains(m);
|
||||
|
||||
if (doIndent) {
|
||||
if (domains.size() && doIndent) {
|
||||
cout << "Master" << dec << *mi << endl;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,14 +84,16 @@ void CommandEoe::execute(const StringVector &args)
|
||||
m.open(MasterDevice::Read);
|
||||
m.getMaster(&master);
|
||||
|
||||
if (doIndent) {
|
||||
cout << "Master" << dec << *mi << endl;
|
||||
}
|
||||
if (master.eoe_handler_count) {
|
||||
if (doIndent) {
|
||||
cout << "Master" << dec << *mi << endl;
|
||||
}
|
||||
|
||||
cout << indent << "Interface Slave State "
|
||||
<< "RxBytes RxRate "
|
||||
<< "TxBytes TxRate TxQueue"
|
||||
<< endl;
|
||||
cout << indent << "Interface Slave State "
|
||||
<< "RxBytes RxRate "
|
||||
<< "TxBytes TxRate TxQueue"
|
||||
<< endl;
|
||||
}
|
||||
|
||||
for (i = 0; i < master.eoe_handler_count; i++) {
|
||||
stringstream queue;
|
||||
|
||||
@@ -129,7 +129,7 @@ void CommandPdos::listSlavePdos(
|
||||
ec_ioctl_slave_sync_pdo_entry_t entry;
|
||||
unsigned int i, j, k;
|
||||
|
||||
if (showHeader)
|
||||
if (showHeader && slave.sync_count)
|
||||
cout << "=== Master " << m.getIndex()
|
||||
<< ", Slave " << slave.position << " ===" << endl;
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ void CommandSdos::listSlaveSdos(
|
||||
unsigned int i, j;
|
||||
const DataType *d;
|
||||
|
||||
if (showHeader)
|
||||
if (showHeader && slave.sdo_count)
|
||||
cout << "=== Master " << m.getIndex()
|
||||
<< ", Slave " << slave.position << " ===" << endl;
|
||||
|
||||
|
||||
@@ -125,10 +125,6 @@ void CommandSlaves::execute(const StringVector &args)
|
||||
m.open(MasterDevice::Read);
|
||||
slaves = selectedSlaves(m);
|
||||
|
||||
if (doIndent) {
|
||||
cout << "Master" << dec << *mi << endl;
|
||||
}
|
||||
|
||||
if (getVerbosity() == Verbose) {
|
||||
showSlaves(m, slaves);
|
||||
} else {
|
||||
@@ -213,6 +209,10 @@ void CommandSlaves::listSlaves(
|
||||
aliasIndex++;
|
||||
}
|
||||
|
||||
if (infoList.size() && doIndent) {
|
||||
cout << "Master" << dec << m.getIndex() << endl;
|
||||
}
|
||||
|
||||
for (iter = infoList.begin(); iter != infoList.end(); iter++) {
|
||||
cout << indent << setfill(' ') << right
|
||||
<< setw(maxPosWidth) << iter->pos << " "
|
||||
|
||||
Reference in New Issue
Block a user