diff options
author | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-08-02 12:21:11 +0000 |
---|---|---|
committer | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-08-02 12:21:11 +0000 |
commit | c88eaa22e13bd4c092b367a28e57064659660466 (patch) | |
tree | 2978dd7342b09b60bf9dbe5e333d043fb43d9114 /xpp/utils/zconf/Zaptel | |
parent | 183cf9c2af77e6444450cf5d2b5c62ca6b875fbe (diff) |
Merge xpp r4372:
* Update to zaptel-1.2.18 and zaptel-1.4.3 (r4308 onward)
* Fix a critical race with zaptel synchronization (r4362)
* Added a /proc/xpp/cmds for statistics about command timing (r4360)
* Fix a digit mapping bug with hardware dtmf detection (r4357)
* In xpp/utils/Makefile add perl syntax checks to our scripts (r4337)
* Better USB data error checking (r4336)
* udev rules (xpp.rules) avoid false calls from wrong nodes (r4331)
* Improve hardware detection and reporting in lszaptel,
zaptel_hardware. zapconf is basically functional.
* Leds are blinked synchronously on all Astribanks now (r4262)
* Fix a BRI bug if OPTIMIZE_CHANMUTE was compiled into zaptel (r4258)
(This feature was not yet accepted into official zaptel)
* Removed compile warning about HZ != 1000 (r4218)
* Firmware updates.
* fpga_load now supports USB pathes without zeros (r4211)
* XPD numbers have changed to '<Unit><Subunit>' (r4196)
* Proper support for ZT_VMWI ioctl, if used in zaptel (r4092)
* Fix FXO power denial detection (r4054)
* FXO could accidentally go off-hook with some compilers (r4048)
(From branches/1.2 r2732, r2735 - branches/1.4 2736)
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@2813 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/utils/zconf/Zaptel')
-rw-r--r-- | xpp/utils/zconf/Zaptel/Chans.pm | 15 | ||||
-rw-r--r-- | xpp/utils/zconf/Zaptel/Config/Defaults.pm | 29 | ||||
-rw-r--r-- | xpp/utils/zconf/Zaptel/Hardware.pm | 8 | ||||
-rw-r--r-- | xpp/utils/zconf/Zaptel/Hardware/PCI.pm | 1 | ||||
-rw-r--r-- | xpp/utils/zconf/Zaptel/Span.pm | 34 |
5 files changed, 84 insertions, 3 deletions
diff --git a/xpp/utils/zconf/Zaptel/Chans.pm b/xpp/utils/zconf/Zaptel/Chans.pm index eef922f..f50d212 100644 --- a/xpp/utils/zconf/Zaptel/Chans.pm +++ b/xpp/utils/zconf/Zaptel/Chans.pm @@ -39,6 +39,21 @@ sub new($$$$$$) { my $type; if($fqn =~ m|\bXPP_(\w+)/.*$|) { $type = $1; # One of our AB + } elsif ($fqn =~ m{\b(TE[24]|WCT1|Tor2|TorISA|WP[TE]1|cwain[12])/.*}) { + # TE[24]: Digium wct4xxp + # WCT1: Digium single span card drivers? + # Tor2: Tor PCI cards + # TorISA: ISA ones (still used?) + # WP[TE]1: Sangoma. TODO: this one tells us if it is TE or NT. + # cwain: Junghanns E1 card. + $type = "PRI"; + } elsif ($fqn =~ m{\b(ZTHFC%d*|ztqoz\d*)/.*}) { + # ZTHFC: HFC-s single-port card (zaphfc/vzaphfc) + # ztqoz: qozap (Junghanns) multi-port HFC card + $type = "BRI"; + } elsif ($fqn =~ m{\bztgsm/.*}) { + # Junghanns GSM card + $type = "GSM"; } elsif(defined $signalling) { $type = 'FXS' if $signalling =~ /^FXS/; $type = 'FXO' if $signalling =~ /^FXO/; diff --git a/xpp/utils/zconf/Zaptel/Config/Defaults.pm b/xpp/utils/zconf/Zaptel/Config/Defaults.pm new file mode 100644 index 0000000..90b49ab --- /dev/null +++ b/xpp/utils/zconf/Zaptel/Config/Defaults.pm @@ -0,0 +1,29 @@ +package Zaptel::Config::Defaults; +# +# Written by Oron Peled <oron@actcom.co.il> +# Copyright (C) 2007, Xorcom +# This program is free software; you can redistribute and/or +# modify it under the same terms as Perl itself. +# +# $Id$ +# +use strict; + +# Use the shell to source a file and expand a given list +# of variables. +sub do_source($@) { + my $file = shift; + my @vars = @_; + my @output = `env -i sh -ec '. $file; export @vars; env'`; + die "$0: Sourcing '$file' exited with $?" if $?; + my %vars; + + foreach my $line (@output) { + chomp $line; + my ($k, $v) = split(/=/, $line, 2); + $vars{$k} = $v if grep /^$k$/, @vars; + } + return %vars; +} + +1; diff --git a/xpp/utils/zconf/Zaptel/Hardware.pm b/xpp/utils/zconf/Zaptel/Hardware.pm index 321292a..39305fb 100644 --- a/xpp/utils/zconf/Zaptel/Hardware.pm +++ b/xpp/utils/zconf/Zaptel/Hardware.pm @@ -34,7 +34,11 @@ sub devices($) { return @zaptel_devices; } -Zaptel::Hardware::USB->scan_devices; -Zaptel::Hardware::PCI->scan_devices; +sub scan_hardware($) { + my $pack = shift || die; + + Zaptel::Hardware::USB->scan_devices; + Zaptel::Hardware::PCI->scan_devices; +} 1; diff --git a/xpp/utils/zconf/Zaptel/Hardware/PCI.pm b/xpp/utils/zconf/Zaptel/Hardware/PCI.pm index c6731dc..48fa810 100644 --- a/xpp/utils/zconf/Zaptel/Hardware/PCI.pm +++ b/xpp/utils/zconf/Zaptel/Hardware/PCI.pm @@ -11,6 +11,7 @@ use strict; use Zaptel::Hardware; my @idlist = qw( + 0B0B:0206 1397:16B8 1397:08B4 1057:5608 diff --git a/xpp/utils/zconf/Zaptel/Span.pm b/xpp/utils/zconf/Zaptel/Span.pm index 8496910..47a5a56 100644 --- a/xpp/utils/zconf/Zaptel/Span.pm +++ b/xpp/utils/zconf/Zaptel/Span.pm @@ -46,28 +46,51 @@ my @bri_strings = ( 'HFC-S PCI A ISDN.* \[(NT|TE)\] ' ); +my @pri_strings = ( + 'PRI_(NT|TE)' + ); + our $ZAPBRI_NET = 'bri_net'; our $ZAPBRI_CPE = 'bri_cpe'; +our $ZAPPRI_NET = 'pri_net'; +our $ZAPPRI_CPE = 'pri_cpe'; + sub new($$) { my $pack = shift or die "Wasn't called as a class method\n"; my $num = shift or die "Missing a span number parameter\n"; my $self = { NUM => $num }; bless $self, $pack; + $self->{TYPE} = "UNKNOWN"; open(F, "$proc_base/$num") or die "Failed to open '$proc_base/$num\n"; my $head = <F>; chomp $head; foreach my $cardtype (@bri_strings) { if($head =~ m/$cardtype/) { + $self->{IS_DIGITAL} = 1; $self->{IS_BRI} = 1; $self->{TERMTYPE} = $1; + $self->{TYPE} = "BRI_$1"; $self->{DCHAN_IDX} = 2; $self->{BCHAN_LIST} = [ 0, 1 ]; last; } } + foreach my $cardtype (@pri_strings) { + if($head =~ m/$cardtype/) { + $self->{IS_DIGITAL} = 1; + $self->{IS_PRI} = 1; + $self->{TERMTYPE} = $1; + $self->{TYPE} = "PRI_$1"; + { + $self->{DCHAN_IDX} = 15; # Depends on E1/T1/J1 + $self->{BCHAN_LIST} = [ 0 .. 14, 16 .. 30 ]; + } + last; + } + } die "$0: Unkown TERMTYPE [NT/TE]\n" - if $self->is_bri and !defined $self->{TERMTYPE}; + if $self->is_digital and !defined $self->{TERMTYPE}; ($self->{NAME}, $self->{DESCRIPTION}) = (split(/\s+/, $head, 4))[2, 3]; $self->{IS_ZAPTEL_SYNC_MASTER} = ($self->{DESCRIPTION} =~ /\(MASTER\)/) ? 1 : 0; @@ -99,6 +122,15 @@ sub new($$) { $self->{SIGNALLING} = 'gsm'; } } + if($self->is_pri()) { + $self->{DCHAN} = ($self->chans())[$self->{DCHAN_IDX}]; + $self->{BCHANS} = [ ($self->chans())[@{$self->{BCHAN_LIST}}] ]; + $self->{CODING} = 'hdb3'; + $self->{YELLOW} = undef; + $self->{FRAMING} = 'ccs'; + $self->{SIGNALLING} = ($self->{TERMTYPE} eq 'NT') ? $ZAPPRI_NET : $ZAPPRI_CPE ; + $self->{SWITCHTYPE} = 'euroisdn'; + } return $self; } |