diff options
Diffstat (limited to 'xpp/utils/zconf')
-rw-r--r-- | xpp/utils/zconf/Zaptel/Hardware/PCI.pm | 3 | ||||
-rw-r--r-- | xpp/utils/zconf/Zaptel/Span.pm | 65 |
2 files changed, 55 insertions, 13 deletions
diff --git a/xpp/utils/zconf/Zaptel/Hardware/PCI.pm b/xpp/utils/zconf/Zaptel/Hardware/PCI.pm index 45173d4..8ebddf0 100644 --- a/xpp/utils/zconf/Zaptel/Hardware/PCI.pm +++ b/xpp/utils/zconf/Zaptel/Hardware/PCI.pm @@ -41,6 +41,7 @@ my %pci_ids = ( 'd161:0800' => { DRIVER => 'wctdm24xxp', DESCRIPTION => 'Wildcard TDM800P' }, 'd161:8002' => { DRIVER => 'wctdm24xxp', DESCRIPTION => 'Wildcard AEX800' }, 'd161:8003' => { DRIVER => 'wctdm24xxp', DESCRIPTION => 'Wildcard AEX2400' }, + 'd161:8005' => { DRIVER => 'wctdm24xxp', DESCRIPTION => 'Wildcard TDM410P' }, # from pciradio 'e159:0001/e16b' => { DRIVER => 'pciradio', DESCRIPTION => 'PCIRADIO' }, @@ -79,6 +80,8 @@ my %pci_ids = ( # from wcte12xp 'd161:0120' => { DRIVER => 'wcte12xp', DESCRIPTION => 'Wildcard TE12xP' }, + 'd161:8000' => { DRIVER => 'wcte12xp', DESCRIPTION => 'Wildcard TE121' }, + 'd161:8001' => { DRIVER => 'wcte12xp', DESCRIPTION => 'Wildcard TE122' }, # from tor2 '10b5:9030' => { DRIVER => 'tor2', DESCRIPTION => 'PLX 9030' }, diff --git a/xpp/utils/zconf/Zaptel/Span.pm b/xpp/utils/zconf/Zaptel/Span.pm index 380dc7f..92dc4dd 100644 --- a/xpp/utils/zconf/Zaptel/Span.pm +++ b/xpp/utils/zconf/Zaptel/Span.pm @@ -36,7 +36,15 @@ my @bri_strings = ( ); my @pri_strings = ( - '(E1|T1|J1)_(NT|TE)' + '(E1|T1|J1)_(NT|TE)', + 'Tormenta 2 .*Quad (E1|T1)', # tor2. + 'Digium Wildcard .100P (T1|E1)/', # wct1xxp + 'ISA Tormenta Span 1', # torisa + 'TE110P T1/E1', # wcte11xp + 'Wildcard TE120P', # wcte12xp + 'Wildcard TE121', # wcte12xp + 'Wildcard TE122', # wcte12xp + 'T[24]XXP \(PCI\) Card ', # wct4xxp ); our $ZAPBRI_NET = 'bri_net'; @@ -45,6 +53,21 @@ our $ZAPBRI_CPE = 'bri_cpe'; our $ZAPPRI_NET = 'pri_net'; our $ZAPPRI_CPE = 'pri_cpe'; +sub init_proto($$) { + my $self = shift; + my $proto = shift; + + $self->{PROTO} = $proto; + if($proto eq 'E1') { + $self->{DCHAN_IDX} = 15; + $self->{BCHAN_LIST} = [ 0 .. 14, 16 .. 30 ]; + } elsif($proto eq 'T1') { + $self->{DCHAN_IDX} = 23; + $self->{BCHAN_LIST} = [ 0 .. 22 ]; + } + $self->{TYPE} = "${proto}_$self->{TERMTYPE}"; +} + 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"; @@ -76,20 +99,19 @@ sub new($$) { } foreach my $cardtype (@pri_strings) { if($head =~ m/$cardtype/) { + my @info; + + push(@info, $1) if defined $1; + push(@info, $2) if defined $2; + my ($proto) = grep(/(E1|T1|J1)/, @info); + $proto = 'UNKNOWN' unless defined $proto; + my ($termtype) = grep(/(NT|TE)/, @info); + $termtype = 'TE' unless defined $termtype; + $self->{IS_DIGITAL} = 1; $self->{IS_PRI} = 1; - $self->{PROTO} = "$1"; - $self->{TERMTYPE} = $2; - $self->{TYPE} = "$1_$2"; - if($self->{PROTO} eq 'E1') { - $self->{DCHAN_IDX} = 15; - $self->{BCHAN_LIST} = [ 0 .. 14, 16 .. 30 ]; - } elsif($self->{PROTO} eq 'T1') { - $self->{DCHAN_IDX} = 23; - $self->{BCHAN_LIST} = [ 0 .. 22 ]; - } else { - die "'$self->{PROTO}' unsupported yet"; - } + $self->{TERMTYPE} = $termtype; + $self->init_proto($proto); last; } } @@ -106,11 +128,28 @@ sub new($$) { s/^\s*//; s/\s*$//; next unless /\S/; + next unless /^\s*\d+/; # must be a real channel string. my $c = Zaptel::Chans->new($self, $index, $_); push(@channels, $c); $index++; } close F; + if($self->is_pri()) { + # Check for PRI with unknown type strings + if($index == 31) { + if($self->{PROTO} eq 'UNKNOWN') { + $self->init_proto('E1'); + } elsif($self->{PROTO} ne 'E1') { + die "$index channels in a $self->{PROTO} span"; + } + } elsif($index == 24) { + if($self->{PROTO} eq 'UNKNOWN') { + $self->init_proto('T1'); # FIXME: J1? + } elsif($self->{PROTO} ne 'T1') { + die "$index channels in a $self->{PROTO} span"; + } + } + } @channels = sort { $a->num <=> $b->num } @channels; $self->{CHANS} = \@channels; $self->{YELLOW} = undef; |