# HG changeset patch # User Florian Pose # Date 1245139490 0 # Node ID 758a9bd3e549352ebd1cdaa2ba25a41f1b6ca6bb # Parent 2558a35a65ef734efe8614673179415075702745 'ethercat xml' creates for more than one slave. diff -r 2558a35a65ef -r 758a9bd3e549 NEWS --- a/NEWS Tue Jun 16 07:42:29 2009 +0000 +++ b/NEWS Tue Jun 16 08:04:50 2009 +0000 @@ -40,6 +40,8 @@ an application transfer SDOs before activating the master. Thanks to Stefan Weiser. * Changed EC_MAX_SII_SIZE to 4096. +* 'ethercat xml' creates valid XML for more than one slave + (thanks to E. Burgstaller). Changes in 1.4.0: diff -r 2558a35a65ef -r 758a9bd3e549 tool/CommandXml.cpp --- a/tool/CommandXml.cpp Tue Jun 16 07:42:29 2009 +0000 +++ b/tool/CommandXml.cpp Tue Jun 16 08:04:50 2009 +0000 @@ -82,8 +82,17 @@ m.open(MasterDevice::Read); slaves = selectedSlaves(m); + cout << "" << endl; + if (slaves.size() > 1) { + cout << "" << endl; + } + for (si = slaves.begin(); si != slaves.end(); si++) { - generateSlaveXml(m, *si); + generateSlaveXml(m, *si, slaves.size() > 1 ? 1 : 0); + } + + if (slaves.size() > 1) { + cout << "" << endl; } } @@ -91,26 +100,30 @@ void CommandXml::generateSlaveXml( MasterDevice &m, - const ec_ioctl_slave_t &slave + const ec_ioctl_slave_t &slave, + unsigned int indent ) { ec_ioctl_slave_sync_t sync; ec_ioctl_slave_sync_pdo_t pdo; - string pdoType; + string pdoType, in; ec_ioctl_slave_sync_pdo_entry_t entry; unsigned int i, j, k; + + for (i = 0; i < indent; i++) { + in += " "; + } cout - << "" << endl - << " " << endl - << " " << endl - << " " << endl - << " " << slave.vendor_id << "" << endl - << " " << endl - << " " << endl - << " " << endl - << " " << endl - << " " << endl + << in << " " << endl + << in << " " << endl + << in << " " << slave.vendor_id << "" << endl + << in << " " << endl + << in << " " << endl + << in << " " << endl + << in << " " << endl + << in << " " << endl; } @@ -127,7 +140,7 @@ m.getSync(&sync, slave.position, i); cout - << " " << endl - << " #x" + << in << " #x" << hex << setfill('0') << setw(4) << pdo.index << "" << endl - << " " << pdo.name << "" << endl; + << in << " " << pdo.name << "" << endl; for (k = 0; k < pdo.entry_count; k++) { m.getPdoEntry(&entry, slave.position, i, j, k); cout - << " " << endl - << " #x" + << in << " " << endl + << in << " #x" << hex << setfill('0') << setw(4) << entry.index << "" << endl; if (entry.index) cout - << " " + << in << " " << dec << (unsigned int) entry.subindex << "" << endl; cout - << " " + << in << " " << dec << (unsigned int) entry.bit_length << "" << endl; if (entry.index) { cout - << " " << entry.name + << in << " " << entry.name << "" << endl - << " "; + << in << " "; if (entry.bit_length == 1) { cout << "BOOL"; @@ -192,18 +205,19 @@ cout << "" << endl; } - cout << " " << endl; + cout << in << " " << endl; } cout - << " " << endl; + << in << " " << endl; } } cout - << " " << endl - << " " << endl - << " " << endl - << "" << endl; -} + << in << " " << endl + << in << " " << endl + << in << " " << endl + << in << "" << endl; +} + /*****************************************************************************/ diff -r 2558a35a65ef -r 758a9bd3e549 tool/CommandXml.h --- a/tool/CommandXml.h Tue Jun 16 07:42:29 2009 +0000 +++ b/tool/CommandXml.h Tue Jun 16 08:04:50 2009 +0000 @@ -44,7 +44,8 @@ void execute(MasterDevice &, const StringVector &); protected: - void generateSlaveXml(MasterDevice &, const ec_ioctl_slave_t &); + void generateSlaveXml(MasterDevice &, const ec_ioctl_slave_t &, + unsigned int); }; /****************************************************************************/