summaryrefslogtreecommitdiff
path: root/xpp/utils/zconf/Zaptel/Hardware.pm
diff options
context:
space:
mode:
Diffstat (limited to 'xpp/utils/zconf/Zaptel/Hardware.pm')
-rw-r--r--xpp/utils/zconf/Zaptel/Hardware.pm33
1 files changed, 19 insertions, 14 deletions
diff --git a/xpp/utils/zconf/Zaptel/Hardware.pm b/xpp/utils/zconf/Zaptel/Hardware.pm
index 8423c18..5af22f7 100644
--- a/xpp/utils/zconf/Zaptel/Hardware.pm
+++ b/xpp/utils/zconf/Zaptel/Hardware.pm
@@ -11,33 +11,35 @@ use strict;
use Zaptel::Hardware::USB;
use Zaptel::Hardware::PCI;
-my @zaptel_devices;
-
sub device_detected($$) {
my $dev = shift || die;
my $name = shift || die;
- warn "Device '$name' already known\n"
- if grep { $_->hardware_name eq $name } @zaptel_devices;
+ die unless defined $dev->{'BUS_TYPE'};
+ $dev->{IS_ASTRIBANK} = 0 unless defined $dev->{'IS_ASTRIBANK'};
$dev->{'HARDWARE_NAME'} = $name;
- push(@zaptel_devices, $dev);
}
sub device_removed($) {
my $dev = shift || die;
my $name = $dev->hardware_name;
die "Missing zaptel device hardware name" unless $name;
- @zaptel_devices = grep { $_->hardware_name ne $name } @zaptel_devices;
}
-sub devices($) {
- my $pack = shift || die;
+sub device_list($) {
+ my $self = shift || die;
+ my @types = @_;
+ my @list;
- return @zaptel_devices;
+ @types = qw(USB PCI) unless @types;
+ foreach my $t (@types) {
+ @list = ( @list, @{$self->{$t}} );
+ }
+ return @list;
}
sub drivers($) {
- my $pack = shift or die "Wasn't called as a class method\n";
- my @devs = $pack->devices();
+ my $self = shift || die;
+ my @devs = $self->device_list;
my @drvs = map { $_->{DRIVER} } @devs;
# Make unique
my %drivers;
@@ -45,11 +47,14 @@ sub drivers($) {
return sort keys %drivers;
}
-sub scan_hardware($) {
+sub scan($) {
my $pack = shift || die;
+ my $self = {};
+ bless $self, $pack;
- Zaptel::Hardware::USB->scan_devices;
- Zaptel::Hardware::PCI->scan_devices;
+ $self->{USB} = [ Zaptel::Hardware::USB->devices ];
+ $self->{PCI} = [ Zaptel::Hardware::PCI->scan_devices ];
+ return $self;
}
1;