466357f5c2
This revision of DAHDI-Tools is the base revision for the switch to git. git-svn-id: http://svn.astersk.org/svn/dahdi/tools/tools/trunk@9159
156 lines
3.6 KiB
Perl
Executable File
156 lines
3.6 KiB
Perl
Executable File
#! /usr/bin/perl -w
|
|
#
|
|
# Written by Oron Peled <oron@actcom.co.il>
|
|
# Copyright (C) 2009, Xorcom
|
|
# This program is free software; you can redistribute and/or
|
|
# modify it under the same terms as Perl itself.
|
|
#
|
|
# $Id$
|
|
#
|
|
use strict;
|
|
use File::Basename;
|
|
BEGIN {
|
|
my $dir = dirname($0); unshift(@INC, "$dir", "$dir/perl_modules");
|
|
$ENV{PATH} = "$dir:$ENV{PATH}";
|
|
}
|
|
|
|
use Dahdi::Config::Gen qw(is_true);
|
|
use Dahdi::Hardware;
|
|
use Dahdi::Xpp::Mpp;
|
|
use Dahdi::Xpp::Xbus;
|
|
|
|
my $xpporder_file = $ENV{XPPORDER_CONF} || "/etc/dahdi/xpp_order";
|
|
|
|
my @devices = Dahdi::Hardware->device_list;
|
|
my @xbuses = Dahdi::Xpp::xbuses;
|
|
|
|
my $format = "%-20s %-10s # %s\n";
|
|
|
|
sub bad_xpds($) {
|
|
my $xbus = shift || die;
|
|
my $bad_xpds = 0;
|
|
|
|
foreach my $xpd ($xbus->xpds) {
|
|
if(! $xpd->spanno) {
|
|
my $fqn = $xpd->fqn;
|
|
warn "\t$fqn -- Not registered with DAHDI\n";
|
|
$bad_xpds++;
|
|
}
|
|
}
|
|
return $bad_xpds;
|
|
}
|
|
|
|
sub twinstar_checks() {
|
|
my @twinstar_good;
|
|
my $first_port;
|
|
if(! -d "/sys/bus/astribanks") {
|
|
die "CANNOT generate TwinStar setup -- xpp drivers are not loaded\n";
|
|
}
|
|
foreach my $dev (@devices) {
|
|
my $hwname = $dev->hardware_name;
|
|
my $xbus;
|
|
my $loaded;
|
|
my $tws_port;
|
|
my $tws_power;
|
|
my $tws_watchdog;
|
|
my $mppinfo;
|
|
if(! $dev->is_astribank) {
|
|
warn "SKIP $hwname -- Only Astribanks can be used for TwinStar\n";
|
|
next;
|
|
}
|
|
Dahdi::Xpp::Mpp->mpp_addinfo($dev);
|
|
$mppinfo = $dev->mppinfo;
|
|
if(! defined $mppinfo) {
|
|
warn "SKIP $hwname -- is not TwinStar ready\n";
|
|
next;
|
|
}
|
|
if(! defined $mppinfo->{MPP_TALK}) {
|
|
warn "SKIP $hwname -- USB firmware is not loaded\n";
|
|
next;
|
|
}
|
|
if(! $mppinfo->{TWINSTAR_CAPABLE}) {
|
|
warn "SKIP $hwname -- is not TwinStar capable\n";
|
|
next;
|
|
}
|
|
$xbus = $dev->xbus;
|
|
if(! defined $xbus) {
|
|
warn "SKIP $hwname -- No XBUS for this device (FPGA firmware? Initialization?)\n";
|
|
next;
|
|
}
|
|
my $dev = $xbus->transport;
|
|
my $connector = $xbus->connector;
|
|
my $label = $xbus->label;
|
|
my $xbusstr = sprintf "%s (%s) [%s]", $xbus->name, $connector, $label;
|
|
if(bad_xpds($xbus)) {
|
|
warn "SKIP $xbusstr -- Not registered with DAHDI\n";
|
|
next;
|
|
}
|
|
my $port = $mppinfo->{TWINSTAR_PORT};
|
|
if(! defined $port) {
|
|
warn "SKIP $xbusstr -- Cannot read USB port info\n";
|
|
next;
|
|
}
|
|
my $power = $mppinfo->{TWINSTAR_POWER};
|
|
if(! defined $power) {
|
|
warn "SKIP $xbusstr -- Cannot read USB power info\n";
|
|
next;
|
|
}
|
|
if(!$power->[0] || !$power->[1]) {
|
|
warn "WARNING: Only one cable: $xbusstr\n";
|
|
}
|
|
$first_port = $port unless defined $first_port;
|
|
printf "GOOD: %-15s port=%d %s\n", $label, $port, $connector;
|
|
push(@twinstar_good, $xbus);
|
|
if($first_port != $port) {
|
|
die
|
|
"$0: ",
|
|
"XBUS($connector, $label) ",
|
|
"connected to PORT $port ",
|
|
"(others to $first_port)\n";
|
|
}
|
|
}
|
|
return @twinstar_good;
|
|
}
|
|
|
|
my @twinstar_good = twinstar_checks;
|
|
if(!@twinstar_good) {
|
|
print STDERR "Abort. No Twinstar capable Astribanks found\n";
|
|
exit 1;
|
|
}
|
|
print "Generating Configuration\n";
|
|
system("dahdi_genconf -v xpporder");
|
|
die "Failed: $?\n" if $?;
|
|
|
|
1;
|
|
|
|
__END__
|
|
|
|
=head1 NAME
|
|
|
|
twinstar_setup - Prepares a server for Astribank TwinStar operation.
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
This script prepares a server for Astribank TwinStar operation.
|
|
The stages are:
|
|
|
|
=over
|
|
|
|
=item Preliminary checks
|
|
|
|
Check that we have only TwinStar capable Astribanks, that the drivers are already loaded.
|
|
|
|
=item Configuration Generation
|
|
|
|
Indirectly generate the F</etc/dahdi/xpp_order> file that describes the current configuration.
|
|
This is done by running C<dahdi_genconf xpporder>
|
|
|
|
This configuration file is used by twinstar_hook(8) to know when all Astribanks has reconnected
|
|
to the backup server.
|
|
|
|
=item Deployment to Backup Server
|
|
|
|
Not implemented yet. Should be done manualy.
|
|
|
|
=back
|