summaryrefslogtreecommitdiff
path: root/xpp/utils/zconf/Zaptel/Xpp
diff options
context:
space:
mode:
Diffstat (limited to 'xpp/utils/zconf/Zaptel/Xpp')
-rw-r--r--xpp/utils/zconf/Zaptel/Xpp/Line.pm34
-rw-r--r--xpp/utils/zconf/Zaptel/Xpp/Xbus.pm3
-rw-r--r--xpp/utils/zconf/Zaptel/Xpp/Xpd.pm2
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