[dahdi-commits] sruffell: tools/trunk r10214 - /tools/trunk/xpp/perl_modules/Dahdi/Span.pm

SVN commits to the DAHDI project dahdi-commits at lists.digium.com
Thu Sep 29 12:00:54 CDT 2011


Author: sruffell
Date: Thu Sep 29 12:00:51 2011
New Revision: 10214

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=10214
Log:
dahdi_genconf: Use 'dahdi_scan' to determine span_type for B410P cards.

The wcb4xxp driver does not put enough information in the proc filesystem to
determine if the ports are in TE or NT mode.  Previously the ports would
always just setup the dahdi-channels.conf file in TE mode. After this change
the dahdi_scan utility is used to detect if the ports are in TE or NT mode and
setup dahdi-channels.conf appropriately.

Internal-Issue-ID: DAHTOOL-54
Signed-off-by: Shaun Ruffell <sruffell at digium.com>

Modified:
    tools/trunk/xpp/perl_modules/Dahdi/Span.pm

Modified: tools/trunk/xpp/perl_modules/Dahdi/Span.pm
URL: http://svnview.digium.com/svn/dahdi/tools/trunk/xpp/perl_modules/Dahdi/Span.pm?view=diff&rev=10214&r1=10213&r2=10214
==============================================================================
--- tools/trunk/xpp/perl_modules/Dahdi/Span.pm (original)
+++ tools/trunk/xpp/perl_modules/Dahdi/Span.pm Thu Sep 29 12:00:51 2011
@@ -131,7 +131,7 @@
 		'(?:quad|octo)BRI PCI ISDN Card.* \[(NT|TE)\]',
 		'octoBRI \[(NT|TE)\] ',
 		'HFC-S PCI A ISDN.* \[(NT|TE)\] ',
-		'(B4XXP) \(PCI\) Card', # Does not expose NT/TE type
+		'(B4XXP) \(PCI\) Card', # Use dahdi_scan to determine TE/NT mode
 		'(WCBRI)', # has selectable NT/TE modes via dahdi_cfg
 		);
 
@@ -175,6 +175,28 @@
 		$self->{BCHAN_LIST} = [ 0 .. 22 ];
 	}
 	$self->{TYPE} = "${proto}_$self->{TERMTYPE}";
+}
+
+sub get_digital_spantype {
+	my $span_no = shift;
+	my @lines = split /\n/, `dahdi_scan`;
+	my $found_span = 0;
+	foreach my $line (@lines) {
+		if (! $found_span) {
+			if ($line =~ m/\[$span_no\]/) {
+				$found_span = 1;
+			}
+		} else {
+			if ($line !~ m/^\[/) {
+				if ($line =~ m/digital-(TE|NT)/ ){
+					return $1;
+				}
+			} else {
+				$found_span = 0;
+			}
+		}
+	}
+	die "Cannot determine digital spantype";
 }
 
 sub new($$) {
@@ -195,7 +217,12 @@
 	foreach my $cardtype (@bri_strings) {
 		if($head =~ m/$cardtype/) {
 			my $termtype = $1;
-			$termtype = 'TE' if ( $1 eq 'B4XXP' or $1 eq 'WCBRI' );
+			if ($1 eq 'B4XXP') {
+				$termtype = get_digital_spantype($num);
+			}
+			if ($1 eq 'WCBRI') {
+				$termtype = 'TE';
+			}
 			$self->{IS_DIGITAL} = 1;
 			$self->{IS_BRI} = 1;
 			$self->{TERMTYPE} = $termtype;




More information about the dahdi-commits mailing list