put all files in project directory
[x300-pci] / gpio.pl
diff --git a/gpio.pl b/gpio.pl
index e1d8215..d4d9e3a 100755 (executable)
--- a/gpio.pl
+++ b/gpio.pl
@@ -22,6 +22,11 @@ foreach my $pin_file ( glob 'pins/bcm-*.tsv' ) {
        warn "# $pin_file ",dump($bcm_desc);
 }
 
+sub add_bcm_desc {
+       my ( $pin, $desc ) = @_;
+       $bcm_desc->{$pin} = $desc;
+}
+
 sub pins {
 
 my @pcf = `gpio -x pcf8591:120:0x48 readall`;
@@ -39,13 +44,14 @@ foreach (@gpio) {
        s/([ \d]{2})(...GPIO.)../$1$2$1/;
        s/(GPIO.)..(...)(\s*\d+)/$1$3$2$3/;
 
-       my $line = substr($_,0,29) . substr($_,39);
-       $line .= shift @pcf || '';
+       my $line = substr($_,0,29) . '  ' . substr($_,39);
+       if ( my $add = shift @pcf ) {
+               $line .= '  ' . $add;
+       }
 
        chomp $line;
        my @l = split(/\|/, $line);
        my @o = split(/\|/, $last[$i] || '');
-       $last[$i] = $line;
 
        if ( $#l >= 9 ) {
                no warnings;
@@ -58,18 +64,29 @@ foreach (@gpio) {
                $mode->{ $l[11] } = [ $l[12], $l[13] ] if $l[13];
                #warn "## l = ",dump(@l) if $i > 2 && $i < 5;
        }
-       
+
+
+       $line = join('|', @l);
+       $line .= "|" unless $line =~ m/\+$/;
+
 
        if ( $last[$i] && $line ne $last[$i] ) {
+               $last[$i] = $line; # save before highlight
                foreach my $i ( 0 .. $#l ) {
                        $l[$i] = "\e[33;7;1m$l[$i]\e[0m" if $l[$i] ne $o[$i];
                }
+               $line = join('|', @l);
+               $line .= "|" unless $line =~ m/\+$/;
+       } else {
+               $last[$i] = $line;
        }
 
-       $line = join('|', @l) . "|";
-       print "$line\n";
 
        $i++;
+
+       # re-create from modified data
+       print "$line\n";
+
 }
 
 #warn "# mode = ", dump($mode);
@@ -96,6 +113,8 @@ sub cmd {
                warn "# pin $pin ", $v;
                $v ^= 1;
                system "gpio -g write $pin $v";
+       } elsif ( $cmd =~ m/^gpio\s+(.+)/ ) {
+               system "gpio -g $1";
        }
 }