diff --git a/master/slave.c b/master/slave.c index 955b6d0c..5765a834 100644 --- a/master/slave.c +++ b/master/slave.c @@ -530,8 +530,10 @@ size_t ec_slave_info(const ec_slave_t *slave, /**< EtherCAT slave */ off += ec_state_string(slave->current_state, buffer + off); off += sprintf(buffer + off, "\nRing position: %i\n", slave->ring_position); - off += sprintf(buffer + off, "Advanced position: %i:%i\n\n", + off += sprintf(buffer + off, "Advanced position: %i:%i\n", slave->coupler_index, slave->coupler_subindex); + off += sprintf(buffer + off, "Coupler: %s\n\n", + ec_slave_is_coupler(slave) ? "yes" : "no"); off += sprintf(buffer + off, "Data link status:\n"); for (i = 0; i < 4; i++) { diff --git a/script/lsec.pl b/script/lsec.pl index 6f5e5ff0..143b8acf 100755 --- a/script/lsec.pl +++ b/script/lsec.pl @@ -37,20 +37,45 @@ # #------------------------------------------------------------------------------ +require 'sys/ioctl.ph'; + use strict; use Getopt::Std; my $master_index; my $master_dir; +my $term_width; #------------------------------------------------------------------------------ +$term_width = &get_terminal_width; &get_options; &query_master; exit 0; #------------------------------------------------------------------------------ +sub get_terminal_width +{ + my $winsize; + die "no TIOCGWINSZ " unless defined &TIOCGWINSZ; + open(TTY, "+{'state'} = $1; } + elsif ($line =~ /^Coupler: ([a-z]+)$/) { + $slave->{'coupler'} = $1; + } } close INFO; @@ -106,10 +134,11 @@ sub query_slaves print "EtherCAT bus listing for master $master_index:\n"; for $slave (@slaves) { - $abs = sprintf "%i", $slave->{'ring_position'}; - printf(" %3s %8s %-6s %s\n", - $abs, $slave->{'advanced_position'}, - $slave->{'state'}, $slave->{'name'}); + print_line if $slave->{'coupler'} eq "yes"; + $abs = sprintf "%i", $slave->{'ring_position'}; + printf(" %3s %8s %-6s %s\n", + $abs, $slave->{'advanced_position'}, + $slave->{'state'}, $slave->{'name'}); } }