#!/usr/bin/perl -w
#


BEGIN {
	push(@INC, "../CTPort/");
};

#use Telephony::CTPort;
use CTPort;
use POSIX;
use IO::Handle;

sub master_loop();
sub logger($);
sub procargs(@);
sub daemonize($);

my $port=1208;
my $testcount=0;
my $suscount=0;
my $daemon=0;
my $ctport;
my $event_source;
my $ringcount=0;

procargs(@ARGV);
my $logfile="log/$port-master.log";
open (LOGFILE,">>$logfile");
autoflush LOGFILE 1;
daemonize($daemon);

logger("STARTUP: Connecting to CTServer on port $port.");
$ctport = new Telephony::CTPort($port);

while(1){
	master_loop();
	logger("Master : Sleepies");
	sleep 4;
	logger("Master : Wakies");
}

exit;

sub master_loop(){
	my $foo=0;
	$testcount++;
	logger("Master : Starting test loop ($testcount)");

	while($foo<10){
		logger("Master : dialing [$foo]");
		$ctport->dial($foo);
		sleep 1;
		$foo++;
	}
	$ctport->clear();
}



sub logger($){
	my $foo = strftime("%Y/%m/%d-%H:%M:%S",localtime(time));
	#print STDERR "$foo [$port] $_[0]\n";
	print LOGFILE "$foo [$port] $_[0]\n";
}

sub procargs(@){
	while($bit = shift @ARGV){
		if ($bit =~ /-d/){
			$daemon=1;
		}
		elsif($bit =~ /-p/){
			$port = 1200 + shift @ARGV;
		}
	}
}

sub daemonize($){
	if ($_[0] == 1){
		# make a daemon
		defined(my $pid = fork) or die "Can't fork: $!";
		exit if $pid;
#		setsid or die "Can't start a new session: $!";
		chdir '/' or die "Can't chdir to /: $!";
		umask 0;
		open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
		open STDOUT, '/dev/null' or die "Can't write to /dev/null: $!";
	}
	return(1);
}

1;

