X-Git-Url: http://git.rot13.org/?p=x300-pci;a=blobdiff_plain;f=gpio.pl;h=d4d9e3a4ce7c901bf1679ddf490d850ae7c3d53a;hp=e1d8215501d51809e7a4cd6333651ca97b0a9eef;hb=HEAD;hpb=288f6ef51d20390dde5d1409781e8d2e640e5296 diff --git a/gpio.pl b/gpio.pl index e1d8215..d4d9e3a 100755 --- 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"; } }