diff -r 1c9151455b65 -r 5ddc3a455059 tool/CommandEoe.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool/CommandEoe.cpp Fri Jun 26 09:46:57 2009 +0000 @@ -0,0 +1,103 @@ +/***************************************************************************** + * + * $Id: CommandSlaves.cpp 1767 2009-05-08 13:35:06Z fp $ + * + * Copyright (C) 2006-2009 Florian Pose, Ingenieurgemeinschaft IgH + * + * This file is part of the IgH EtherCAT Master. + * + * The IgH EtherCAT Master is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version 2, as + * published by the Free Software Foundation. + * + * The IgH EtherCAT Master is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with the IgH EtherCAT Master; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * --- + * + * The license mentioned above concerns the source code only. Using the + * EtherCAT technology and brand is only permitted in compliance with the + * industrial property and similar rights of Beckhoff Automation GmbH. + * + ****************************************************************************/ + +#include +#include +#include +#include +using namespace std; + +#include "CommandEoe.h" + +/*****************************************************************************/ + +CommandEoe::CommandEoe(): + Command("eoe", "Display Ethernet over EtherCAT statictics.") +{ +} + +/*****************************************************************************/ + +string CommandEoe::helpString() const +{ + stringstream str; + + str << getName() << endl + << endl + << getBriefDescription() << endl + << endl + << "The TxRate and RxRate are displayed in Byte/s." << endl + << endl; + + return str.str(); +} + +/****************************************************************************/ + +void CommandEoe::execute(MasterDevice &m, const StringVector &args) +{ + ec_ioctl_master_t master; + unsigned int i; + ec_ioctl_eoe_handler_t eoe; + + if (args.size()) { + stringstream err; + err << "'" << getName() << "' takes no arguments!"; + throwInvalidUsageException(err); + } + + m.open(MasterDevice::Read); + m.getMaster(&master); + + cout << "Interface Slave State " + << "RxBytes RxRate " + << "TxBytes TxRate TxQueue" + << endl; + + for (i = 0; i < master.eoe_handler_count; i++) { + stringstream queue; + + m.getEoeHandler(&eoe, i); + + queue << eoe.tx_queued_frames << "/" << eoe.tx_queue_size; + + cout + << setw(9) << eoe.name << " " + << setw(5) << dec << eoe.slave_position << " " + << setw(5) << (eoe.open ? "up" : "down") << " " + << setw(7) << eoe.rx_bytes << " " + << setw(6) << eoe.rx_rate << " " + << setw(7) << eoe.tx_bytes << " " + << setw(6) << eoe.tx_rate << " " + << setw(7) << queue.str() + << endl; + } +} + +/*****************************************************************************/