diff options
Diffstat (limited to 'kernel/xpp/utils/zconf/Zaptel/Hardware.pm')
-rw-r--r-- | kernel/xpp/utils/zconf/Zaptel/Hardware.pm | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/kernel/xpp/utils/zconf/Zaptel/Hardware.pm b/kernel/xpp/utils/zconf/Zaptel/Hardware.pm index 5af22f7..ff7aeea 100644 --- a/kernel/xpp/utils/zconf/Zaptel/Hardware.pm +++ b/kernel/xpp/utils/zconf/Zaptel/Hardware.pm @@ -11,6 +11,88 @@ use strict; use Zaptel::Hardware::USB; use Zaptel::Hardware::PCI; +=head1 NAME + +Zaptel::Hardware - Perl interface to a Zaptel devices listing + + + use Zaptel::Hardware; + + my $hardware = Zaptel::Hardware->scan; + + # mini zaptel_hardware: + foreach my $device ($hardware->device_list) { + print "Vendor: device->{VENDOR}, Product: $device->{PRODUCT}\n" + } + + # let's see if there are devices without loaded drivers, and sugggest + # drivers to load: + my @to_load = (); + foreach my $device ($hardware->device_list) { + if (! $device->{LOADED} ) { + push @to_load, ($device->${DRIVER}); + } + } + if (@to_load) { + print "To support the extra devices you probably need to run:\n" + print " modprobe ". (join ' ', @to_load). "\n"; + } + + +This module provides information about available Zaptel devices on the +system. It identifies devices by (USB/PCI) bus IDs. + + +=head1 Device Attributes +As usual, object attributes can be used in either upp-case or +lower-case, or lower-case functions. + +=head2 bus_type + +'PCI' or 'USB'. + + +=head2 description + +A one-line description of the device. + + +=head2 driver + +Name of a Zaptel device driver that should handle this device. This is +based on a pre-made list. + + +=head2 vendor, product, subvendor, subproduct + +The PCI and USB vendor ID, product ID, sub-vendor ID and sub-product ID. +(The standard short lspci and lsusb listings show only vendor and +product IDs). + + +=head2 loaded + +If the device is handled by a module - the name of the module. Else - +undef. + + +=head2 priv_device_name + +A string that shows the "location" of that device on the bus. + + +=head2 is_astribank + +True if the device is a Xorcom Astribank (which may provide some extra +attributes). + +=head2 serial + +(Astribank-specific attrribute) - the serial number string of the +Astribank. + +=cut + sub device_detected($$) { my $dev = shift || die; my $name = shift || die; @@ -25,6 +107,15 @@ sub device_removed($) { die "Missing zaptel device hardware name" unless $name; } + +=head1 device_list() + +Returns a list of the hardware devices on the system. + +You must run scan() first for this function to run meaningful output. + +=cut + sub device_list($) { my $self = shift || die; my @types = @_; @@ -37,6 +128,15 @@ sub device_list($) { return @list; } + +=head1 drivers() + +Returns a list of drivers (currently sorted by name) that are used by +the devices in the current system (regardless to whether or not they are +loaded. + +=cut + sub drivers($) { my $self = shift || die; my @devs = $self->device_list; @@ -47,6 +147,14 @@ sub drivers($) { return sort keys %drivers; } + +=head1 scan() + +Scan the system for Zaptel devices (PCI and USB). Returns nothing but +must be run to initialize the module. + +=cut + sub scan($) { my $pack = shift || die; my $self = {}; |