mirror of
https://gitlab.com/etherlab.org/ethercat.git
synced 2026-09-27 20:44:00 +08:00
Coupler information in slave info file, lines in lsec.
This commit is contained in:
+3
-1
@@ -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 += ec_state_string(slave->current_state, buffer + off);
|
||||||
off += sprintf(buffer + off, "\nRing position: %i\n",
|
off += sprintf(buffer + off, "\nRing position: %i\n",
|
||||||
slave->ring_position);
|
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);
|
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");
|
off += sprintf(buffer + off, "Data link status:\n");
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
|
|||||||
+33
-4
@@ -37,20 +37,45 @@
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
require 'sys/ioctl.ph';
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Std;
|
use Getopt::Std;
|
||||||
|
|
||||||
my $master_index;
|
my $master_index;
|
||||||
my $master_dir;
|
my $master_dir;
|
||||||
|
my $term_width;
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
$term_width = &get_terminal_width;
|
||||||
&get_options;
|
&get_options;
|
||||||
&query_master;
|
&query_master;
|
||||||
exit 0;
|
exit 0;
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
sub get_terminal_width
|
||||||
|
{
|
||||||
|
my $winsize;
|
||||||
|
die "no TIOCGWINSZ " unless defined &TIOCGWINSZ;
|
||||||
|
open(TTY, "+</dev/tty") or die "No tty: $!";
|
||||||
|
unless (ioctl(TTY, &TIOCGWINSZ, $winsize='')) {
|
||||||
|
die sprintf "$0: ioctl TIOCGWINSZ (%08x: $!)\n", &TIOCGWINSZ;
|
||||||
|
}
|
||||||
|
(my $row, my $col, my $xpixel, my $ypixel) = unpack('S4', $winsize);
|
||||||
|
return $col;
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
sub print_line
|
||||||
|
{
|
||||||
|
for (my $i = 0; $i < $term_width; $i++) {print "-";}
|
||||||
|
print "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
sub query_master
|
sub query_master
|
||||||
{
|
{
|
||||||
$master_dir = "/sys/ethercat" . $master_index;
|
$master_dir = "/sys/ethercat" . $master_index;
|
||||||
@@ -94,6 +119,9 @@ sub query_slaves
|
|||||||
elsif ($line =~ /^State: (.+)$/) {
|
elsif ($line =~ /^State: (.+)$/) {
|
||||||
$slave->{'state'} = $1;
|
$slave->{'state'} = $1;
|
||||||
}
|
}
|
||||||
|
elsif ($line =~ /^Coupler: ([a-z]+)$/) {
|
||||||
|
$slave->{'coupler'} = $1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
close INFO;
|
close INFO;
|
||||||
@@ -106,10 +134,11 @@ sub query_slaves
|
|||||||
|
|
||||||
print "EtherCAT bus listing for master $master_index:\n";
|
print "EtherCAT bus listing for master $master_index:\n";
|
||||||
for $slave (@slaves) {
|
for $slave (@slaves) {
|
||||||
$abs = sprintf "%i", $slave->{'ring_position'};
|
print_line if $slave->{'coupler'} eq "yes";
|
||||||
printf(" %3s %8s %-6s %s\n",
|
$abs = sprintf "%i", $slave->{'ring_position'};
|
||||||
$abs, $slave->{'advanced_position'},
|
printf(" %3s %8s %-6s %s\n",
|
||||||
$slave->{'state'}, $slave->{'name'});
|
$abs, $slave->{'advanced_position'},
|
||||||
|
$slave->{'state'}, $slave->{'name'});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user