rewrite to enable usage as module
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 17 Jun 2016 14:53:05 +0000 (16:53 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 17 Jun 2016 14:53:05 +0000 (16:53 +0200)
gpio.pl

diff --git a/gpio.pl b/gpio.pl
index ed000c9..a701ce9 100755 (executable)
--- a/gpio.pl
+++ b/gpio.pl
@@ -2,16 +2,18 @@
 use warnings;
 use strict;
 
+package gpio;
+
 use Data::Dump qw(dump);
 
 my @last;
+my $mode;
 
-while(1) {
+sub pins {
 
 my @pcf = `gpio -x pcf8591:120:0x48 readall`;
 my @gpio = `gpio -g readall`;
 my $i = 0;
-my $mode;
 
 foreach (@gpio) {
        chomp;
@@ -52,6 +54,8 @@ foreach (@gpio) {
 
 #warn "# mode = ", dump($mode);
 
+} #/gpio
+
 sub pin2dir {
        my $pin = shift;
        my ($p) = grep { /$pin/ } keys %$mode;
@@ -60,20 +64,28 @@ warn dump($p);
        warn "# pin2dir $pin = $dir\n";
        return $dir;
 }
-       
 
-my $cmd = <STDIN>;
-chomp $cmd;
-if ( $cmd =~ m/^(\d+)$/ ) {
-       my $pin = $1;
-       system "gpio -g mode $pin out" unless pin2dir($pin) =~ m/OUT/i;
-
-       my $v = `gpio -g read $pin`;
-       warn "# pin $pin ", $v;
-       $v ^= 1;
-       system "gpio -g write $pin $v";
+sub cmd {
+       my $cmd = shift;
+       chomp $cmd;
+       if ( $cmd =~ m/^(\d+)$/ ) {
+               my $pin = $1;
+               system "gpio -g mode $pin out" unless pin2dir($pin) =~ m/OUT/i;
+
+               my $v = `gpio -g read $pin`;
+               warn "# pin $pin ", $v;
+               $v ^= 1;
+               system "gpio -g write $pin $v";
+       }
 }
 
+package main;
+
+return 1 if caller; # used as module
 
-} #/while
+while(1) {
+       gpio::pins();
+       my $cmd = <STDIN>;
+       gpio::cmd($cmd);
+}