summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2011-10-21 22:12:49 +0000
committerShaun Ruffell <sruffell@digium.com>2011-10-21 22:12:49 +0000
commit3108d13355b9d7d2ccb191bf57d49bbb31ed4010 (patch)
treedf84a351d473ef1fc99a409ab015c10ea912eae3
parentd6809d60f504a7c93c995156a7861e8b0749df49 (diff)
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@digium.com> Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=10214 git-svn-id: http://svn.asterisk.org/svn/dahdi/tools/branches/2.5@10256 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--xpp/perl_modules/Dahdi/Span.pm31
1 files changed, 29 insertions, 2 deletions
diff --git a/xpp/perl_modules/Dahdi/Span.pm b/xpp/perl_modules/Dahdi/Span.pm
index beea6af..aeebfc1 100644
--- a/xpp/perl_modules/Dahdi/Span.pm
+++ b/xpp/perl_modules/Dahdi/Span.pm
@@ -131,7 +131,7 @@ my @bri_strings = (
'(?: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
);
@@ -177,6 +177,28 @@ sub init_proto($$) {
$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($$) {
my $pack = shift or die "Wasn't called as a class method\n";
my $proc_file = shift or die "Missing a proc file parameter\n";
@@ -195,7 +217,12 @@ sub new($$) {
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;