76 lines
1.5 KiB
Perl
Executable File
76 lines
1.5 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
use strict;
|
|
|
|
my $help = <<'EOF';
|
|
usage: motelist [options]
|
|
|
|
options:
|
|
-h display this help
|
|
-c compact format, not pretty but easier for parsing
|
|
EOF
|
|
|
|
my %Opt = (
|
|
compact => 0,
|
|
dev_prefix => [ "/dev/tty.usbserial-" ],
|
|
);
|
|
|
|
while (@ARGV) {
|
|
last unless $ARGV[0] =~ /^-/;
|
|
my $opt = shift @ARGV;
|
|
if( $opt eq "-h" ) { print "$help\n"; exit 0; }
|
|
elsif( $opt eq "-c" ) { $Opt{compact} = 1; }
|
|
else { print STDERR "$help\nerror, unknown command line option $opt\n"; exit 1; }
|
|
}
|
|
|
|
print_motelist( scan_dev() );
|
|
|
|
#
|
|
# Scan /dev for tty.usbserial-*
|
|
#
|
|
sub scan_dev {
|
|
my @devs;
|
|
foreach (`ls /dev/tty.usbserial-* 2>&1`) {
|
|
my($dev, $serial) = /(\/dev\/tty.usbserial-(\S+))/;
|
|
if ($serial ne "*:") {
|
|
my $d;
|
|
$d->{"InfoSerial"} = $serial;
|
|
$d->{"SerialDevName"} = $dev;
|
|
push(@devs, $d);
|
|
}
|
|
}
|
|
return @devs;
|
|
}
|
|
|
|
|
|
#
|
|
# Print motelist
|
|
#
|
|
sub print_motelist {
|
|
my @devs = @_;
|
|
|
|
# If none were found, quit
|
|
if( @devs == 0 ) {
|
|
print "No devices found.\n";
|
|
return;
|
|
}
|
|
|
|
# Print a header
|
|
if( !$Opt{compact} ) {
|
|
print << "EOF" unless $Opt{compact};
|
|
Reference Device Description
|
|
---------- --------------------------- ---------------------------------------
|
|
EOF
|
|
}
|
|
|
|
# Print the usb information
|
|
for my $dev (@devs) {
|
|
my $desc = "(none)";
|
|
my @output = ( $dev->{"InfoSerial"}, $dev->{"SerialDevName"}, $desc );
|
|
if( $Opt{compact} ) {
|
|
print join(",",@output) . "\n";
|
|
} else {
|
|
printf( "%-10s %-27s %s\n", @output );
|
|
}
|
|
}
|
|
}
|