summaryrefslogtreecommitdiff
path: root/xpp/perl_modules/Dahdi/Config/Gen.pm
blob: 556e193758a219ba109f3d96ffde23b486ff0ca6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package Dahdi::Config::Gen;
require Exporter;
@ISA = qw(Exporter);

@EXPORT_OK = qw(is_true);

use strict;

sub is_true($) {
	my $val = shift;
	return undef unless defined $val;
	return $val =~ /^(1|y|yes)$/i;
}

sub show_gconfig($) {
	my $gconfig = shift || die;

	print "Global configuration:\n";
	foreach my $key (sort keys %{$gconfig}) {
		printf "  %-20s %s\n", $key, $gconfig->{$key};
	}
}

sub bchan_range($) {
	my $span = shift || die;
	my $first_chan = ($span->chans())[0];
	my $first_num = $first_chan->num();
	my $range_start = $first_num;
	my @range;
	my $prev = undef;

	die unless $span->is_digital();
	foreach my $c (@{$span->bchan_list()}) {
		my $curr = $c + $first_num;
		if(!defined($prev)) {
			$prev = $curr;
		} elsif($curr != $prev + 1) {
			push(@range, sprintf("%d-%d", $range_start, $prev));
			$range_start = $curr;
		}
		$prev = $curr;
	}
	if($prev >= $first_num) {
		push(@range, sprintf("%d-%d", $range_start, $prev));
	}
	return join(',', @range);
}

1;