diff options
Diffstat (limited to 'xpp/utils/zconf/Zaptel/Xpp')
-rw-r--r-- | xpp/utils/zconf/Zaptel/Xpp/Line.pm | 34 | ||||
-rw-r--r-- | xpp/utils/zconf/Zaptel/Xpp/Xbus.pm | 3 | ||||
-rw-r--r-- | xpp/utils/zconf/Zaptel/Xpp/Xpd.pm | 2 |
3 files changed, 36 insertions, 3 deletions
diff --git a/xpp/utils/zconf/Zaptel/Xpp/Line.pm b/xpp/utils/zconf/Zaptel/Xpp/Line.pm index 0014aed..2472c3b 100644 --- a/xpp/utils/zconf/Zaptel/Xpp/Line.pm +++ b/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; diff --git a/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm b/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm index a5fcf1e..e840f14 100644 --- a/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm +++ b/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm @@ -41,7 +41,8 @@ sub get_xpd_by_number($$) { my $xpdid = shift; die "Missing XPD id parameter" unless defined $xpdid; my @xpds = $xbus->xpds; - return $xpds[$xpdid]; + my ($wanted) = grep { $_->id eq $xpdid } @xpds; + return $wanted; } sub new($$) { diff --git a/xpp/utils/zconf/Zaptel/Xpp/Xpd.pm b/xpp/utils/zconf/Zaptel/Xpp/Xpd.pm index 326aafd..1ddb5c8 100644 --- a/xpp/utils/zconf/Zaptel/Xpp/Xpd.pm +++ b/xpp/utils/zconf/Zaptel/Xpp/Xpd.pm @@ -28,7 +28,7 @@ sub blink($$) { close F; if(defined($on) and $on ne $result) { # Now change open(F, ">$file") or die "Failed to open $file for writing: $!"; - print F ($on)?"1":"0"; + print F ($on)?"0xFFFF":"0"; if(!close(F)) { if($! == 17) { # EEXISTS # good |