diff options
Diffstat (limited to 'kernel/xpp/utils/zconf/Zaptel/Xpp/Line.pm')
-rw-r--r-- | kernel/xpp/utils/zconf/Zaptel/Xpp/Line.pm | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/kernel/xpp/utils/zconf/Zaptel/Xpp/Line.pm b/kernel/xpp/utils/zconf/Zaptel/Xpp/Line.pm index 0014aed..2472c3b 100644 --- a/kernel/xpp/utils/zconf/Zaptel/Xpp/Line.pm +++ b/kernel/xpp/utils/zconf/Zaptel/Xpp/Line.pm @@ -18,12 +18,44 @@ sub new($$$) { my $index = shift; defined $index or die; my $self = {}; - bless $self, ref($xpd); + bless $self, $pack; $self->{XPD} = $xpd; $self->{INDEX} = $index; return $self; } +sub blink($$) { + my $self = shift; + my $on = shift; + my $xpd = $self->xpd; + my $result; + + my $file = "$proc_base/" . $xpd->fqn . "/blink"; + die "$file is missing" unless -f $file; + # First query + open(F, "$file") or die "Failed to open $file for reading: $!"; + $result = <F>; + chomp $result; + close F; + if(defined($on)) { # Now change + my $onbitmask = 1 << $self->index; + my $offbitmask = $result & ~$onbitmask; + + $result = $offbitmask; + $result |= $onbitmask if $on; + open(F, ">$file") or die "Failed to open $file for writing: $!"; + print F "$result"; + if(!close(F)) { + if($! == 17) { # EEXISTS + # good + } else { + undef $result; + } + } + } + return $result; +} + sub create_all($$) { my $pack = shift or die "Wasn't called as a class method\n"; my $xpd = shift || die; |