Common message for single slave selections.

This commit is contained in:
Florian Pose 2008-07-28 08:45:28 +00:00
parent 2d63291b35
commit 68fda22e00
7 changed files with 21 additions and 15 deletions

1
TODO
View File

@ -14,7 +14,6 @@ Version 1.4.0:
* Get original driver for r8169.
* Race in jiffies frame timeout?
* ethercat tool:
- Single message for unambiguous slave in SiiRead/Write and Up/Download.
- Implement Alias/Position selection for configs.
- Update help for --alias and --position.
- Show Pdos in 'ethercat slave -v'.

View File

@ -80,20 +80,32 @@ string Command::numericInfo()
/*****************************************************************************/
void Command::throwInvalidUsageException(const stringstream &s)
void Command::throwInvalidUsageException(const stringstream &s) const
{
throw InvalidUsageException(s);
}
/*****************************************************************************/
void Command::throwCommandException(const stringstream &s)
void Command::throwCommandException(const stringstream &s) const
{
throw CommandException(s);
}
/*****************************************************************************/
void Command::throwSingleSlaveRequired(unsigned int size) const
{
stringstream err;
err << "The slave selection matches " << size << "slaves. '"
<< name << "' requires a single slave.";
throwInvalidUsageException(err);
}
/*****************************************************************************/
Command::SlaveList Command::selectedSlaves(MasterDevice &m)
{
unsigned int numSlaves = m.slaveCount(), i, aliasIndex;

View File

@ -85,8 +85,9 @@ class Command
protected:
enum {BreakAfterBytes = 16};
void throwInvalidUsageException(const stringstream &);
void throwCommandException(const stringstream &);
void throwInvalidUsageException(const stringstream &) const;
void throwCommandException(const stringstream &) const;
void throwSingleSlaveRequired(unsigned int) const;
typedef list<ec_ioctl_slave_t> SlaveList;
SlaveList selectedSlaves(MasterDevice &);

View File

@ -93,8 +93,7 @@ void CommandDownload::execute(MasterDevice &m, const StringVector &args)
m.open(MasterDevice::ReadWrite);
slaves = selectedSlaves(m);
if (slaves.size() != 1) {
err << slaves.size() << " slaves selected, single slave required!";
throwInvalidUsageException(err);
throwSingleSlaveRequired(slaves.size());
}
data.slave_position = slaves.front().position;

View File

@ -62,9 +62,7 @@ void CommandSiiRead::execute(MasterDevice &m, const StringVector &args)
slaves = selectedSlaves(m);
if (slaves.size() != 1) {
err << "'" << getName() << "' requires a single slave ("
<< slaves.size() << " selected).";
throwInvalidUsageException(err);
throwSingleSlaveRequired(slaves.size());
}
slave = &slaves.front();
data.slave_position = slave->position;

View File

@ -63,9 +63,7 @@ void CommandSiiWrite::execute(MasterDevice &m, const StringVector &args)
slaves = selectedSlaves(m);
if (slaves.size() != 1) {
err << "'" << getName() << "' requires a single slave ("
<< slaves.size() << " selected).";
throwInvalidUsageException(err);
throwSingleSlaveRequired(slaves.size());
}
data.slave_position = slaves.front().position;

View File

@ -92,8 +92,7 @@ void CommandUpload::execute(MasterDevice &m, const StringVector &args)
m.open(MasterDevice::Read);
slaves = selectedSlaves(m);
if (slaves.size() != 1) {
err << slaves.size() << " slaves selected, single slave required!";
throwInvalidUsageException(err);
throwSingleSlaveRequired(slaves.size());
}
data.slave_position = slaves.front().position;