#!/usr/bin/perl

# off: Power off wire pairs by writing to proc file
# John Jacobsen, John Jacobsen IT Services, for LBNL/IceCube

package MY_PACKAGE;
use strict;
sub getint;
my $procdir = "/proc/driver/domhub";

sub printwarn { 
    print <<EOF;
WARNING: DOMs are not completely powered off; you must turn 
the power supply off before disconnecting or connecting cables
or touching exposed hardware.
EOF
;
}

my $card = shift;
if(!defined $card) { 
    $card = getint "Enter card number (0-7): ";
}

my $pair;

if($card ne "all") {
    $pair = shift;
    if(!defined $pair) {
	$pair = getint "Enter wire pair number (0-3): ";
    }
}

my @cards;
my @pairs;
if($card eq "all") {
    my $pf = "$procdir/pwrall";
    open PF, ">$pf" || die "Can't open $pf: $!\n";
    print PF "off";
    close PF;
    printwarn;
    exit;
} else {
    push @cards, $card;
    push @pairs, $pair;
}

foreach my $icard (@cards) {
    foreach my $ipair (@pairs) {
	my $pf = "$procdir/card".$icard."/pair".$ipair."/pwr";
	open PF, ">$pf";
	print PF "off";
	close PF;
    }
}

printwarn;
exit;

sub getint {
    my $s = shift; 
    while(1) {
	print $s;
	my $resp = <STDIN>;
	if($resp =~ /^(\d+)$/) {
	    return $1;
	}
    }
}


__END__

