~ubuntu-branches/ubuntu/saucy/dahdi-tools/saucy

« back to all changes in this revision

Viewing changes to xpp/perl_modules/Dahdi/Config/Gen.pm

  • Committer: Bazaar Package Importer
  • Author(s): Jean-Michel Dault, Tzafrir Cohen
  • Date: 2010-02-16 13:44:09 UTC
  • mfrom: (1.1.2 upstream) (2.1.1 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100216134409-4y4k26mgzyra537o
Tags: 1:2.2.1-0ubuntu1
* Merge from Debian pkg-voip.
  * Changes from Debian:
  - debian/control: Change Maintainer
  - debian/control: Removed Uploaders field.
  - debian/control: Removed Debian Vcs-Svn entry and replaced with
      ubuntu-voip Vcs-Bzr, to reflect divergence in packages.
  - debian/control: Package dahdi Depends on  dahdi-dkms | dahdi-source

* From Debian pkg-voip:
[ Tzafrir Cohen ]
* New upstream release (Closes: #536257, #564381).
* Patch 'bashism' dropped: merged upstream. 
* Patch xpp_no_extra_at dropped: merged upstream. 
* Add an example genconf_parameters.
* Compat level 7.
* Bump standars version to 3.8.3.0 (no change needed)
* Udev rules are now in dahdi-linux.
* Patches perl_fix_noserial, perl_fix_transportdir: Fixes for some
  minor perl issues.
* Add the missing ${misc:Depends}, as per lintian. 
* Patch astribank_allow_ignoreend: an extra missing patch from upstream. 
* Patches init_unload_modules and init_unload_oslec: also unload OSLEC
  when unloading all modules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
# This program is free software; you can redistribute and/or
6
6
# modify it under the same terms as Perl itself.
7
7
#
8
 
# $Id: Gen.pm 6272 2009-03-29 18:53:02Z tzafrir $
 
8
# $Id: Gen.pm 7475 2009-11-04 17:52:29Z tzafrir $
9
9
#
10
10
 
11
11
=head1 NAME
55
55
        return $val =~ /^(1|y|yes)$/i;
56
56
}
57
57
 
58
 
# Generate channel range strings from span objects
 
58
sub range_string($$) {
 
59
        my ($start, $end) = @_;
 
60
 
 
61
        if($start == $end) {
 
62
                sprintf "%d", $start;
 
63
        } else {
 
64
                sprintf "%d-%d", $start, $end;
 
65
        }
 
66
}
 
67
 
 
68
# Generate channel range strings from arrays of chan numbers
59
69
# E.g: "63-77,79-93"
60
 
sub bchan_range($) {
61
 
        my $span = shift || die;
62
 
        my $first_chan = ($span->chans())[0];
63
 
        my $first_num = $first_chan->num();
 
70
sub channo_range(@) {
 
71
        my @channos = sort { $a <=> $b } @_;
 
72
        my $first_num = $channos[0];
64
73
        my $range_start = $first_num;
65
74
        my @range;
66
75
        my $prev = undef;
67
76
 
68
 
        die unless $span->is_digital();
69
 
        foreach my $c (@{$span->bchan_list()}) {
70
 
                my $curr = $c + $first_num;
 
77
        foreach my $c (@channos) {
 
78
                my $curr = $c;
71
79
                if(!defined($prev)) {
 
80
                        # First iteration
72
81
                        $prev = $curr;
73
82
                } elsif($curr != $prev + 1) {
74
 
                        push(@range, sprintf("%d-%d", $range_start, $prev));
 
83
                        # New range
 
84
                        push(@range, range_string($range_start, $prev));
75
85
                        $range_start = $curr;
76
86
                }
77
87
                $prev = $curr;
78
88
        }
79
89
        if($prev >= $first_num) {
80
 
                push(@range, sprintf("%d-%d", $range_start, $prev));
 
90
                # Last range
 
91
                push(@range, range_string($range_start, $prev));
81
92
        }
82
93
        return join(',', @range);
83
94
}
84
95
 
 
96
# Generate channel range strings from chan objects
 
97
# E.g: "63-77,79-93"
 
98
sub chan_range(@) {
 
99
        my @chans = sort { $a->num <=> $b->num } @_;
 
100
        my @channos = map { $_->num } @chans;
 
101
        channo_range(@channos);
 
102
}
 
103
 
 
104
# Generate channel range strings from digital span objects
 
105
# E.g: "63-77,79-93"
 
106
sub bchan_range($) {
 
107
        my $span = shift || die;
 
108
        die unless $span->is_digital();
 
109
        my $first_chan = ($span->chans())[0];
 
110
        my $first_num = $first_chan->num();
 
111
        my $bchan_ref = $span->bchan_list();
 
112
        my @channos = map { $_ + $first_num } @{$bchan_ref};
 
113
        channo_range(@channos);
 
114
}
 
115
 
 
116
# Returns a channel numbers array from a channel range string
 
117
sub parse_chan_range($) {
 
118
        my $rangestr = shift;
 
119
        $rangestr =~ s/\s*//g;  # Squeeze
 
120
        die "Bad characters in '$rangestr'" if $rangestr =~ /[^\d\s,-]/;
 
121
        my @ranges = split(/,/, $rangestr);
 
122
        my @channos;
 
123
        my $last_end;
 
124
 
 
125
        foreach my $range (@ranges) {
 
126
                my ($start, $end) = split(/-/, $range, 2);
 
127
                $end = $start unless defined $end;
 
128
                die "Bad characters in '$start'" if $start =~ /\D/;
 
129
                die "Bad characters in '$end'" if $end =~ /\D/;
 
130
                die "Reversed range $end < $start" if $end < $start;
 
131
                die "Channel number < 1" if $start < 1;
 
132
                die "New range begins below previous $start <= $last_end" if defined($last_end) && $last_end >= $start;
 
133
                for(my $i = $start + 0; $i <= $end; $i++) {
 
134
                        push(@channos, $i);
 
135
                }
 
136
                $last_end = $end;
 
137
        }
 
138
        return sort { $a <=> $b } @channos;
 
139
}
 
140
 
85
141
sub new($) {
86
142
        my $pack = shift || die "$0: Missing package argument";
87
143
        my $p = shift || die "$0: Missing parameters argument";
149
205
                bri_hardhdlc
150
206
                bri_sig_style
151
207
                r2_idle_bits
 
208
                tdm_framing
152
209
                echo_can
153
210
                brint_overlap
154
211
                pri_termtype
155
212
                pri_connection_type
 
213
                em_signalling
156
214
                );
157
215
        foreach my $k (@trivial) {
158
216
                $gconfig->{$k} = $p->item($k);