From a714f06d8fc5a8b1f1e5f2c469c194f96985fb67 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Wed, 1 Jun 2005 04:36:31 +0000 Subject: [PATCH] What a load of BS --- perl/mobile-phone-monitor | 45 +++++++++++++++------------------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/perl/mobile-phone-monitor b/perl/mobile-phone-monitor index 535b4f6..5c7065f 100755 --- a/perl/mobile-phone-monitor +++ b/perl/mobile-phone-monitor @@ -1,8 +1,8 @@ #!/usr/bin/perl # $Id$ -# -*- perl -*- vim: ft=perl sw=4 sts=4 +# -*- perl -*- vim:set ft=perl sw=4 sts=4: -# Monitors a bluetooth mobile phome for calls. You'll need to bind rfcomm1 to +# Monitors a bluetooth mobile phone for calls. You'll need to bind rfcomm1 to # your mobile phone's SP service. You'll also need my Device::Nokia module # (the name is misleading, it's not Nokia specific). @@ -12,7 +12,7 @@ my $number; my %status; my $quiton; my $daemonize; - +my $last=0; my $gsm = new Device::Nokia( port => '/dev/rfcomm1', log => 'file,/dev/null'); $SIG{INT} = 'death'; @@ -36,10 +36,11 @@ while($_=shift) { daemonize() if $daemonize; +$|=1; while(1) { %status=("is_active"=>1); while($status{"is_active"} ne 0) { - for(my $i=0;$i<8;$i++) { + for(my $i=0;$i<3;$i++) { sleep 1; $number = wait_for_ring(); if($number) { @@ -50,18 +51,22 @@ while($status{"is_active"} ne 0) { } elsif(!defined($number)) { $status{"is_active"}=0; last; }; } my %newstatus=gather_data($gsm); - ring() if($newstatus{"call"}!=0 && $status{"call"}!=0); + print $newstatus{'call'}." ".$status{'call'}."\n"; + ring() if($newstatus{"call"}!=0 && $status{"call"}==0 && !$status{"number"}); foreach (keys %newstatus) { $status{$_} = $newstatus{$_} if(defined ($newstatus{$_})); } undef $status{"number"} if (!$number && $status{"callsetup"}==0 && $status{"call"}==0); output_status(%status); - death() if ($status{"source"}==0 && $status{"callsetup"}==0 && $status{"call"}==0 && $quiton); + if ($status{"source"}==0 && $status{"callsetup"}==0 && $status{"call"}==0 && $quiton) { + death() if(time-$last>600); + } elsif ($quiton) { + $last=time; + } } $gsm->disconnect(); -#print "Chillin'...\n"; output_status(is_active => 0); -do {sleep 60} +do {sleep (60-30*$quiton);} until(initialize($gsm)); } @@ -89,13 +94,13 @@ sub ring { sub gather_data { my %data; my $gsm=shift; - eval { - local $SIG{ALRM} = sub { die "alarm\n" }; - alarm 15; + eval { + local $SIG{ALRM} = sub { die "alarm\n" }; + alarm 15; %data=$gsm->indicators(); my ($first, $second) = $gsm->battery_strength(); $data{"source"}=$first; - $data{"battery"}=$second; + #$data{"battery"}=$second; ($first, $second) = $gsm->signal_quality(); $data{"signal"}=$first; alarm 0; @@ -119,22 +124,6 @@ sub output_status { rename "/tmp/.phone-status.new", "/tmp/.phone-status" || die $!; } - -sub daemonize { - chdir "/"; - my $pid=fork(); - if($pid) { - exit(0) - } - elsif(defined($pid)) - { - close STDIN; - close STDOUT; - close STDERR; - } - else { exit(1); } -} - sub death { $gsm->disconnect() if($gsm); unlink "/tmp/.phone-status.new", "/tmp/.phone-status"; -- 2.30.2