diff options
Diffstat (limited to 'xpp/utils/zconf/Zaptel/Hardware.pm')
-rw-r--r-- | xpp/utils/zconf/Zaptel/Hardware.pm | 33 |
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; |